Różnica w raportowanych wartościach p między lm i aov w R


12

Co wyjaśnia różnice w wartościach p poniżej aovi lmwywołań? Czy różnica wynika tylko z różnych rodzajów obliczeń sum kwadratów?

set.seed(10)
data=rnorm(12)
f1=rep(c(1,2),6)
f2=c(rep(1,6),rep(2,6))
summary(aov(data~f1*f2))
summary(lm(data~f1*f2))$coeff

Odpowiedzi:


13

summary(aov)wykorzystuje tak zwane sumy kwadratów typu I (sekwencyjne). summary(lm)wykorzystuje tak zwane sumy kwadratów typu III, które nie są sekwencyjne. Szczegółowe informacje można znaleźć w odpowiedzi Gunga .


Pamiętaj, że musisz zadzwonić lm(data ~ factor(f1) * factor(2))( aov()automatycznie konwertuje RHS formuły na czynniki). Następnie zwróć uwagę na mianownik ogólnej statystyki w regresji liniowej ( dalsze wyjaśnienia znajdują się w tej odpowiedzi ):t

t=ψ^-ψ0σ^do(XX)-1do

do(XX)-1do różni się dla każdej badanej współczynnika ponieważ wektor zmienia. Natomiast mianownik w teście ANOVA to zawsze MSE.βdofa


1
Myślę, że pierwsze zdanie tej odpowiedzi jest błędne. Różnica wydaje się wynikać właśnie z różnych rodzajów sum kwadratów: mianowicie typu I vs. typu II / III. Typ I jest sekwencyjny, co lmpodaje, podczas gdy Typ II / III nie. Jest to wyjaśnione dość szczegółowo w odpowiedzi na @ gung, z którą prowadziłeś link.
ameba mówi Przywróć Monikę

@amoeba Co sugerujesz, aby poprawić odpowiedź?
caracal

Zredagowałem pierwszy akapit, sprawdź, czy zgadzasz się z edycją i możesz go dowolnie zmieniać.
ameba mówi Przywróć Monikę

2
set.seed(10)
data=rnorm(12)
f1=rep(c(1,2),6)
f2=c(rep(1,6),rep(2,6))
summary(aov(data~f1*f2))
            Df Sum Sq Mean Sq F value Pr(>F)
f1           1  0.535  0.5347   0.597  0.462
f2           1  0.002  0.0018   0.002  0.966
f1:f2        1  0.121  0.1208   0.135  0.723
Residuals    8  7.169  0.8962               
summary(lm(data~f1*f2))$coeff
               Estimate Std. Error    t value  Pr(>|t|)
(Intercept)  0.05222024   2.732756  0.0191090 0.9852221
f1          -0.17992329   1.728346 -0.1041014 0.9196514
f2          -0.62637109   1.728346 -0.3624106 0.7264325
f1:f2        0.40139439   1.093102  0.3672066 0.7229887

Są to dwa różne kody. z modelu Lm potrzebujesz współczynników. podczas gdy z modelu aov po prostu zestawiasz źródła zmienności. Wypróbuj kod

anova(lm(data~f1*f2))
Analysis of Variance Table

Response: data
          Df Sum Sq Mean Sq F value Pr(>F)
f1         1 0.5347 0.53468  0.5966 0.4621
f2         1 0.0018 0.00177  0.0020 0.9657
f1:f2      1 0.1208 0.12084  0.1348 0.7230
Residuals  8 7.1692 0.89615   

Daje to tabelaryczne źródła zmienności prowadzące do tych samych wyników.


2
Nie wydaje się to odpowiadać na pytanie, które pyta, dlaczego wartości p dla f1i f2różnią się w dwóch podsumowaniach górnego panelu. Wygląda na to, że są tylko pokazując summary(aov(...))i anova(lm(...))w Rmają podobną wydajność.
whuber
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.