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
źródło
?bartlett.test
)Odpowiedzi:
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
R
tym celuqqnorm()
lub spróbujqqPlot()
wcar
pakiet. 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()
wcar
). 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.
źródło
( 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:
adonis
funkcja w pakiecie R Veganźródło
adonis
wVegan
pakiecie R / David 16 maja o godzinie 16:20adonis
Wydaje 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 przyTerms 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