für eine Hausarbeit bin ich dabei eine Mediation mithilfe von lavaan zu rechnen. Die Daten sind aus dem ALLBUS-Datensatz. Der ganze Datensatz war zu groß, daher habe ich nur den Teildatensatz mit den Variablen, die ich verwende, hochgeladen (educ.hs=schulabschluss(dichotomisiert), ls01.nm=Lebenszufriedenheit(numerisch gemacht), di01a.nm=Einkommen(numerisch gemacht), id02.nm=Schichtzugehörigkeit(numerisch gemacht). In meiner Arbeit ist "educ.hs" der Prädiktor, "ls01.nm" das Kriterium und "di01a.nm" der 1. Mediator. ["id02.nm" ist ein zweiter Mediator, mit der Variable funktioniert der ganze Prozess auch gut].
Leider taucht bei der Mediation mit "di01a.nm" folgende Fehlermeldung auf:
"Warning messages:
1: In lav_data_full(data = data, group = group, cluster = cluster, :
lavaan WARNING: some observed variances are (at least) a factor 1000 times larger than others; use varTable(fit) to investigate
2: In lav_data_full(data = data, group = group, cluster = cluster, :
lavaan WARNING: some observed variances are larger than 1000000
lavaan NOTE: use varTable(fit) to investigate
3: In lav_model_vcov(lavmodel = lavmodel2, lavsamplestats = lavsamplestats, :
lavaan WARNING:
Could not compute standard errors! The information matrix could
not be inverted. This may be a symptom that the model is not
identified."
Die ersten zwei Warnungen kommen daher, dass die Varianzen der Einkommens-Variable (di01a.nm) so hoch sind, das liegt aber eben an der Höhe der Einkommenszahlen. Ich habe die Warnungen so verstanden, dass ich nachschauen soll, ob nicht extreme Werte vorhanden sind, weil es Codes für NAs sein könnten (wie 9999 o.ä.), und dass ich diese zwei vernachlässigen kann?
Die 3. Warnung ist jedoch die, die ich gerne lösen würde, da die Standardfehler wie angekündigt nicht auftauchen. Kann mir eventuell jemand dabei helfen?
Falls ich noch etwas zum besseren Verständnis anbringen soll, bitte bescheid geben. Das ist mein erster Forumsbeitrag überhaupt und ich hoffe, die Codes werden überhaupt so angezeigt, wie sie sollen .
Vielen Dank schonmal!
Code: Alles auswählen
library(lavaan)
model.3 <- '#Regressionen
ls01.nm ~ c*educ.hs + b*di01a.nm
di01a.nm ~ a*educ.hs
#(Fehler-)Varianzen
di01a.nm ~~ di01a.nm
educ.hs ~~ educ.hs
ls01.nm ~~ ls01.nm
#Intercepts/Mittelwerte
di01a.nm ~1
educ.hs ~1
ls01.nm ~1
#indirect effect (a*b)
indirect:=a*b
#total effect
total:=c+(a*b)'
fit.3 <- sem(model=model.3, data=med, meanstructure=TRUE, missing="fiml", fixed.x=FALSE)
inspectSampleCov(model=model.3, data=med, fixed.x=FALSE)
inspect(fit.3, "free")
inspect(fit.3, "est")
summary(fit.3, fit.measures=TRUE, standardized=TRUE, rsquare=TRUE)
Die Daten:
Code: Alles auswählen
> str(med)
'data.frame': 3477 obs. of 9 variables:
$ educ : Factor w/ 7 levels "OHNE ABSCHLUSS",..: 3 5 1 3 5 5 5 5 5 5 ...
$ ls01 : Factor w/ 11 levels "GANZ UNZUFRIEDEN",..: 10 6 11 11 9 7 9 9 8 10 ...
$ di01a : Factor w/ 339 levels "25","50","60",..: 265 222 213 303 235 301 132 222 NA 158 ...
$ id02 : Factor w/ 5 levels "UNTERSCHICHT",..: 3 2 2 4 3 3 3 3 3 3 ...
$ educ.n : num 3 5 1 3 5 5 5 5 5 5 ...
$ educ.hs : num 0 1 0 0 1 1 1 1 1 1 ...
$ ls01.nm : num 10 6 11 11 9 7 9 9 8 10 ...
$ di01a.nm: num 2200 1500 1400 3600 1700 3450 854 1500 NA 978 ...
$ id02.nm : num 3 2 2 4 3 3 3 3 3 3 ...
Code: Alles auswählen
> head(med)
educ ls01 di01a id02 educ.n educ.hs ls01.nm di01a.nm id02.nm
1 MITTLERE REIFE .._duplicated_9 2200 MITTELSCHICHT 3 0 10 2200 3
2 HOCHSCHULREIFE .._duplicated_5 1500 ARBEITERSCHICHT 5 1 6 1500 2
3 OHNE ABSCHLUSS GANZ ZUFRIEDEN 1400 ARBEITERSCHICHT 1 0 11 1400 2
4 MITTLERE REIFE GANZ ZUFRIEDEN 3600 OBERE MITTELSCHICHT 3 0 11 3600 4
5 HOCHSCHULREIFE .._duplicated_8 1700 MITTELSCHICHT 5 1 9 1700 3
6 HOCHSCHULREIFE .._duplicated_6 3450 MITTELSCHICHT 5 1 7 3450 3