Chcę przeprowadzić analizę ANCOVA danych dotyczących gęstości epifitów roślin. Na początku chciałbym wiedzieć, czy jest jakaś różnica w gęstości roślin między dwoma zboczami, jednym N i jednym S, ale mam inne dane, takie jak wysokość, otwartość czaszy i wysokość rośliny żywicielskiej. Wiem, że moją współzmienną musiałyby być dwa zbocza (N i S). Zbudowałem ten model, który działa w R i chociaż nie mam pojęcia, czy działa dobrze. Chciałbym również wiedzieć, jaka jest różnica, jeśli użyję symbolu +
lub *
.
model1 <- aov(density~slope+altitude+canopy+height) summary(model1) model1
Komentarze
- + obliczy tylko główne efekty, * oszacuje interakcje pomiędzy czynnikami związanymi z *. Frameworki ANCOVA zwykle szacują tylko główny wpływ czynnika ciągłego, ale interakcje między wszystkimi zgrupowanymi czynnikami.
Odpowiedź
Podstawowym narzędziem do tego jest lm
; zwróć uwagę, że aov
jest opakowaniem dla lm
.
W szczególności, jeśli masz jakąś zmienną grupującą (czynnik), $ g $ i ciągłą zmienną współrzędną $ x $ , model y ~ x + g
pasowałby do modelu ANCOVA z efektami głównymi, a y ~ x * g
pasowałby do modelu, który obejmuje interakcję ze zmienną towarzyszącą. aov
przyjmie te same formuły.
Zwróć szczególną uwagę na Note
w pomocy do aov
.
Jeśli chodzi o +
i *
, russellpierce prawie to obejmuje, ale radzę zajrzeć do ?lm
i ?formula
, a zwłaszcza do sekcji 11.1 podręcznika Wprowadzenie do języka R dołączone do języka R (lub możesz go znaleźć w Internecie, jeśli nie wiesz, jak go znaleźć na komputerze; najłatwiej jest to znaleźć menu rozwijane „Pomoc” w R lub RStudio).
Komentarze
Odpowiedź
Polecam zdobyć i przeczytać Discovering Statistics using R by Field. Ma fajną sekcję na temat ANCOVA.
Aby uruchomić ANCOVA w R, załaduj następujące pakiety:
car compute.es effects ggplot2 multcomp pastecs WRS
Jeśli używasz lm
lub aov
(używam aov
) upewnij się, że ustawiłeś kontrasty za pomocą „kontrastów „przed wykonaniem aov
lub lm
. R domyślnie używa nieortogonalnych kontrastów, które mogą zepsuć wszystko w ANCOVA. Jeśli chcesz ustawić ortogonalne kontrasty, użyj:
contrasts(dataname$factorvariable)=contr.poly(# of levels, i.e. 3)
, a następnie uruchom model jako
model.1=aov(dv~covariate+factorvariable, data=dataname)
Aby wyświetlić model, użyj:
Anova(model.1, type="III")
Upewnij się, że używasz dużej litery „A” Anova
tutaj, a nie anova
. Daje to wyniki przy użyciu typu III SS.
summary.lm(model.1)
poda kolejne podsumowanie i zawiera R-sq. wynik.
posth=glht(model.1, linfct=mcp(factorvariable="Tukey")) ##gives the post-hoc Tukey analysis summary(posth) ##shows the output in a nice format.
Jeśli chcesz przetestować jednorodność nachyleń regresji, możesz również dołączyć termin interakcji dla IV i współzmiennej. To byłoby:
model=aov(dv~covariate+IV+covariate:IV, data=dataname)
Jeśli termin interakcji jest znaczący, oznacza to, że nie masz jednorodności.
Komentarze
- Dlaczego nieortogonalne kontrasty wszystko psują?
- Aby odpowiedzieć na powyższe pytanie dotyczące „, dlaczego nieortogonalne kontrasty są bałaganem wszystko w górę „. Odpowiedź jest taka, że R domyślnie jest nieortogonalne (tj. Różnica między średnimi), co może powodować problemy, jeśli chcesz zobaczyć wkład każdego IV oddzielnie. Kiedy określamy kontrasty ortogonalne, mówimy R, że chcemy, aby SS dla IV ' były całkowicie podzielone na partycje i nie nakładały się. W ten sposób możemy jasno i wyraźnie zobaczyć zmienność przypisaną do każdego predyktora. Jeśli nie określisz tego, R domyślnie przyjmuje bardziej liberalne podejście do kontrastu.
- Dlaczego zainteresowanie typem III SS?
Odpowiedź
Oto uzupełniająca dokumentacja http://goo.gl/yxUZ1R procedury sugerowanej przez @Butorovich. Dodatkowo, moja obserwacja jest taka, że gdy zmienna towarzysząca jest binarna, użycie sumowania (lm.object) dałoby takie samo oszacowanie IV, jak wygenerowane przez Anovę (lm.object, type = „III”).
Komentarze
- Nie ' nie jest jasne, czy to ma być odpowiedź. Czy to jest? Jeśli tak, edytuj, aby wyjaśnić. Jeśli jest to pytanie, zadaj je, klikając
ASK QUESTION
u góry &, zadając pytanie. Wtedy możemy Ci właściwie pomóc. - Zgoda. Wiadomość została poprawiona jako (uzupełniająca) odpowiedź na poprzednią.
Odpowiedź
Używamy regresji analiza w celu stworzenia modeli opisujących wpływ zmienności zmiennych predykcyjnych na zmienną odpowiedzi. Czasami, jeśli mamy zmienną kategorialną z wartościami takimi jak Tak / Nie lub Mężczyzna / Kobieta itp., Prosta analiza regresji daje wiele wyników dla każdej wartości zmiennej kategorialnej. W takim scenariuszu możemy zbadać wpływ zmiennej kategorialnej, używając jej razem ze zmienną predykcyjną i porównując linie regresji dla każdego poziomu zmiennej jakościowej. Taka analiza jest określana jako analiza kowariancji nazywana również ANCOVA.
Przykład
Rozważmy R
dane wbudowane ustaw mtcars
. Widzimy w nim, że pole am
reprezentuje typ transmisji (automatyczna lub ręczna). Jest to zmienna kategorialna o wartościach 0 i 1. Wartość mil na galon (mpg
) samochodu może również zależeć od niej oprócz wartości koni mechanicznych (hp
). Badamy wpływ wartości am
na regresję między mpg
a hp
. Dokonuje się tego za pomocą funkcji aov()
, po której następuje funkcja anova()
, aby porównać wielokrotne regresje.
Dane wejściowe
Utwórz ramkę danych zawierającą pola mpg
, hp
i am
ze zbioru danych mtcars
. Tutaj bierzemy mpg
jako zmienną odpowiedzi, hp
jako zmienną predykcyjną, a am
jako zmienna kategorialna.
input <- mtcars[,c("am","mpg","hp")] head(input)
Kiedy wykonujemy powyższy kod, daje to następujący wynik:
am mpg hp Mazda RX4 1 21.0 110 Mazda RX4 Wag 1 21.0 110 Datsun 710 1 22.8 93 Hornet 4 Drive 0 21.4 110 Hornet Sportabout 0 18.7 175 Valiant 0 18.1 105
Analiza ANCOVA
Tworzymy model regresji, biorąc hp
jako zmienną predykcyjną i mpg
jako zmienna odpowiedzi uwzględniająca interakcję między am
a hp
.
Model z interakcją między zmienną kategorialną a zmienna predykcyjna
Utwórz model regresji1
result1 <- aov(mpg~hp*am,data=mtcars) summary(result1)
Kiedy wykonujemy powyższy kod, daje to następujący wynik:
Df Sum Sq Mean Sq F value Pr(>F) hp 1 678.4 678.4 77.391 1.50e-09 *** am 1 202.2 202.2 23.072 4.75e-05 *** hp:am 1 0.0 0.0 0.001 0.981 Residuals 28 245.4 8.8 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Ten wynik pokazuje, że zarówno moc konna, jak i rodzaj transmisji mają znaczący wpływ na mile na galon, ponieważ wartość p w obu przypadkach jest mniejsza niż 0,05. Ale interakcja między tymi dwiema zmiennymi nie jest znacząca, ponieważ wartość p jest większa niż 0,05.
Model bez interakcji między zmienną kategorialną a zmienną predykcyjną
Utwórz model regresji2
result2 <- aov(mpg~hp+am,data=mtcars) summary(result2)
Kiedy wykonujemy powyższy kod, daje to następujący wynik:
Df Sum Sq Mean Sq F value Pr(>F) hp 1 678.4 678.4 80.15 7.63e-10 *** am 1 202.2 202.2 23.89 3.46e-05 *** Residuals 29 245.4 8.5 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Ten wynik pokazuje, że zarówno moc koni mechanicznych, jak i rodzaj transmisji mają znaczący wpływ na mile na galon, ponieważ wartość p w obu przypadkach jest mniejsza niż 0,05.
Porównanie dwóch modeli
Teraz możemy porównać te dwa modele, aby stwierdzić, czy interakcja zmiennych jest naprawdę nieistotna. W tym celu używamy funkcji anova()
.
anova(result1,result2) Model 1: mpg ~ hp * am Model 2: mpg ~ hp + am Res.Df RSS Df Sum of Sq F Pr(>F) 1 28 245.43 2 29 245.44 -1 -0.0052515 6e-04 0.9806
Ponieważ wartość p jest większa niż 0,05, wnioskujemy, że interakcja między mocą konną a rodzajem przekładni nie jest znacząca. Tak więc przebieg na galon będzie w podobny sposób zależał od mocy samochodu w trybie automatycznej i manualnej skrzyni biegów.
Komentarze
- A więc co było pierwsze, ta odpowiedź czy ten post w poradniku? tutorialspoint.com/r/r_analysis_of_covariance.htm . Czy tę odpowiedź należy usunąć jako plagiat? A może samouczki wskazywały po prostu na skopiowanie stąd?
anova
(' Wkrótce zobaczymy, czy podasz je w złej kolejności, ponieważ niektóre SS będą ujemne)