8.1 Beispiel: Messinvarianz der Dimension Technikakzeptanz
Bereits in den vorhergehenden Abschnitten haben wir uns ausführlich mit der Messung sowie der Modellierung der Technikakzeptanz vertraut gemacht.
Schauen wir uns erneut die Modellspezifikation an.
#Erneute Inspektion der vier Indikatorvariablen der latenten Variable der Technikakzeptanz
summary(daten_latente_konstrukte[,5:8])
## ta1 ta2 ta3 ta4
## Min. :1.0 Min. :1.0 Min. :1.0 Min. :1.0
## 1st Qu.:3.0 1st Qu.:2.0 1st Qu.:2.0 1st Qu.:2.0
## Median :4.0 Median :3.0 Median :2.0 Median :2.0
## Mean :3.6 Mean :3.1 Mean :2.5 Mean :2.5
## 3rd Qu.:4.0 3rd Qu.:4.0 3rd Qu.:3.0 3rd Qu.:3.0
## Max. :5.0 Max. :5.0 Max. :5.0 Max. :5.0
#Aufrufen des Package lavaan
library(lavaan)
#Zudem laden wir das Paket semTools, da es hier eine Funktion measurementInvariance zur einfachen Begutachtung dieser gibt
library(semTools)
#Erstes Model mit allen vier Variablen, dass wie zuvor spezifiziert und geschätzt wird
<- 'TA =~ ta1 + ta2 + ta3 + ta4'
model.ta1
<- cfa(model.ta1, data=daten_latente_konstrukte, meanstructure = TRUE)
fit.ta1
::summary(fit.ta1, fit.measures=TRUE, standardized = TRUE) lavaan
## lavaan 0.6-12 ended normally after 20 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 12
##
## Number of observations 455
##
## Model Test User Model:
##
## Test statistic 20.628
## Degrees of freedom 2
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 785.050
## Degrees of freedom 6
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.976
## Tucker-Lewis Index (TLI) 0.928
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -2429.394
## Loglikelihood unrestricted model (H1) -2419.080
##
## Akaike (AIC) 4882.789
## Bayesian (BIC) 4932.232
## Sample-size adjusted Bayesian (BIC) 4894.148
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.143
## 90 Percent confidence interval - lower 0.091
## 90 Percent confidence interval - upper 0.202
## P-value RMSEA <= 0.05 0.002
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.026
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## TA =~
## ta1 1.000 0.795 0.723
## ta2 1.205 0.074 16.331 0.000 0.958 0.872
## ta3 1.142 0.075 15.239 0.000 0.908 0.777
## ta4 1.003 0.074 13.470 0.000 0.798 0.681
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .ta1 3.607 0.052 69.936 0.000 3.607 3.279
## .ta2 3.149 0.052 61.112 0.000 3.149 2.865
## .ta3 2.477 0.055 45.206 0.000 2.477 2.119
## .ta4 2.488 0.055 45.328 0.000 2.488 2.125
## TA 0.000 0.000 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .ta1 0.578 0.047 12.395 0.000 0.578 0.478
## .ta2 0.290 0.039 7.438 0.000 0.290 0.240
## .ta3 0.542 0.048 11.201 0.000 0.542 0.397
## .ta4 0.734 0.057 12.993 0.000 0.734 0.536
## TA 0.632 0.075 8.393 0.000 1.000 1.000
Nun wollen wir einmal auf schauen, ob wir bei der Messung der Technikakzeptanz von Messinvarianz zwischen zwei Gruppen ausgehen können. Hierbei greifen wir auf die Aufteilung des Samples in zwei Gruppen anhand des Wissens über die EU und die entsprechenden Variable zurück (Auch hier erinnern sich sicher.).
Es gibt zunächst keine Vermutung, warum es mit Blick auf das Wissen über die EU Unterschiede bei der Messung der Technikakzeptanz zwischen Personen mit hohem Wissen über die EU und niedrigem Wissen geben sollte. Daher ist das Beispiel wunderbar geeignet, hier die Messinvarianz zu prüfen.
Getestet wird für die jeweiligen Stufen der Messinvarianz die Nullhypothese: “Es besteht (konfigurale/metrische/skalare) Messinvarianz zwischen den Gruppen.” Bei einem signifikanten Ergebnis, ist die Annahme der Messinvarianz abzulehnen.
8.1.1 Der schnelle Weg - Die Funktion ‘measurementInvariance’
Generell wird empfohlen die Schritte bei der Prüfung der Messinvarianz wie etwa in der lavaan-Dokumentation einzeln durchzuführen. Im Paket semTools gibt es jedoch eine Funktion, die diese Schritte abkürzt. Allerdings wird die Funktion in zukünftigen Paketen nicht mehr vorhanden sein. Auch daher, werden wir im nächsten Abschnitt noch einmal die einzelnen Schritte mit lavaan durchgehen.
Zunächst prüfen wir die Messinvarianz jedoch auf dem schnellen Wege.
Im nachfolgenden Code-Abschnitt wird auf die Funktion measurementInvariance()
zurückgegriffen, wobei das spezifizierte Modell, der Datensatz, die Schätzung der Means and Intercepts
sowie die Gruppierungsvariable bestimmt werden müssen.
#Test auf Messinvarianz
::measurementInvariance(model = model.ta1,
semToolsdata = daten_latente_konstrukte,
meanstructure = TRUE,
group = "wissen_dichotom")
##
## Measurement invariance models:
##
## Model 1 : fit.configural
## Model 2 : fit.loadings
## Model 3 : fit.intercepts
## Model 4 : fit.means
##
## Chi-Squared Difference Test
##
## Df AIC BIC Chisq Chisq diff Df diff Pr(>Chisq)
## fit.configural 4 4888 4987 20.8
## fit.loadings 7 4886 4972 24.7 3.88 3 0.27
## fit.intercepts 10 4885 4960 30.4 5.70 3 0.13
## fit.means 11 4887 4957 33.9 3.53 1 0.06 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Fit measures:
##
## cfi rmsea cfi.delta rmsea.delta
## fit.configural 0.98 0.136 NA NA
## fit.loadings 0.98 0.105 0.001 0.030
## fit.intercepts 0.97 0.095 0.004 0.011
## fit.means 0.97 0.096 0.003 0.001
Das Ergebnis zeigt, dass für keine Stufe der Messinvarianz signifikante Unterschiede bestehen. Das würde durch ein oder mehrere Sternchen im Output neben den Signifikanzwerten signalisiert.
Auch die unter Fit measures
aufgeführten Differenzen der inkrementellen Fitmaße des CFI und RMSEA sind als marginal zu bewerten.
8.1.2 Der lange, jedoch ausführliche Weg - Messinvarianz mit lavaan
Ein anderer (und nicht der einzige!) Weg, mit R auf Messinvarianz zu prüfen, wird nachfolgend dargelegt.
Konfigurale Messinvarianz
Zunächst wird hier auf konfigurale Invarianz geprüft, in dem das Modell. Die Auswertungscode sieht dabei ähnlich aus, wie bei der obigen Prüfung der Messinvarianz.
#Schätzung eines Modells ohne jegliche Gleichheitsrestriktionen, wobei zur Modellidentifikation die Mittelwerte in beiden Gruppen auf 0 festgesetzt werden.
<- cfa(model = model.ta1,
fit.configural data = daten_latente_konstrukte,
meanstructure = TRUE,
group = "wissen_dichotom")
::summary(fit.configural, fit.measures=TRUE) lavaan
## lavaan 0.6-12 ended normally after 30 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 24
##
## Number of observations per group:
## 1 280
## 0 175
##
## Model Test User Model:
##
## Test statistic 20.797
## Degrees of freedom 4
## P-value (Chi-square) 0.000
## Test statistic for each group:
## 1 12.643
## 0 8.155
##
## Model Test Baseline Model:
##
## Test statistic 781.099
## Degrees of freedom 12
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.978
## Tucker-Lewis Index (TLI) 0.934
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -2419.895
## Loglikelihood unrestricted model (H1) -2409.496
##
## Akaike (AIC) 4887.789
## Bayesian (BIC) 4986.676
## Sample-size adjusted Bayesian (BIC) 4910.508
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.136
## 90 Percent confidence interval - lower 0.082
## 90 Percent confidence interval - upper 0.196
## P-value RMSEA <= 0.05 0.006
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.026
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
##
## Group 1 [1]:
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## TA =~
## ta1 1.000
## ta2 1.290 0.113 11.394 0.000
## ta3 1.240 0.116 10.706 0.000
## ta4 1.164 0.116 9.995 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|)
## .ta1 3.729 0.061 61.586 0.000
## .ta2 3.207 0.063 50.840 0.000
## .ta3 2.543 0.068 37.243 0.000
## .ta4 2.529 0.070 36.235 0.000
## TA 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .ta1 0.545 0.055 9.870 0.000
## .ta2 0.314 0.051 6.160 0.000
## .ta3 0.566 0.064 8.817 0.000
## .ta4 0.711 0.073 9.786 0.000
## TA 0.481 0.080 6.045 0.000
##
##
## Group 2 [0]:
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## TA =~
## ta1 1.000
## ta2 1.133 0.097 11.738 0.000
## ta3 1.058 0.097 10.871 0.000
## ta4 0.860 0.097 8.876 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|)
## .ta1 3.411 0.091 37.579 0.000
## .ta2 3.057 0.088 34.868 0.000
## .ta3 2.371 0.091 26.098 0.000
## .ta4 2.423 0.089 27.329 0.000
## TA 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .ta1 0.598 0.079 7.596 0.000
## .ta2 0.260 0.060 4.335 0.000
## .ta3 0.499 0.072 6.894 0.000
## .ta4 0.751 0.090 8.366 0.000
## TA 0.845 0.148 5.721 0.000
#Anpassungsgüte Modell Gruppe 1
fitMeasures(fit.configural0, c("chisq", "df", "pvalue","cfi"))
## chisq df pvalue cfi
## 8.155 2.000 0.017 0.982
#Anpassungsgüte Modell Gruppe 2
fitMeasures(fit.configural1, c("chisq", "df", "pvalue","cfi"))
## chisq df pvalue cfi
## 12.643 2.000 0.002 0.975
Ein Vergleich der Anpassungsgüte des Modells, das jeweils für beide Gruppen geschätzt wurde, indiziert mit Blick auf den Wert für den CFI
eine hohe Anpassungsgüte, auch wenn der strenge Chi-Quadrat-Test signifikant ausfällt.
Metrische Invarianz
In einem nächsten Schritt prüfen wir die metrische Messinvarianz, also ob die Parameterschätzer der Messgewichte sich zwischen den Gruppen unterscheiden.
Hierfür wird das Modell wie zuvor geschätzt, allerdings die Gleichheitsrestriktionen der Messgewicht mit dem Befehl group.equal = c("loadings")
festgelegt.
#Gleichheitsrestriktionen für die Faktorladungen
<- cfa(model = model.ta1,
fit.metric data = daten_latente_konstrukte,
meanstructure = TRUE,
group = "wissen_dichotom",
group.equal = c("loadings"))
Der Blick auf die Modellzusammenfassung zeigt, dass die Messgewichte zwischen den beiden Gruppen gleichgesetzt wurden. Das erkennt man neben gleichen Werte bei den Estimates
auch an den gleichen Labels (p2, p3, p4), die im Modell zugewiesen wurden.
::summary(fit.metric) lavaan
## lavaan 0.6-12 ended normally after 25 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 24
## Number of equality constraints 3
##
## Number of observations per group:
## 1 280
## 0 175
##
## Model Test User Model:
##
## Test statistic 24.681
## Degrees of freedom 7
## P-value (Chi-square) 0.001
## Test statistic for each group:
## 1 14.421
## 0 10.260
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
##
## Group 1 [1]:
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## TA =~
## ta1 1.000
## ta2 (.p2.) 1.219 0.075 16.231 0.000
## ta3 (.p3.) 1.151 0.076 15.162 0.000
## ta4 (.p4.) 1.013 0.076 13.373 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|)
## .ta1 3.729 0.062 60.128 0.000
## .ta2 3.207 0.063 50.862 0.000
## .ta3 2.543 0.068 37.277 0.000
## .ta4 2.529 0.068 37.126 0.000
## TA 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .ta1 0.531 0.055 9.707 0.000
## .ta2 0.302 0.048 6.360 0.000
## .ta3 0.580 0.063 9.232 0.000
## .ta4 0.739 0.072 10.302 0.000
## TA 0.545 0.073 7.429 0.000
##
##
## Group 2 [0]:
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## TA =~
## ta1 1.000
## ta2 (.p2.) 1.219 0.075 16.231 0.000
## ta3 (.p3.) 1.151 0.076 15.162 0.000
## ta4 (.p4.) 1.013 0.076 13.373 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|)
## .ta1 3.411 0.088 38.874 0.000
## .ta2 3.057 0.088 34.850 0.000
## .ta3 2.371 0.091 26.069 0.000
## .ta4 2.423 0.092 26.362 0.000
## TA 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .ta1 0.623 0.078 8.020 0.000
## .ta2 0.269 0.057 4.724 0.000
## .ta3 0.488 0.070 6.947 0.000
## .ta4 0.734 0.090 8.197 0.000
## TA 0.725 0.111 6.526 0.000
Um nun die beiden Modelle gegenüberzustellen wird ein Chi-Quadrat-Differenztest mit der Funktion anova()
durchgeführt.
#Modellvergleich zwischen dem Modell
anova(fit.configural, fit.metric)
## Chi-Squared Difference Test
##
## Df AIC BIC Chisq Chisq diff Df diff Pr(>Chisq)
## fit.configural 4 4888 4987 20.8
## fit.metric 7 4886 4972 24.7 3.88 3 0.27
Es zeigt sich, dass das Modell mit den keine signifikant schlechtere Anpassungsgüte aufweist. Es kann mithin von Messinvarianz zwischen den Gruppen ausgegangen werden. Diese Werte können Sie auch einmal mit dem vorigen Abschnitt vergleichen.
Skalare Invarianz
Für die skalare Invarianz werden die Gleichheitsrestriktionen für die Achsenabschnitte (‘Intercepts’) der Indikatoren mit dem Befehl group.equal = c("intercepts")
festgelegt, wobei man einfach den vorigen Befehl zur Gleichheitsrestriktion bei der metrischen Invarianz ergänzt (siehe im nachfolgenden Codeabschnitt).
Nach der Durchführung finden sich für die Achsenabschnitte in beiden Gruppen die gleichen Labels (p10 - p13) und gleiche Werte.
<- cfa(model = model.ta1,
fit.scalar data = daten_latente_konstrukte,
meanstructure = TRUE,
group = "wissen_dichotom",
group.equal = c("loadings", "intercepts"))
::summary(fit.scalar) lavaan
## lavaan 0.6-12 ended normally after 35 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 25
## Number of equality constraints 7
##
## Number of observations per group:
## 1 280
## 0 175
##
## Model Test User Model:
##
## Test statistic 30.381
## Degrees of freedom 10
## P-value (Chi-square) 0.001
## Test statistic for each group:
## 1 16.766
## 0 13.615
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
##
## Group 1 [1]:
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## TA =~
## ta1 1.000
## ta2 (.p2.) 1.204 0.074 16.333 0.000
## ta3 (.p3.) 1.141 0.075 15.269 0.000
## ta4 (.p4.) 1.001 0.075 13.433 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|)
## .ta1 (.10.) 3.674 0.058 63.544 0.000
## .ta2 (.11.) 3.224 0.061 52.758 0.000
## .ta3 (.12.) 2.547 0.063 40.347 0.000
## .ta4 (.13.) 2.549 0.061 41.627 0.000
## TA 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .ta1 0.534 0.055 9.672 0.000
## .ta2 0.305 0.047 6.424 0.000
## .ta3 0.579 0.063 9.222 0.000
## .ta4 0.739 0.072 10.309 0.000
## TA 0.555 0.074 7.461 0.000
##
##
## Group 2 [0]:
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## TA =~
## ta1 1.000
## ta2 (.p2.) 1.204 0.074 16.333 0.000
## ta3 (.p3.) 1.141 0.075 15.269 0.000
## ta4 (.p4.) 1.001 0.075 13.433 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|)
## .ta1 (.10.) 3.674 0.058 63.544 0.000
## .ta2 (.11.) 3.224 0.061 52.758 0.000
## .ta3 (.12.) 2.547 0.063 40.347 0.000
## .ta4 (.13.) 2.549 0.061 41.627 0.000
## TA -0.159 0.084 -1.878 0.060
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .ta1 0.634 0.079 8.011 0.000
## .ta2 0.273 0.057 4.784 0.000
## .ta3 0.485 0.070 6.920 0.000
## .ta4 0.734 0.090 8.197 0.000
## TA 0.738 0.113 6.543 0.000
Ein erneuter Chi-Quadrat-Differenztest zeigt, ob das Modell mit den zusätzlichen Restriktionen (loadings
und intercepts
) im Vergleich mit dem Modell ohne diese Gleichheitsrestriktionen eine signifikant schlechtere Anpassungsgüte hat oder nicht.
anova(fit.configural, fit.metric, fit.scalar)
## Chi-Squared Difference Test
##
## Df AIC BIC Chisq Chisq diff Df diff Pr(>Chisq)
## fit.configural 4 4888 4987 20.8
## fit.metric 7 4886 4972 24.7 3.88 3 0.27
## fit.scalar 10 4885 4960 30.4 5.70 3 0.13
Das Ergebnis zeigt, dass dem nicht so ist, also mithin auch von skalarer Invarianz ausgegangen werden kann.
Messfehlerinvarianz
Als letztes besteht noch die Möglichkeit auf strikte faktorielle Invarianz zu prüfen (Weiber and Mühlhaus 2014, S. 301). Hier wird getested, ob eine Invarianz zwischen den Messfehlern in den Gruppen besteht.
<- cfa(model = model.ta1,
fit.residual data = daten_latente_konstrukte,
meanstructure = TRUE,
group = "wissen_dichotom",
group.equal = c("loadings", "intercepts", "residuals"))
::summary(fit.residual) lavaan
## lavaan 0.6-12 ended normally after 27 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 25
## Number of equality constraints 11
##
## Number of observations per group:
## 1 280
## 0 175
##
## Model Test User Model:
##
## Test statistic 32.857
## Degrees of freedom 14
## P-value (Chi-square) 0.003
## Test statistic for each group:
## 1 18.194
## 0 14.662
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
##
## Group 1 [1]:
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## TA =~
## ta1 1.000
## ta2 (.p2.) 1.199 0.073 16.431 0.000
## ta3 (.p3.) 1.136 0.074 15.309 0.000
## ta4 (.p4.) 0.997 0.074 13.490 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|)
## .ta1 (.10.) 3.668 0.058 62.837 0.000
## .ta2 (.11.) 3.224 0.061 52.830 0.000
## .ta3 (.12.) 2.547 0.063 40.448 0.000
## .ta4 (.13.) 2.550 0.061 41.586 0.000
## TA 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .ta1 (.p5.) 0.572 0.046 12.351 0.000
## .ta2 (.p6.) 0.292 0.039 7.522 0.000
## .ta3 (.p7.) 0.543 0.048 11.231 0.000
## .ta4 (.p8.) 0.737 0.057 13.019 0.000
## TA 0.563 0.075 7.458 0.000
##
##
## Group 2 [0]:
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## TA =~
## ta1 1.000
## ta2 (.p2.) 1.199 0.073 16.431 0.000
## ta3 (.p3.) 1.136 0.074 15.309 0.000
## ta4 (.p4.) 0.997 0.074 13.490 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|)
## .ta1 (.10.) 3.668 0.058 62.837 0.000
## .ta2 (.11.) 3.224 0.061 52.830 0.000
## .ta3 (.12.) 2.547 0.063 40.448 0.000
## .ta4 (.13.) 2.550 0.061 41.586 0.000
## TA -0.161 0.085 -1.896 0.058
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .ta1 (.p5.) 0.572 0.046 12.351 0.000
## .ta2 (.p6.) 0.292 0.039 7.522 0.000
## .ta3 (.p7.) 0.543 0.048 11.231 0.000
## .ta4 (.p8.) 0.737 0.057 13.019 0.000
## TA 0.742 0.112 6.621 0.000
Ein erneuter Chi-Quadrat-Differenztest zeigt, ob das Modell mit den zusätzlichen Restriktionen (loadings
, intercepts
sowie residuals
) im Vergleich mit dem Modell ohne diese Gleichheitsrestriktionen eine signifikant schlechtere Anpassungsgüte hat oder nicht.
anova(fit.configural, fit.metric, fit.scalar, fit.residual)
## Chi-Squared Difference Test
##
## Df AIC BIC Chisq Chisq diff Df diff Pr(>Chisq)
## fit.configural 4 4888 4987 20.8
## fit.metric 7 4886 4972 24.7 3.88 3 0.27
## fit.scalar 10 4885 4960 30.4 5.70 3 0.13
## fit.residual 14 4880 4938 32.9 2.48 4 0.65
Das Ergebnis indiziert, dass von Messfehlerinvarianz ausgegangen werden kann.
Invarianz der Mittelwerte der latenten Variablen
Man kann nun auch ein Modell schätzen lassen, in dem von Mittelwertgleichheit (Mittelwertinvarianz) zwischen den Gruppen ausgegangen wird. Dieser Test greift jedoch der eigentlich Prüfung der Mittelwerte im folgenden Abschnitt vorweg, weshalb hier lediglich Code und Ergebnisse berichtet werden, um nachfolgend einen direkten Vergleich der Ergebnisse zu haben.
<- cfa(model = model.ta1,
fit.means data = daten_latente_konstrukte,
meanstructure = TRUE,
group = "wissen_dichotom",
group.equal = c("loadings", "intercepts", "residuals", "means"))
::summary(fit.means) lavaan
## lavaan 0.6-12 ended normally after 26 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 24
## Number of equality constraints 11
##
## Number of observations per group:
## 1 280
## 0 175
##
## Model Test User Model:
##
## Test statistic 36.454
## Degrees of freedom 15
## P-value (Chi-square) 0.002
## Test statistic for each group:
## 1 19.376
## 0 17.078
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
##
## Group 1 [1]:
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## TA =~
## ta1 1.000
## ta2 (.p2.) 1.202 0.073 16.398 0.000
## ta3 (.p3.) 1.138 0.074 15.279 0.000
## ta4 (.p4.) 0.999 0.074 13.476 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|)
## .ta1 (.10.) 3.616 0.051 70.421 0.000
## .ta2 (.11.) 3.160 0.051 61.717 0.000
## .ta3 (.12.) 2.487 0.055 45.626 0.000
## .ta4 (.13.) 2.497 0.055 45.670 0.000
## TA 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .ta1 (.p5.) 0.575 0.046 12.375 0.000
## .ta2 (.p6.) 0.290 0.039 7.460 0.000
## .ta3 (.p7.) 0.543 0.048 11.231 0.000
## .ta4 (.p8.) 0.737 0.057 13.017 0.000
## TA 0.564 0.076 7.447 0.000
##
##
## Group 2 [0]:
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## TA =~
## ta1 1.000
## ta2 (.p2.) 1.202 0.073 16.398 0.000
## ta3 (.p3.) 1.138 0.074 15.279 0.000
## ta4 (.p4.) 0.999 0.074 13.476 0.000
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|)
## .ta1 (.10.) 3.616 0.051 70.421 0.000
## .ta2 (.11.) 3.160 0.051 61.717 0.000
## .ta3 (.12.) 2.487 0.055 45.626 0.000
## .ta4 (.13.) 2.497 0.055 45.670 0.000
## TA 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .ta1 (.p5.) 0.575 0.046 12.375 0.000
## .ta2 (.p6.) 0.290 0.039 7.460 0.000
## .ta3 (.p7.) 0.543 0.048 11.231 0.000
## .ta4 (.p8.) 0.737 0.057 13.017 0.000
## TA 0.750 0.113 6.618 0.000
anova(fit.configural, fit.metric, fit.scalar, fit.residual, fit.means)
## Chi-Squared Difference Test
##
## Df AIC BIC Chisq Chisq diff Df diff Pr(>Chisq)
## fit.configural 4 4888 4987 20.8
## fit.metric 7 4886 4972 24.7 3.88 3 0.274
## fit.scalar 10 4885 4960 30.4 5.70 3 0.127
## fit.residual 14 4880 4938 32.9 2.48 4 0.649
## fit.means 15 4881 4935 36.5 3.60 1 0.058 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1