Seite 1 von 1

ML_EFA bei nicht normalverteilten Daten

Verfasst: Do Apr 19, 2018 9:38 pm
von JRzumMaster
Hallo zusammen,

Ich rechne eine EFA, das funktioniert soweit ganz gut wenn ich eine PAF rechne. Das Problem ist, dass ich das ganze mit einer CFA kreuzvalidiere und deshalb auch eine ML-EFA rechnen sollte.
Meine Items sind nicht normalverteilt.
Ich habe es mit dem Argument n.iter versucht, bekomme dann aber Fehlermeldungen, ebenso wenn ich die Verletzung der NV ignoriere. Das versteh ich im Prinzip auch, denn mit beiden Methoden entsteht ein Heywood Case. :evil:

Irgendwelche Vorschläge wie ich das Problem umgehen kann?

hoffnungsvolle Grüße,
Julia

Re: ML_EFA bei nicht normalverteilten Daten

Verfasst: Fr Apr 20, 2018 8:56 am
von jogo
Hallo Julia,

willkommen im Forum. Hier gibt es auch eine kleine Diskussion zu dem Thema:
https://stats.stackexchange.com/questio ... ns-invalid
oder hier:
http://www.statistik-forum.de/search.ph ... 300c73cfa4

Gruß, Jörg
p.s.:
Normalverteilungsannahmen werden meistens nur für die Residuen eines Modells gefordert.
(für theoretische Aussagen über den Schätzer und dessen Standardfehler zwingend
- in der Praxis nur grob)

Re: ML_EFA bei nicht normalverteilten Daten

Verfasst: Fr Apr 20, 2018 11:53 am
von JRzumMaster
Also die Ladung >1 habe ich wegbekommen, jetzt nur noch die Frage nicht normalverteilten Daten.
Würde man einfach mit ML rechnen und schreiben dass die Schätzer aufgrund mangelnder NV eventuell verzerrt sind?

Re: ML_EFA bei nicht normalverteilten Daten

Verfasst: Fr Apr 20, 2018 4:04 pm
von jogo
Hallo Julia,

ich denke immer an den klassischen Beweis der BLUE-Eigenschaft für den OLS-Schätzer und bin mir nicht so sicher, dass einfach schon das Fehlen der Normalverteilung der Residuen zu einer Verzerrung führt.
Was ist, wenn die Residuen gleichverteilt sind zwischen -1 und +1 oder
eine symmetrische Dreiecksverteilung, so dass E(u_i)=0 für alle i (i sei der Index für die Beobachtungen)?

Ein kleines Experiment:

Code: Alles auswählen

bdach <- function() {
  b0 <- 2; b1 <- 0.5
  
  x <- seq(1,5, by=0.2)
  u <- runif(x, min=-0.2, max=0.2)
  y <- b0 + b1*x + u
  
  coef(lm(y ~ x))
}

B <- replicate(200, bdach()) ### 200-mal Regression
t.test(B["x",], mu=0.5)   ### t-Test gegen 0.5 (wahrer Wert des Parameters b1)
Gruß, Jörg