Pytanie:
Nie można oszacować błędu standardowego po zwolnieniu pierwszego wskaźnika w modelu SEM - dlaczego tak jest?
ballooninging
2015-02-22 14:59:36 UTC
view on stackexchange narkive permalink

Jestem nowy w publikowaniu postów SEM + na tym forum; daj mi znać, jeśli w jakikolwiek sposób nie mam jasności, a postaram się to wyjaśnić.

Informacje ogólne

Pracuję na przypisaniu SEM w celu oszacowania dopasowania modelu, z 6 wskaźnikami ładującymi się do zmiennej latentnej. Używam następujących pakietów do przydziału:

require (lavaan)

require (semPlot)

Mój zbiór danych jest ładowany do ramki danych o nazwie my.df

Model, który określam, wygląda następująco - ten model automatycznie naprawia pierwsze ładowanie czynnikowe GeneralMotivation to x1 do wartości 1.0:

  my.model1 <- 'GeneralMotivation = ~ x1 + x2 + x3 + x4 + x5 + x6 ' 

Wiem, że nie ma takiej potrzeby, ale w celu lepszego zrozumienia działania SEM określiłem również następujący model, zwalniając pierwszy wskaźnik.

  problematicmy.model1 <- 'GeneralMotivation = ~ NA * x1 + x2 + x3 + x4 + x5 + x6'  

Problem

Następnie uruchomiłem sem na dwóch modelach, jak pokazano poniżej:

  my.fit1 <- sem (my.model1, data = my .df) problematicmy.fit1 <- sem (problematicmy.model1, data = my.df)  

Wh pl Określam model używając domyślnych parametrów w lavaan w my.model1 , gdzie pierwszy wskaźnik modelu jest ustawiony na 1.0, nie było żadnych problemów. Problem pojawia się w problematicmy.model1 , gdzie widzę następujący błąd:

  Komunikat ostrzegawczy: In lav_model_vcov (lavmodel = lavmodel, lavsamplestats = lavsamplestats,: lavaan OSTRZEŻENIE: nie można obliczyć standardowych błędów! lavaan UWAGA: może to oznaczać, że model nie został zidentyfikowany.  

Dołączyłem również dane wyjściowe dla modelu naruszającego:

  lavaan (0,5-17) zbiegał się normalnie po 14 iteracjach Liczba obserwacji 400
Estymator ML Minimalna statystyka testu funkcji 112.214 Stopnie swobody 8 Wartość p (Chi-kwadrat) 0,000 Modelowy model wyjściowy: Minimalna statystyka testu funkcji 360.443 Stopnie swobody 15 Wartość p 0,000 Model użytkownika w porównaniu z modelem bazowym: Porównawczy wskaźnik dopasowania (CFI) 0,698 Indeks Tuckera-Lewisa (TLI) 0,434 Loglikelihood and Information Criteria: Loglikelihood model użytkownika (H0) -3181,787 Loglikelihood nieograniczony model (H1) -3125,680 Liczba wolnych parametrów 13 Akaike (AIC) 6389,574 Bayesian (BIC) 6441,463 Bayesian skorygowany o wielkość próby (BIC) 6400,213 Podstawowy średni kwadratowy błąd przybliżenia: RMSEA 0,180 90-procentowy przedział ufności 0,152 0,211 Wartość p RMSEA < = 0,05 0,000 Standaryzowana średnia pierwiastkowa reszta kwadratowa: SRMR 0,111 Szacunki parametrów: Informacje Oczekiwane błędy standardowe Oszacowanie standardowe Std.err Wartość Z P (> | z |) Std.lv Std.all zmienne: Ogólne Motywacja = ~ x1 0,826 0,765 0,672 x2 0,571 0,528 0,534 x3 0,829 0,767 0,694 x4 0,191 0,176 0,215 x5 0,301 0,278 0,308 x6 0,295 0,273 0,322 Odchylenia: x1 0,709 0,709 0,548
x2 0,701 0,701 0,715 x3 0,632 0,632 0,518 x4 0,640 0,640 0,954 x5 0,740 0,740 0,905 x6 0,643 0,643 0,896 GeneralMotvtn 0,856 1.000 1.000  

Załączam również poniższy model graficzny dla problemu . myfit1 :

Offending model

Kroki podjęte w celu zrozumienia błędu

Najpierw pomyślałem „dobrze, może model jest niedostatecznie zidentyfikowany ”i obliczył posiadane informacje + liczbę parametrów do oszacowania.

Popraw mnie, jeśli się mylę: Powinno być 21 sztuk informacji (6 zmiennych, więc [(6) (7)] / 2 = 21).

Jednak Nie mogę, dla p <.05 miłość do wszystkich statystyk, silny> rozumiem dlaczego model jest niedostatecznie zidentyfikowany, jeśli po prostu uwalniam pierwszy wskaźnik x1 . Z tego, co rozumiem, szacuję tylko 13 parametrów (6 reszt dla obserwowanych zmiennych x1 do x6 , 6 ładowań czynnikowych i wariancja ukryta zmienna GeneralMotivation ). Czy w tym przypadku nie powinienem nadmiernie zidentyfikować mojego modelu?

Domyślam się, że

  1. Chociaż model graficzny tego nie mówi, w rzeczywistości szacuję kowariancje między resztą wskaźników (tj. x1 ~~ x2 , x1 ~~ x6 itp.). Jeśli x1 jest ustalony na 1,0, w rzeczywistości próbuję oszacować 21 parametrów (5 reszt od x2 do x6 , 10 pozostałych kowariancji z x2 do x6 , 5 pozostałych odchyleń od x2 do x6 , ładowanie 5-czynnikowe z GeneralMotivation do x2 - x6 i jedną odmianę GeneralMotivation ), dzięki czemu model został właśnie zidentyfikowany (df = 0). Zwalniając x1 , muszę oszacować dodatkowe 7 parametrów (reszta z x1 , pozostałe kowariancje x1 ~~ x2 do x1 ~~ x6 i ładowanie czynnika z GeneralMotivation do x1 ), co powoduje niedostatecznie zidentyfikowany model
  2. Problem nie jest niedostatecznie zidentyfikowany , ale coś zupełnie innego
  3. SEM i RStudio mnie nienawidzi - mało prawdopodobne, ale nie wykluczam tego.

Zamknięcie

Czy ktoś może mi pomóc zrozumieć, dlaczego pojawia się błąd z lavaan ? Daj mi znać, jeśli potrzebujesz ode mnie więcej informacji.

Dziękuję!

Podobny problem został przeanalizowany w tym poście https://stats.stackexchange.com/a/174287/168169
Dwa odpowiedzi:
jsakaluk
2015-03-27 10:35:43 UTC
view on stackexchange narkive permalink

Jak zauważa Maarten, Twoim problemem jest to, że nie ustawiłeś skali drugiego modelu. To prawda, że ​​masz więcej obserwowanych wariancji / kowariancji niż to, czego potrzebujesz, aby zidentyfikować model, ale nadal musisz podać punkt odniesienia, na podstawie którego można obliczyć inne parametry modelu (Brown, 2015).

Skalę można ustawić za pomocą jednej z trzech metod:

  1. Zmienna znacznika: ładowanie jednego czynnika na zmienną latentną jest ustalone na 1
  2. Stały współczynnik : wariancja każdej ukrytej zmiennej jest ustalona na 1
  3. Kodowanie efektów: ładunki czynnikowe dla każdej ukrytej zmiennej są ograniczone do średniej 1

Kod dla każdego podejścia (przy użyciu lavaan zestaw danych HolzingerSwineford1939 ) jest przedstawiony poniżej. Utajona zmienna, którą stworzyłem, jest bezsensowna / słabo dopasowana, ale ma taką samą liczbę wskaźników jak twój model, więc mam nadzieję, że przykład będzie łatwiejszy do przeniesienia do twojej sytuacji.

  biblioteka ( lavaan) # zmienna-znacznikowa; ładowanie pierwszego czynnika ustalone na 1 domyślniemarker.variable<-'f1 = ~ x1 + x2 + x3 + x4 + x5 + x6's summary (output.marker<-cfa (marker.variable, data = HolzingerSwineford1939), fit.measures = TRUE) # metoda stałego czynnika; ręcznie wolne ładowanie pierwszego czynnika / naprawianie ukrytej wariancji do 1fixed.factor<-'f1 = ~ NA * x1 + x2 + x3 + x4 + x5 + x6 f1 ~~ 1 * f1's summary (output.fixed<-cfa (fixed.factor, data = HolzingerSwineford1939), fit.measures = TRUE) #efects kodowanie; ręcznie zwolnij pierwsze ładowanie / ogranicz ładunki do średnich 1 efektów. kodowanie <-'f1 = ~ NA * x1 + a * x1 + b * x2 + c * x3 + d * x4 + e * x5 + f * x6 a + b + c + d + e + f == 6'summary (output.effects<-cfa (effects.coding, data = HolzingerSwineford1939), fit.measures = TRUE)  

Zauważ, że dopasowanie modelu jest identyczne, niezależnie od używanej metody ustawiania skali; pasowanie we wszystkich trzech modelach to $ \ chi ^ 2 (df = 9) = 103,23, ~ p < .001 $.

Wybór metody zależy w dużej mierze od charakteru danych i celów badawczych. Metoda zmiennych znacznikowych jest wysoce arbitralną metodą ustawiania skali. Jak powiedział Maarten, twoje ukryte zmienne przyjmą jednostki odpowiadających im zmiennych znaczników, więc to podejście jest pouczające tylko w takim zakresie, w jakim twoje zmienne znaczników są szczególnie znaczące lub być może reprezentują jakiś "złoty standard" wskaźnika twojej ukrytej konstrukcji.

Alternatywnie, metoda stałego współczynnika jest łatwa do określenia i zasadniczo standaryzuje twoje ukryte zmienne (jeśli badasz struktury średnie, możesz również ustawić uśpione średnie na zero). Ponieważ przez cały czas standaryzujemy zmienne, jest to wysoce intuicyjna i powszechnie akceptowana forma ustalania skali dla zmiennych ukrytych, chociaż wynikowe skalowanie nie ma z natury znaczenia. Mimo to jest to prawdopodobnie najlepsza metoda na „domyślną”, chyba że masz silną potrzebę użycia jednej z pozostałych metod.

Kodowanie efektów jest stosunkowo nowością w metodach ustawiania skali (szczegółowe omówienie patrz Little, Slegers, & Card, 2006). Największą zaletą jest modelowanie ukrytych środków. Robiąc to, ograniczyłbyś również przechwycenia pozycji do średniej 0. Efektem tych ograniczeń jest to, że twoje ukryte zmienne będą dokładnie w tej samej skali, co oryginalne elementy. Na przykład, jeśli średnia Twoich wskaźników wynosiłaby „5”, Twoja utajona średnia również wyniosłaby „5”, chociaż utajona wariancja byłaby mniejsza niż zaobserwowana wariancja. Ponieważ ograniczenia dotyczące ładowań i punktów przecięcia mogą być bardziej wymagające obliczeniowo, szczególnie w bardziej skomplikowanych modelach, i czasami skutkują błędami zbieżności, kodowanie efektów prawdopodobnie nie jest tego warte, chyba że planujesz zbadać ukryte średnie. Ale w konkretnym celu badania ukrytych środków jest świetny.

Brown, T. A. (2015). Konfirmacyjna analiza czynnikowa dla badań stosowanych (wydanie 2) . New York, NY: Guilford Press.

Little, T. D., Slegers, D. W., & Card, N. A. (2006). Niearbitralna metoda identyfikacji i skalowania ukrytych zmiennych w modelach SEM i MACS. Modelowanie równań strukturalnych , 13 , 59-72.

Maarten Buis
2015-02-22 15:32:26 UTC
view on stackexchange narkive permalink

Pomyśl o skali GNM. Jest utajony, więc nie ma naturalnej skali, takiej jak metry (cale), euro (jen) itp. Zamiast tego musimy nadać mu skalę, informując, kiedy wynosi 0 i jaka jest jednostka wzrostu. W oryginalnym modelu ustawiasz GnM na 0, gdy wszystkie wskaźniki są równe 0, a ustawiając obciążenie x1 na 1, pożyczasz jednostkę z x1. Tak więc wzrost jednostki w GnM jest równoważny wzrostowi jednostki w x1. Kiedy wyzwolisz ładowanie x1, jaka jest jednostka GnM? Nie wiemy, więc jest niezidentyfikowany. Powszechnym sposobem rozwiązania tego problemu jest ustawienie wariancji GnM na 1.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...