Différence des valeurs de p rapportées entre lm et aov dans R
12
Qu'est-ce qui explique les différences de valeurs de p dans ce qui suit aovet dans les lmappels? La différence est-elle uniquement due à différents types de calculs de sommes de carrés?
summary(aov)utilise des sommes dites de type I (séquentiel) de carrés. summary(lm)utilise des sommes dites de carrés de type III, qui ne sont pas séquentielles. Voir la réponse de Gung pour plus de détails.
Notez que vous devez appeler lm(data ~ factor(f1) * factor(2))( aov()convertit automatiquement le RHS de la formule en facteurs). Notez ensuite le dénominateur de la statistique générale en régression linéaire (voir cette réponse pour plus d'explications):t
t = ψ^- ψ0σ^c′( X′X )- 1c----------√
diffère pour chaquecoefficientβtestécar le vecteurchange. En revanche, le dénominateur dutestANOVAest toujours MSE.c′( X′X )- 1cβ FcF
Je pense que la première phrase de cette réponse est fausse. La différence semble être précisément due à différents types de somme de carrés: à savoir, le type I contre le type II / III. Le type I est séquentiel, ce qui est lmindiqué, tandis que le type II / III ne l'est pas. Ceci est expliqué assez en détail dans la réponse de @ gung à laquelle vous avez lié.
Amoeba dit Reinstate Monica
@amoeba Que proposez-vous pour corriger la réponse?
caracal
J'ai édité le premier paragraphe, voir si vous êtes d'accord avec l'édition et n'hésitez pas à le modifier comme vous le souhaitez.
Amoeba dit Reinstate Monica
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))DfSumSqMeanSq F valuePr(>F)
f1 10.5350.53470.5970.462
f2 10.0020.00180.0020.966
f1:f2 10.1210.12080.1350.723Residuals87.1690.8962
summary(lm(data~f1*f2))$coeff
EstimateStd.Error t valuePr(>|t|)(Intercept)0.052220242.7327560.01910900.9852221
f1 -0.179923291.728346-0.10410140.9196514
f2 -0.626371091.728346-0.36241060.7264325
f1:f2 0.401394391.0931020.36720660.7229887
Ce sont deux codes différents. à partir du modèle Lm, vous avez besoin des coefficients. tandis qu'à partir du modèle aov vous tabulez simplement les sources de variation. Essayez le code
anova(lm(data~f1*f2))AnalysisofVarianceTableResponse: data
DfSumSqMeanSq F valuePr(>F)
f1 10.53470.534680.59660.4621
f2 10.00180.001770.00200.9657
f1:f2 10.12080.120840.13480.7230Residuals87.16920.89615
Cela donne la tabulation des sources de variation conduisant aux mêmes résultats.
Cela ne semble pas répondre à la question, qui demande pourquoi les valeurs de p f1et f2diffèrent dans les deux résumés de votre panneau supérieur. On dirait que vous ne montrant que summary(aov(...))et anova(lm(...))en Ront une sortie similaire.
lm
indiqué, tandis que le type II / III ne l'est pas. Ceci est expliqué assez en détail dans la réponse de @ gung à laquelle vous avez lié.Ce sont deux codes différents. à partir du modèle Lm, vous avez besoin des coefficients. tandis qu'à partir du modèle aov vous tabulez simplement les sources de variation. Essayez le code
Cela donne la tabulation des sources de variation conduisant aux mêmes résultats.
la source
f1
etf2
diffèrent dans les deux résumés de votre panneau supérieur. On dirait que vous ne montrant quesummary(aov(...))
etanova(lm(...))
enR
ont une sortie similaire.