Jak uruchomić dwukierunkową ANOVA na danych bez normalności ani równości wariancji w R?

16

Obecnie pracuję nad moją pracą magisterską i planuję prowadzić statystyki w SigmaPlot. Jednak po spędzeniu trochę czasu z moimi danymi doszedłem do wniosku, że SigmaPlot może nie nadawać się do mojego problemu (mogę się mylić), więc zacząłem pierwsze próby w R, co nie bardzo ułatwiło.

Plan polegał na przeprowadzeniu prostej TWO-WAY-ANOVA na moich danych, która wynika z 3 różnych białek i 8 różnych terapii na tych, więc moje dwa czynniki to białka i leczenie. Testowałem pod kątem normalności, używając obu

> shapiro.test(time)

i

> ks.test(time, "norm", mean=mean(time), sd=sqrt(var(time)))

W obu przypadkach (może nic dziwnego) skończyłem z nietypowym rozkładem.

To pozostawiło mi pierwsze pytania, który test zastosować do równości wariancji. wymyśliłem

> chisq.test(time)

i wynik był taki, że nie mam równości wariancji w moich danych.

Próbowałem różnych transformacji danych (log, centrum, standaryzacja), z których wszystkie nie rozwiązały moich problemów z wariancjami.

Teraz jestem zagubiony, jak przeprowadzić ANOVA w celu przetestowania, które białka i które sposoby leczenia różnią się znacznie od siebie. Znalazłem coś na temat testu Kruskala-Walisa, ale tylko dla jednego czynnika (?). Znalazłem też pewne rzeczy na temat rankingu lub randamizacji, ale jeszcze nie jak wdrożyć te techniki w R.

Czy ktoś ma jakieś sugestie, co powinienem zrobić?

Edycja: dziękuję za odpowiedzi, jestem trochę przytłoczony czytaniem (wydaje się, że jest coraz więcej zamiast mniej), ale oczywiście będę kontynuował.

Oto przykład moich danych, zgodnie z sugestią (bardzo mi przykro z powodu formatu, nie mogłem znaleźć innego rozwiązania ani miejsca na umieszczenie pliku. Nadal jestem nowy w tym wszystkim.):

protein treatment   time  
A   con 2329.0  
A   HY  1072.0  
A   CL1 4435.0  
A   CL2 2971.0  
A   CL1-HY sim  823.5  
A   CL2-HY sim  491.5  
A   CL1+HY mix  2510.5  
A   CL2+HY mix  2484.5  
A   con 2454.0  
A   HY  1180.5  
A   CL1 3249.7  
A   CL2 2106.7  
A   CL1-HY sim  993.0  
A   CL2-HY sim  817.5  
A   CL1+HY mix  1981.0  
A   CL2+HY mix  2687.5  
B   con 1482.0  
B   HY  2084.7  
B   CL1 1498.0  
B   CL2 1258.5  
B   CL1-HY sim  1795.7  
B   CL2-HY sim  1804.5  
B   CL1+HY mix  1633.0  
B   CL2+HY mix  1416.3  
B   con 1339.0  
B   HY  2119.0  
B   CL1 1093.3  
B   CL2 1026.5  
B   CL1-HY sim  2315.5  
B   CL2-HY sim  2048.5  
B   CL1+HY mix  1465.0  
B   CL2+HY mix  2334.5  
C   con 1614.8  
C   HY  1525.5  
C   CL1 426.3  
C   CL2 1192.0  
C   CL1-HY sim  1546.0  
C   CL2-HY sim  874.5  
C   CL1+HY mix  1386.0  
C   CL2+HY mix  364.5  
C   con 1907.5  
C   HY  1152.5  
C   CL1 639.7  
C   CL2 1306.5  
C   CL1-HY sim  1515.0  
C   CL2-HY sim  1251.0  
C   CL1+HY mix  1350.5  
C   CL2+HY mix  1230.5
Sabine
źródło
2
Wygląda na to, że jesteś na dobrej drodze z R, ale wydaje mi się, że twoje trudności mogą wcale nie być związane z R. Być może musisz najpierw skonsultować się ze statystyką, aby opanować problem, ale dopiero wtedy poradzisz sobie z tym praktycznie. Twoje obecne pytanie jest dość skomplikowane i może zniechęcić ludzi do bicia go. Jeśli chodzi o część techniczną, oto kilka stron: ats.ucla.edu/stat/R/seminars/Repeated_Measures/... and Osobowość
Roman Luštrik
4
Bardzo dobrą alternatywą dla testów rangowych jest użycie permutacji ANOVA ( uvm.edu/~dhowell/StatPages/More_Stuff/Permutation%20Anova/... ). Przy takim podejściu heteroscedastyczność nie ma znaczenia. Głównym powodem, dla którego ludzie korzystają z testów rangowych, jest to, że są one znacznie łatwiejsze obliczeniowo. To już nie ma znaczenia. Mamy R i wydajne komputery ...
Mikko
1
Co to jest odpowiedź? Zauważ, że tak naprawdę nie obchodzi nas, czy odpowiedź ma rozkład normalny - chcemy sprawdzić, czy reszty z analizy są w przybliżeniu normalne z podobnymi wariancjami. Ale jeśli rzeczywiście występuje efekt leczenia, nie spodziewalibyśmy się, że odpowiedź byłaby zwykle rozkładana marginalnie.
Dason
1
Zauważyłem, że właśnie wziąłem dane, które opublikowałeś, przeprowadziłem dwukierunkową anovę i wykonałem test Shapiro Wilks na resztkach, co dało wartość p wynoszącą 0,5022, co nie oznacza zbyt dużego niepokoju.
Dason
1
@ Normalność Sabine często nie jest wielkim problemem dotyczącym ANOVA, ale twoje próbki powinny pochodzić z tej samej populacji, co oznacza, że ​​równość wariancji jest najważniejsza, oczywiście po randomizacji. Powinieneś coś zrobić, jeśli twoje wariancje nie są w przybliżeniu równe (spróbuj ?bartlett.test)
Mikko

Odpowiedzi:

12

To może być bardziej komentarz niż odpowiedź, ale nie pasuje jako komentarz. Możemy być w stanie Ci pomóc tutaj, ale może to potrwać kilka iteracji; potrzebujemy więcej informacji.

Po pierwsze, jaka jest twoja zmienna odpowiedzi?

Po drugie, zauważ, że rozkład krańcowy twojej odpowiedzi nie musi być normalny, raczej rozkład zależny od modelu (tj. Reszt) powinien być - nie jest jasne, że zbadałeś swoje resztki. Ponadto normalność jest najmniej istotnym założeniem modelu liniowego (np. ANOVA); resztki mogą nie być całkowicie normalne. Testy normalności nie są na ogół opłacalne (zobacz tutaj dyskusję na temat CV), wykresy są znacznie lepsze. Spróbowałbym qq-wykresu twoich pozostałości. W Rtym celu qqnorm()lub spróbuj qqPlot()wcarpakiet. Warto również wziąć pod uwagę sposób, w jaki reszty są nienormalne: skośność jest bardziej szkodliwa niż nadmierna kurtoza, w szczególności jeśli skośne naprzemienne kierunki między grupami.

Jeśli naprawdę istnieje problem, o który warto się martwić, transformacja jest dobrą strategią. Zapisywanie surowych danych jest jedną z opcji, ale nie jedyną. Zauważ, że centrowanie i standaryzacja nie są tak naprawdę transformacjami w tym sensie. Chcesz spojrzeć na rodzinę transformacji mocy Box & Cox . I pamiętaj, wynik nie musi być całkowicie normalny, wystarczy.

Następnie nie śledzę twojego zastosowania testu chi-kwadrat dla jednorodności wariancji, chociaż może być całkowicie w porządku. Sugerowałbym skorzystanie z testu Levene'a (użycie leveneTest()w car). Heterogeniczność jest bardziej szkodliwa niż nienormalność, ale ANOVA jest dość solidna, jeśli heterogeniczność jest niewielka. Podstawową zasadą jest to, że największa wariancja grupy może być czterokrotnie mniejsza od najmniejszej, bez stwarzania poważnych problemów. Dobra transformacja powinna również uwzględniać heterogeniczność.

Jeśli te strategie są niewystarczające, prawdopodobnie zbadałbym solidną regresję przed wypróbowaniem podejścia nieparametrycznego.

Jeśli możesz edytować swoje pytanie i powiedzieć więcej o swoich danych, być może będę w stanie je zaktualizować, aby podać bardziej szczegółowe informacje.

gung - Przywróć Monikę
źródło
Jeśli chodzi o mój drugi punkt, niedawno napisałem tutaj odpowiedź , która może pomóc w wyjaśnieniu tego problemu. Możesz to przeczytać.
Gung - Przywróć Monikę
8

( uwaga: ta odpowiedź została opublikowana przed migracją pytania i scaleniem go z SO, więc do pytania nie dodano tutaj szczegółów. Wiele z nich znajduje się w komentarzach i odpowiedzi @gung).

Istnieje wiele różnych podejść, a to pytanie zostało omówione w innym miejscu na tej stronie. Oto lista niektórych podejść, z linkami do innych pytań na stronie i referencjami:

  1. Transformacja mocy Box-Coxa może normalizować reszty, które są w skali nieliniowej
  2. ANOVA dla danych rankingowych jest bardzo łatwa, ale ma zmniejszoną moc i jest trudna do interpretacji. Zobacz Conover i Iman, (1981)
  3. Model logistyczny szans proporcjonalnych
  4. Permutation Tests ( Anderson i ter Braak 2003 ), zaimplementowane i opisane przez Anderson oraz jako adonisfunkcja w pakiecie R Vegan
  5. Bootstrapping
  6. Hierarchiczne modelowanie bayesowskie ( Gelman 2005 )
David LeBauer
źródło
+1, to ładna lista niektórych dostępnych opcji do zbadania.
gung - Przywróć Monikę
Poniżej znajdują się komentarze pierwotnie wymienione na temat Przepełnienia stosu, które zostały utracone podczas migracji. Zobacz meta.stats.stackexchange.com/q/1157/930 .
chl
Czy wiesz, czy istnieje realizacja pomysłów Andersona i Braaka? - Henrik 16 maja o 15:15
chl
@Henrik jest implementacja w FORTRAN Anderson 2005, która jest dostępna poprzez funkcję R adonisw Veganpakiecie R / David 16 maja o godzinie 16:20
Chl
Dzięki. adonisWydaje się, że działa nawet z jednostronnymi rejestratorami Mam jednak wrażenie, że używa czegoś takiego jak suma kwadratów typu 1, gdy otrzymuję komunikat przy Terms added sequentially (first to last)każdym uruchomieniu. Użyłeś go lub możesz coś o tym powiedzieć? - Henrik 16 maja o 17:03
chl