Jak mogę sprawdzić, czy losowy efekt jest znaczący?


34

Próbuję zrozumieć, kiedy zastosować efekt losowy, a kiedy nie jest to konieczne. Powiedziano mi, że podstawową zasadą jest to, że masz 4 lub więcej grup / osób, które ja robię (15 indywidualnych łosi). Niektóre z tych łosi eksperymentowano 2 lub 3 razy w sumie 29 prób. Chcę wiedzieć, czy zachowują się inaczej, gdy znajdują się w krajobrazie podwyższonego ryzyka, niż nie. Pomyślałem więc, że ustawię osobnika jako efekt losowy. Jednak powiedziano mi teraz, że nie trzeba uwzględniać osobnika jako efektu losowego, ponieważ jego reakcja nie jest bardzo zróżnicowana. Nie mogę zrozumieć, jak sprawdzić, czy naprawdę jest coś branego pod uwagę przy ustawianiu jednostki jako efektu losowego. Może początkowe pytanie brzmi: Jakie testy / diagnostykę mogę zrobić, aby dowiedzieć się, czy Indywidualność jest dobrą zmienną objaśniającą i czy powinien to być stały efekt - wykresy qq? histogramy? wykresy rozrzutu? I czego bym szukał w tych wzorach.

Uruchomiłem model z jednostką jako efekt losowy i bez niego, ale potem przeczytałem http://glmm.wikidot.com/faq, gdzie stwierdzają:

nie porównuj modeli Lmer z odpowiednimi pasowaniami LM ani glmer / glm; prawdopodobieństwa logarytmiczne nie są współmierne (tzn. obejmują różne warunki dodatkowe)

I tutaj zakładam, że oznacza to, że nie można porównywać modelu z efektem losowym lub bez niego. Ale tak naprawdę nie wiedziałbym, co powinienem porównać między nimi.

W moim modelu z efektem losowym również próbowałem spojrzeć na wynik, aby zobaczyć, jakie dowody lub znaczenie ma RE

lmer(Velocity ~ D.CPC.min + FD.CPC + (1|ID), REML = FALSE, family = gaussian, data = tv)

Linear mixed model fit by maximum likelihood 
Formula: Velocity ~ D.CPC.min + FD.CPC + (1 | ID) 
   Data: tv 
    AIC    BIC logLik deviance REMLdev
 -13.92 -7.087  11.96   -23.92   15.39
Random effects:
 Groups   Name        Variance Std.Dev.
 ID       (Intercept) 0.00000  0.00000 
 Residual             0.02566  0.16019 
Number of obs: 29, groups: ID, 15

Fixed effects:
              Estimate Std. Error t value
(Intercept)  3.287e-01  5.070e-02   6.483
D.CPC.min   -1.539e-03  3.546e-04  -4.341
FD.CPC       1.153e-04  1.789e-05   6.446

Correlation of Fixed Effects:
          (Intr) D.CPC.
D.CPC.min -0.010       
FD.CPC    -0.724 -0.437

Widzisz, że moja wariancja i SD z indywidualnego identyfikatora jako efekt losowy = 0. Jak to możliwe? Co oznacza 0? Czy to prawda? Zatem mój przyjaciel, który powiedział „skoro nie ma zmiany przy użyciu identyfikatora, ponieważ efekt losowy jest niepotrzebny” jest poprawny? Więc czy użyłbym tego jako stałego efektu? Ale czy fakt, że jest tak mało zmian, nie oznacza, że ​​i tak niewiele nam powie?


Aby uzyskać dokładną 0 wariancję losowego efektu, patrz stats.stackexchange.com/questions/115090 .
ameba mówi Przywróć Monikę

Odpowiedzi:


21

Oszacowanie, IDwariancja = 0, wskazuje, że poziom zmienności między grupami nie jest wystarczający, aby uzasadnić włączenie efektów losowych do modelu; to znaczy. twój model jest zdegenerowany.

Jak poprawnie się identyfikujesz: najprawdopodobniej tak; IDponieważ efekt losowy jest niepotrzebny. Niewiele nasuwa się na myśl, aby przetestować to założenie:

  1. Możesz porównać (używając REML = Fzawsze) AIC (lub ogólnie twój ulubiony układ scalony) między modelem z efektami losowymi i bez nich i zobaczyć, jak to działa.
  2. Spójrz na anova()wynik obu modeli.
  3. Możesz zrobić parametryczny bootstrap za pomocą rozkładu bocznego zdefiniowanego przez twój oryginalny model.

Pamiętaj, że wybory 1 i 2 mają problem: sprawdzasz, czy coś znajduje się na granicy przestrzeni parametrów, więc w rzeczywistości nie są one technicznie prawidłowe. Powiedziawszy to, nie sądzę, że dostaniesz od nich błędne spostrzeżenia i wiele osób z nich korzysta (np. Douglas Bates, jeden z programistów lme4, używa ich w swojej książce, ale wyraźnie stwierdza to zastrzeżenie dotyczące testowanych wartości parametrów na granicy zestawu możliwych wartości). Choice 3 jest najbardziej nużącym z 3, ale tak naprawdę daje ci najlepszy pomysł na temat tego, co się dzieje. Niektóre osoby mają pokusę, aby używać nieparametrycznego bootstrapu, ale myślę, że biorąc pod uwagę fakt, że przyjmujesz założenia parametryczne na początek, równie dobrze możesz z nich skorzystać.


6
Pakiet RLRsim to naprawdę wygodny sposób testowania efektów losowych za pomocą symulacji testów prawdopodobieństwa opartych na symulacji.
atrichornis

@atrichornis: +1. Ciekawy pakiet; Nie wiedziałem o tym. Właśnie spojrzałem na jego kod, całkiem prosto mogę powiedzieć. Chciałbym, żeby włączyli to (lub coś w tym rodzaju) lme4szczególnie teraz, gdy mcmcsamp()jest zepsuty, a ludzie mają tylko własne implementacje ad-hoc bootstrap, aby uzyskać przyzwoite wartości p itp.
usεr11852 mówi: Przywróć Monic

To prawda, że ​​modele mieszane nie są proste w R. Mnóstwo przybliżeń i obejść ... Chociaż zbieram SAS itp. Po prostu pomaluj niektóre z tych samych niepewności? Ben Bolker jest współautorem obu pakietów, może mieć powody, aby go nie uwzględniać. Prawdopodobnie czas!
atrichornis

4
Bootstrap na granicy przestrzeni parametrów ma własny zestaw problemów i problemów prowadzących do niespójności . Pasek startowy nie jest panaceum i nie powinien być wrzucany do torby lekko, zakładając, że wszystko rozwiąże.
StasK

2
Spójrz, argument jest bardzo subtelny. O ile pamiętam, sprowadza się to do tego, że wykonujesz bootstrap z dystrybucji innej niż zero; a biorąc pod uwagę niestandardowe rozkłady uzyskane na granicy, warunki regularności są naruszane, a rozkład ładowania początkowego nie jest zbieżny z celem. Myślę, że wciąż można tu zbudować nieparametryczny bootstrap poprzez wyciągnięcie grupowego środka reszt. Jednak z naruszeniem niezależności obserwacji między grupami może pojawić się kolejna warstwa komplikacji.
StasK

3

Nie jestem pewien, czy podejście, które zamierzam zaproponować, jest rozsądne, więc ci, którzy wiedzą więcej na ten temat, poprawiają mnie, jeśli się mylę.

Moja propozycja polega na utworzeniu dodatkowej kolumny w danych, która ma stałą wartość 1:

IDconst <- factor(rep(1, each = length(tv$Velocity)))

Następnie możesz utworzyć model, który używa tej kolumny jako losowego efektu:

fm1 <- lmer(Velocity ~ D.CPC.min + FD.CPC + (1|IDconst), 
  REML = FALSE, family = gaussian, data = tv)

W tym momencie możesz porównać (AIC) swój oryginalny model z efektem losowym ID(nazwijmy go fm0) z nowym modelem, który nie bierze pod uwagę, IDponieważ IDconstjest taki sam dla wszystkich danych.

anova(fm0,fm1)

Aktualizacja

użytkownik11852 prosił o przykład, ponieważ jego zdaniem powyższe podejście nawet się nie wykona. Przeciwnie, mogę pokazać, że to podejście działa (przynajmniej z lme4_0.999999-0tym, którego obecnie używam).

set.seed(101)
dataset <- expand.grid(id = factor(seq_len(10)), fac1 = factor(c("A", "B"),
  levels = c("A", "B")), trial = seq_len(10))
dataset$value <- rnorm(nrow(dataset), sd = 0.5) +
      with(dataset, rnorm(length(levels(id)), sd = 0.5)[id] +
      ifelse(fac1 == "B", 1.0, 0)) + rnorm(1,.5)
    dataset$idconst <- factor(rep(1, each = length(dataset$value)))

library(lme4)
fm0 <- lmer(value~fac1+(1|id), data = dataset)
fm1 <- lmer(value~fac1+(1|idconst), data = dataset)

anova(fm1,fm0)

Wydajność:

  Data: dataset
  Models:
  fm1: value ~ fac1 + (1 | idconst)
  fm0: value ~ fac1 + (1 | id)

      Df    AIC    BIC  logLik  Chisq Chi Df Pr(>Chisq)
  fm1  4 370.72 383.92 -181.36                      
  fm0  4 309.79 322.98 -150.89 60.936      0  < 2.2e-16 ***

Zgodnie z tym ostatnim testem powinniśmy zachować efekt losowy, ponieważ fm0model ma najniższy AIC i BIC.

Aktualizacja 2

Nawiasem mówiąc, to samo podejście zaproponował NW Galwey w „Wprowadzenie do modelowania mieszanego: poza regresją i analizą wariancji” na stronach 213–214.


Czy przetestowałeś swój pomysł? Proszę, udowodnij, że się mylę, ale myślę, że twój pomysł nawet się nie zrealizuje. Jeśli IDconstto samo dotyczy wszystkich twoich danych, to nie masz żadnego grupowania. Potrzebujesz współczynnika grupowania, aby mieć co najmniej jeden poziom próbkowany, a sposób jego skonfigurowania nie ma żadnego. Może mógłbym uwierzyć w uzasadnienie użycia „losowego grupowania”, ale to zupełnie inna gra w piłkę. Przetestuj swoje podejście z pewnymi danymi pozornymi. Mocno wierzę, że przy proponowanej konfiguracji lmer()nie będzie działać. (Używam lme4_0.99999911-1)
usεr11852 mówi Przywróć Monic

@ user11852 Proszę zobaczyć moją aktualizację i poinformować nas, czy to podejście również działa lme4_0.99999911-1.
VLC

Z

3
Tak, zrobiłem to, co sugerujesz; to nie będzie działać / działać. Error in lFormula(formula = value ~ fac1 + (1 | idconst), data = dataset) : grouping factors must have at least 1 sampled level. I jak powiedziałem, koncepcyjnie jest to złe. Nie chodzi o oszukanie oprogramowania w celu podania niektórych liczb, lecz o to, czy to, co mówisz, jest rozsądne. Nie masz drugiego mieszanego modelu do porównania, jeśli w tym modelu efekt losowy wynika ze stałej. Równie dobrze możesz go wykluczyć i zamiast tego wypróbować model liniowy.
usεr11852 mówi: Przywróć Monic

1
Zaktualizuj uzgodnienie definiując losową zmienną jednej grupy w lme4. Można to zrobić, jeśli ustawisz opcję: control=lmerControl(check.nlev.gtr.1="ignore"). Ben Bolker wspomina o tym tutaj: github.com/lme4/lme4/issues/411 .
Robin Beaumont

1

Chciałbym odpowiedzieć na bardziej „początkowe” pytanie.

Jeśli podejrzewasz jakąkolwiek niejednorodność wariancji między zmienną zależną z powodu pewnych czynników, powinieneś wykreślić dane za pomocą wykresów punktowych i rozproszonych. Kilka typowych wzorców do sprawdzenia, zamieszczam poniżej tę listę z różnych źródeł w sieci.

Heteroskedasticity Patterns

Ponadto wykreśl zmienną zależną według czynników / grup leczenia, aby sprawdzić, czy występuje stała wariancja. Jeśli nie, możesz zbadać losowe efekty lub ważone regresje. Na przykład ten wykres poniżej jest przykładem wariancji w kształcie lejka w moich grupach leczenia. Więc wybieram losowe efekty i testuję efekty na zboczu i przechwytywaniu.

Wykres pudełkowy w celu sprawdzenia heteroskedastyczności

Odtąd powyższe odpowiedzi odpowiadają na twoje główne pytanie. Istnieją również testy sprawdzające heteroskedastyczność, jeden z nich znajduje się tutaj - https://dergipark.org.tr/download/article-file/94971 . Ale nie jestem pewien, czy istnieją jakieś testy wykrywające heteroskedastyczność na poziomie grupy.


Proszę użyć tylko pola „Twoja odpowiedź”, aby podać odpowiedzi na pytanie PO. CV to ścisła strona pytań i odpowiedzi, a nie forum dyskusyjne. Ta ostatnia, pogrubiona część Twojego posta jest nowym pytaniem, a nie odpowiedzią na to pytanie. Jeśli masz nowe pytanie, kliknij szary kolor ASK QUESTIONu góry i zadaj je tam. Ponieważ jesteś tutaj nowy, możesz wybrać się na naszą wycieczkę , która zawiera informacje dla nowych użytkowników.
gung - Przywróć Monikę
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.