Quels sont les avantages de l'ANOVA par rapport à un modèle linéaire normal?

8


J'expérimente avec R et j'ai découvert qu'un anova () a besoin d'un objet de type lm. Mais pourquoi devrais-je continuer avec une anova après cela:

> x <- data.frame(rand=rnorm(100), factor=sample(c("A","B","C"),100,replace=TRUE))
> head(x)
        rand factor
1  0.9640502      B
2 -0.5038238      C
3 -1.5699734      A
4 -0.8422324      B
5  0.2489113      B
6 -1.4685439      A

> model <- lm(x$rand ~ x$factor))
> summary(model)

Call:
lm(formula = x$rand ~ x$factor)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.74118 -0.89259  0.02904  0.59726  3.19762 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  -0.1878     0.1845  -1.018    0.311
x$factorB    -0.1284     0.2689  -0.477    0.634
x$factorC     0.4246     0.2689   1.579    0.118

Residual standard error: 1.107 on 97 degrees of freedom
Multiple R-squared: 0.04345, Adjusted R-squared: 0.02372 
F-statistic: 2.203 on 2 and 97 DF,  p-value: 0.1160

Cela me dit tout ce dont j'ai besoin, ou non? Je suis curieux de savoir pourquoi vous souhaitez continuer avec un anova (modèle)

Alexander Engelhardt
la source
1
Ceci est un quasi-doublon de stats.stackexchange.com/questions/555/…
onestop

Réponses:

16

Voyons ce que vous obtenez lorsque vous utilisez réellement la fonction anova () (les nombres sont différents de ceux de votre exemple, car je ne sais pas quelle graine vous avez utilisée pour générer les nombres aléatoires, mais le point reste le même):

> anova(model)

Analysis of Variance Table

Response: x$rand
          Df  Sum Sq Mean Sq F value Pr(>F)
x$factor   2   4.142  2.0708  1.8948 0.1559
Residuals 97 106.009  1.0929        

Le test F pour le facteur teste simultanément H0:β1=β2=0, c'est-à-dire l'hypothèse que le facteur en général n'est pas significatif. Une stratégie courante consiste à tester d'abord cette hypothèse omnibus avant de déterminer quels niveaux du facteur sont différents les uns des autres.

En outre, vous pouvez utiliser la fonction anova () pour des tests de modèle complets ou réduits. Par exemple:

> x <- data.frame(rand=rnorm(100), factor=sample(c("A","B","C"),100,replace=TRUE), 
                  y1=rnorm(100), y2=rnorm(100))
> model1 <- lm(x$rand ~ x$factor + x$y1 + x$y2)
> model2 <- lm(x$rand ~ x$factor)
> anova(model2, model1)

Analysis of Variance Table

Model 1: x$rand ~ x$factor
Model 2: x$rand ~ x$factor + x$y1 + x$y2
Res.Df    RSS Df Sum of Sq      F Pr(>F)
1     97 105.06                           
2     95 104.92  2   0.13651 0.0618 0.9401

qui est une comparaison du modèle complet avec le facteur et deux covariables (y1 et y2) et le modèle réduit, où nous supposons que les pentes des deux covariables sont simultanément égales à zéro.

Wolfgang
la source
2
(+1) Bonne réponse. J'ajouterais que ce sont souvent des contrastes particuliers qui sont intéressants dans le DoE tels qu'analysés par le biais d'ANOVA, et que ceux par défaut (tels que renvoyés par summary.aov(lm(...))ou anova(lm(...))ne présentent pas un intérêt particulier.
chl
@chl: C'est un bon point. Cependant, je pense qu'il y a quelque chose à dire pour construire réellement les contrastes des hypothèses que vous êtes intéressé à tester. Il n'y a pas de distinction fondamentale entre l'ANOVA et la régression. Parfois, les routines ANOVA cachent les hypothèses qui sont testées. Dans le même temps, les procédures ANOVA emballent parfois les choses exactement de la manière dont vous souhaitez voir les résultats.
Brett
Merci monsieur :) Donc, je regarderais d'abord l'anova, si le facteur faisait une différence, avant de regarder la sortie lm () pour voir quels facteurs faisaient la différence? Mais la sortie lm () - ne me dit-elle pas déjà si les différents facteurs sont significatifs (avec les 1-3 étoiles derrière eux)?
Alexander Engelhardt
1
Pas assez. La sortie de lm () ci-dessus vous indique s'il existe une différence significative entre le niveau A (le niveau de référence) et les niveaux B et C. Elle ne vous indique pas si les niveaux B et C sont sensiblement différents les uns des autres. Bien sûr, vous pouvez faire du niveau B (ou C) votre référence (avec la fonction relevel ()), mais supposons que vous ayez un facteur à plusieurs niveaux. La vérification de tous les contrastes par paire entre les niveaux deviendra fastidieuse. De plus, vous effectuez de nombreux tests. L'alternative consiste à inspecter d'abord le test omnibus pour vérifier s'il se passe quoi que ce soit.
Wolfgang
Ha! Merci beaucoup. Il semble que je n'ai pas compris que lm () a seulement testé les facteurs par rapport au niveau de référence.
Alexander Engelhardt du