9.2 Der Mittelwertvergleich zwischen Gruppen

Das Beispiel der Technikakzeptanz zwischen zwei Gruppen aus dem vorhergehenden Abschnitt wird hier nun aufgegriffen.

Dabei wird das Modell wie bereits mehrfach gezeigt zunächst spezifiziert.

model.ta1 <- 'TA  =~ ta1 + ta2 + ta3 + ta4'

Im nächsten Schritt wird jedoch bei der Schätzung des Modells nicht nur die Gruppenvariable angegeben, so dass das Modell für jede Gruppe geschätzt wird (siehe Gruppierungsvariable ), sondern es wird auch angegeben, welche Identitätsrestriktionen (Weiber and Mühlhaus 2014, S. 292) festgelegt werden. Da, wie im vorigen Abschnitt geprüft, von metrischer sowie skalarer Messinvarianz ausgegangen werden kann, spricht nichts dagegen, zwischen den Gruppen entsprechende Identitätsrestriktionen festzulegen12.

Diese werden mit dem Befehl "group.equal =" festgesetzt. Hierbei werden a) für die Faktorladungen Identitätsrestriktionen festgelegt: "loading", als auch b) für die Achsenabschnitte: "intercepts".

So sieht der auszuführende Befehl aus:

fit.ta1.mwv <- cfa(model.ta1, 
           data = daten_latente_konstrukte, 
           group = "wissen_dichotom",
           group.equal = c("loadings", "intercepts"))

Diese Spezifizierung setzt nun eine Gruppe als Referenzgruppe fest, bei der die Mittelwerte der latenten Variablen auf den Wert 0 restringiert werden und schätzt die Mittelwerte der anderen Gruppe(n).

Der Ergebnisoutput sieht nun wie folgt aus, wenn wir uns die Modellgüte mit der Funktion summary() ausgeben lassen.

lavaan::summary(fit.ta1.mwv, fit.measures=TRUE, standardized = TRUE)
## 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
## 
## 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.974
##   Tucker-Lewis Index (TLI)                       0.968
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -2424.686
##   Loglikelihood unrestricted model (H1)      -2409.496
##                                                       
##   Akaike (AIC)                                4885.373
##   Bayesian (BIC)                              4959.538
##   Sample-size adjusted Bayesian (BIC)         4902.412
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.095
##   90 Percent confidence interval - lower         0.057
##   90 Percent confidence interval - upper         0.134
##   P-value RMSEA <= 0.05                          0.027
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.046
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## 
## Group 1 [1]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   TA =~                                                                 
##     ta1               1.000                               0.745    0.714
##     ta2     (.p2.)    1.204    0.074   16.333    0.000    0.897    0.852
##     ta3     (.p3.)    1.141    0.075   15.269    0.000    0.851    0.745
##     ta4     (.p4.)    1.001    0.075   13.433    0.000    0.746    0.655
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .ta1     (.10.)    3.674    0.058   63.544    0.000    3.674    3.520
##    .ta2     (.11.)    3.224    0.061   52.758    0.000    3.224    3.060
##    .ta3     (.12.)    2.547    0.063   40.347    0.000    2.547    2.232
##    .ta4     (.13.)    2.549    0.061   41.627    0.000    2.549    2.239
##     TA                0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .ta1               0.534    0.055    9.672    0.000    0.534    0.490
##    .ta2               0.305    0.047    6.424    0.000    0.305    0.275
##    .ta3               0.579    0.063    9.222    0.000    0.579    0.445
##    .ta4               0.739    0.072   10.309    0.000    0.739    0.570
##     TA                0.555    0.074    7.461    0.000    1.000    1.000
## 
## 
## Group 2 [0]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   TA =~                                                                 
##     ta1               1.000                               0.859    0.733
##     ta2     (.p2.)    1.204    0.074   16.333    0.000    1.034    0.893
##     ta3     (.p3.)    1.141    0.075   15.269    0.000    0.981    0.815
##     ta4     (.p4.)    1.001    0.075   13.433    0.000    0.860    0.709
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .ta1     (.10.)    3.674    0.058   63.544    0.000    3.674    3.136
##    .ta2     (.11.)    3.224    0.061   52.758    0.000    3.224    2.782
##    .ta3     (.12.)    2.547    0.063   40.347    0.000    2.547    2.117
##    .ta4     (.13.)    2.549    0.061   41.627    0.000    2.549    2.100
##     TA               -0.159    0.084   -1.878    0.060   -0.185   -0.185
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .ta1               0.634    0.079    8.011    0.000    0.634    0.462
##    .ta2               0.273    0.057    4.784    0.000    0.273    0.203
##    .ta3               0.485    0.070    6.920    0.000    0.485    0.335
##    .ta4               0.734    0.090    8.197    0.000    0.734    0.498
##     TA                0.738    0.113    6.543    0.000    1.000    1.000

Der Output offenbart viele interessante Einsichten in das Modell. Für den Mittelwertvergleich ist nun insbesondere die Zeile in den Interceps interessant, die mit dem Buchstaben TA beginnt. Die Gruppe 1 (die auf der Wissensvariablen die Ausprägung 1 hat) wurde als Referenzgruppe festgelegt. Hier ist der Mittelwert auf Null restringiert.

Für Gruppe 2 (mit dem Wert Null auf der Wissensvariable) ist der Wert M=-0.159 (SE=.084). Das heißt, der Mittelwert für Gruppe 2 fällt geringer aus. Allerdings ist der Unterschied unter Annahme zufälliger Stichprobenziehung nicht signifikant. Das lässt sich am ebenfalls ausgegebenen Z-Wert von -1.878 ablesen und dem in der Zeile rechts daneben ausgegebenen Signifikanzniveau von p=.060. Es wird mithin kein Mittelwertunterschied zwischen den Gruppen angenommen.

Schauen Sie sich den Output noch einmal ganz genau an und versuchen Sie zur Übung folgende Fragen zu beantworten:

  • Was fällt Ihnen auf, wenn Sie einmal für beide Gruppen die Werte der Latent Variable sowie der Loadings in der Spalte Estimate vergleichen.
    • Was bedeuten die Zahlen in den Klammern wie bspw. (.p1)?
    • Wie viele Gleichheitsrestriktionen gibt es? Wieso kommt das geschätzte Modell auf diese Zahl?
  • Wenn Sie einmal an das Beispiel zur Messinvarianz denken: Gab es nicht dort bereits einen Hinweis, zu den Mittelwertunterschieden? Schauen Sie doch noch einmal im entsprechenden Abschnitt nach und achten Sie dabei auf den p-Wert von 0.06.

9.2.1 Ergebnisse bei anderweitigen Skalierungsfestlegungen der latenten Variable

Es empfiehlt sich an dieser Stelle einmal die Ergebnisse des Gruppenvergleichs für die beiden anderen Verfahren der Skalierung der latenten Variable zu vergleichen, also für die Festlegung der Faktorvarianz und das ‘Effects Coding’ (Little, Slegers, and Card 2006), um zu prüfen wie robust die geschätzten Ergebnisse sind.

Festlegung der Faktorvarianz

Zunächst wird ein Modell geschätzt, bei dem die Varianz des latenten Faktors festgelegt wird (Varianz = 1 durch den Befehl std.lv = True).

fit.ta1.fv <- cfa(model.ta1, 
           data = daten_latente_konstrukte, 
           group = "wissen_dichotom",
           group.equal = c("loadings", "intercepts"),
           std.lv = TRUE)

lavaan::summary(fit.ta1.fv)
## lavaan 0.6-12 ended normally after 31 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        26
##   Number of equality constraints                     8
## 
##   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     (.p1.)    0.745    0.050   14.923    0.000
##     ta2     (.p2.)    0.897    0.051   17.704    0.000
##     ta3     (.p3.)    0.851    0.054   15.858    0.000
##     ta4     (.p4.)    0.746    0.054   13.905    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                1.000                           
## 
## 
## Group 2 [0]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   TA =~                                               
##     ta1     (.p1.)    0.745    0.050   14.923    0.000
##     ta2     (.p2.)    0.897    0.051   17.704    0.000
##     ta3     (.p3.)    0.851    0.054   15.858    0.000
##     ta4     (.p4.)    0.746    0.054   13.905    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.213    0.113   -1.877    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                1.329    0.209    6.374    0.000

Es zeigt sich, dass die Ergebnisse große Ähnlichkeit zum geschätzten Modell aufweisen, bei dem der Indikator ta1 als Referenzindikator festgelegt wurde. Auch hier ist der Mittelwertunterschied nicht signifikant.

Modellschätzung mit Effects Coding

Zudem wird eine Modell mit Effects Coding nach Little, Slegers, and Card (2006) geschätzt.

Allerdings werden an dieser Stelle vor der Schätzung des Modell ein Modell spezifiziert, in dem 1) noch zusätzlich Labels für die Mittelwerte des latenten Faktors für die beiden Gruppen zugewiesen werden, und 2) explizit eine Prüfung der Unterschiedlichkeit der beiden Parameterschätzungen für den Mittelwert des jeweiligen latenten Faktors in den beiden Gruppen angefordert.

Das ist insbesondere mit Blick auf eine Prüfung auf Mittelwertunterschiede in einem Modell mit ‘Effects Coding’ als Skalierung für die latenten Faktoren von Bedeutung, da die latenten Faktoren hier so wie die Skala der Indikatoren skaliert und sich Unterschiede nicht mehr so einfach ablesen lassen. Es wird hier, je nach Skalierung, nämlich nicht mehr der Wert der Referenzgruppe auf den Wert 0 gesetzt und mit dem im Default Model inhärenten Signifikanztest ein Unterschied zum Nullwert geprüft.

model.ta1 <- 'TA  =~ ta1 + ta2 + ta3 + ta4

#Labels für die MW vergeben
TA ~ c(mean_TA_group1, mean_TA_group2)*1

#Unterschied der Parameterwerte prüfen
diff_TA := mean_TA_group1 - mean_TA_group2'
fit.ta1.ec <- cfa(model.ta1, 
           data = daten_latente_konstrukte, 
           group = "wissen_dichotom",
           group.equal = c("loadings", "intercepts"),
           effect.coding = TRUE)

lavaan::summary(fit.ta1.ec)
## lavaan 0.6-12 ended normally after 46 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        28
##   Number of equality constraints                    12
##   Row rank of the constraints matrix                10
## 
##   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     (.p1.)    0.920    0.040   23.255    0.000
##     ta2     (.p2.)    1.108    0.037   30.260    0.000
##     ta3     (.p3.)    1.050    0.039   26.806    0.000
##     ta4     (.p4.)    0.921    0.043   21.491    0.000
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)
##     TA      (m_TA)    2.998    0.053   56.704    0.000
##    .ta1     (.11.)    0.915    0.120    7.615    0.000
##    .ta2     (.12.)   -0.099    0.110   -0.895    0.371
##    .ta3     (.13.)   -0.602    0.118   -5.084    0.000
##    .ta4     (.14.)   -0.214    0.130   -1.643    0.100
## 
## 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.656    0.066    9.882    0.000
## 
## 
## Group 2 [0]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   TA =~                                               
##     ta1     (.p1.)    0.920    0.040   23.255    0.000
##     ta2     (.p2.)    1.108    0.037   30.260    0.000
##     ta3     (.p3.)    1.050    0.039   26.806    0.000
##     ta4     (.p4.)    0.921    0.043   21.491    0.000
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)
##     TA      (m_TA)    2.826    0.075   37.586    0.000
##    .ta1     (.11.)    0.915    0.120    7.615    0.000
##    .ta2     (.12.)   -0.099    0.110   -0.895    0.371
##    .ta3     (.13.)   -0.602    0.118   -5.084    0.000
##    .ta4     (.14.)   -0.214    0.130   -1.643    0.100
## 
## 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.872    0.106    8.195    0.000
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|)
##     diff_TA           0.172    0.091    1.885    0.059

Auch hier indizieren die Ergebnisse des geschätzten Modells, dass es keine signifikanten Mittelwertunterschiede des latenten Faktors in den beiden Gruppen gibt.