ANOVA et régression linéaire sont équivalentes lorsque les deux modèles testent contre les mêmes hypothèses et utilisent un codage identique. Les modèles diffèrent par leur objectif de base: l'ANOVA vise principalement à présenter les différences entre les moyennes des catégories dans les données, tandis que la régression linéaire consiste principalement à estimer une réponse moyenne de l'échantillon et un associé .σ2
Un peu aphoriquement, on peut décrire ANOVA comme une régression avec des variables factices. Nous pouvons facilement voir que c'est le cas dans la régression simple avec des variables catégorielles. Une variable catégorique sera codée en tant que matrice indicatrice (une matrice 0/1
selon que le sujet fait partie d’un groupe donné ou non), puis utilisée directement pour la résolution du système linéaire décrit par une régression linéaire. Voyons un exemple avec 5 groupes. Par souci d'argumentation, je supposerai que la moyenne group1
égale à 1, la moyenne group2
égale à 2, ... et la moyenne group5
égale à 5. (J'utilise MATLAB, mais la même chose est équivalente dans R.).
rng(123); % Fix the seed
X = randi(5,100,1); % Generate 100 random integer U[1,5]
Y = X + randn(100,1); % Generate my response sample
Xcat = categorical(X); % Treat the integers are categories
% One-way ANOVA
[anovaPval,anovatab,stats] = anova1(Y,Xcat);
% Linear regression
fitObj = fitlm(Xcat,Y);
% Get the group means from the ANOVA
ANOVAgroupMeans = stats.means
% ANOVAgroupMeans =
% 1.0953 1.8421 2.7350 4.2321 5.0517
% Get the beta coefficients from the linear regression
LRbetas = [fitObj.Coefficients.Estimate']
% LRbetas =
% 1.0953 0.7468 1.6398 3.1368 3.9565
% Rescale the betas according the intercept
scaledLRbetas = [LRbetas(1) LRbetas(1)+LRbetas(2:5)]
% scaledLRbetas =
% 1.0953 1.8421 2.7350 4.2321 5.0517
% Check if the two results are numerically equivalent
abs(max( scaledLRbetas - ANOVAgroupMeans))
% ans =
% 2.6645e-15
Comme on peut le voir dans ce scénario, les résultats sont exactement les mêmes. La différence numérique minime est due au fait que la conception n'est pas parfaitement équilibrée, ainsi qu'à la procédure d'estimation sous-jacente; L'ANOVA accumule les erreurs numériques un peu plus agressivement. À cet égard, nous convenons d'une interception LRbetas(1)
; nous pourrions adapter un modèle sans interception, mais ce ne serait pas une régression linéaire "standard". (Dans ce cas, les résultats seraient encore plus proches de l'ANOVA.)
F
abs( fitObj.anova.F(1) - anovatab{2,5} )
% ans =
% 2.9132e-13
En effet, les procédures testent la même hypothèse mais avec des formulations différentes: ANOVA vérifiera qualitativement si " le ratio est suffisamment élevé pour suggérer qu'aucun regroupement n'est invraisemblable ", tandis que la régression linéaire vérifiera qualitativement si " le ratio est suffisamment élevé pour suggérer une interception uniquement. le modèle est peut-être inadéquat ".
(Ceci est une interprétation assez libre de la " possibilité de voir une valeur égale ou supérieure à celle observée sous l'hypothèse nulle " et elle n'est pas censée être une définition de manuel.)
β, etc. Clairement, lorsque l’on commence à ajouter plusieurs covariables dans son modèle de régression, une ANOVA simple à un facteur n’a pas d’équivalence directe. Dans ce cas, on augmente l'information utilisée pour calculer la réponse moyenne de la régression linéaire avec des informations qui ne sont pas directement disponibles pour une ANOVA à un facteur. Je crois que l'on peut ré-exprimer les choses en termes d'ANOVA une fois de plus, mais il s'agit surtout d'un exercice académique.
Un article intéressant à ce sujet est le document de Gelman de 2005 intitulé: Analyse de la variance - Pourquoi il est plus important que jamais . Quelques points importants soulevés; Je ne suis pas totalement en faveur du document (je pense personnellement aligner beaucoup plus avec le point de vue de McCullach) mais cela peut être une lecture constructive.
Pour terminer, le graphique s’épaissit lorsque vous avez des modèles à effets mixtes . Vous avez des concepts différents sur ce qui peut être considéré comme une nuisance ou des informations réelles concernant le regroupement de vos données. Ces questions sortent du cadre de cette question mais je pense qu’elles méritent un signe de tête.
Permettez-moi de mettre un peu de couleur dans l’idée que les MLS avec des régresseurs catégoriels ( codés factices ) sont équivalents aux facteurs de la ANOVA. Dans les deux cas, il existe des niveaux (ou des groupes dans le cas de l'ANOVA).
Dans la régression MCO, il est très courant d'avoir également des variables continues dans les régresseurs. Celles-ci modifient logiquement la relation dans le modèle d'ajustement entre les variables catégorielles et la variable dépendante (DC). Mais pas au point de rendre le parallèle méconnaissable.
Sur la
mtcars
base de l'ensemble de données, nous pouvons tout d'abord visualiser le modèlelm(mpg ~ wt + as.factor(cyl), data = mtcars)
comme la pente déterminée par la variable continuewt
(poids), puis par les différentes conversations interceptées projetant l'effet de la variable catégoriellecylinder
(quatre, six ou huit cylindres). C’est cette dernière partie qui constitue un parallèle avec une ANOVA à un facteur.Voyons cela graphiquement sur la sous-parcelle à droite (les trois sous-parcelles à gauche sont incluses à des fins de comparaison côte à côte avec le modèle ANOVA décrit immédiatement après):
Chaque moteur cylindrique est codé par couleur et la distance entre les lignes ajustées avec des interceptions différentes et le nuage de données est équivalente à la variation intra-groupe dans une ANOVA. Notez que les interceptions dans le modèle OLS avec une variable continue (
weight
) ne sont pas mathématiquement identiques à la valeur des différentes moyennes intra-groupe dans ANOVA, en raison de l'effet deweight
et des différentes matrices de modèle (voir ci-dessous): la moyennempg
de voitures 4 cylindres, par exemple, estmean(mtcars$mpg[mtcars$cyl==4]) #[1] 26.66364
, alors que l'OLS « base » interception (reflétant par conventioncyl==4
( le plus bas pour les plus en R chiffres ordonnant)) est nettement différent:summary(fit)$coef[1] #[1] 33.99079
. La pente des lignes est le coefficient de la variable continueweight
.Si vous essayez de supprimer l'effet
weight
en redressant mentalement ces lignes et en les ramenant à la ligne horizontale, vous obtiendrez le tracé ANOVA du modèleaov(mtcars$mpg ~ as.factor(mtcars$cyl))
sur les trois sous-tracés à gauche. Leweight
régresseur est maintenant sorti, mais la relation entre les points et les différentes conversations interceptées est globalement préservée - nous faisons simplement une rotation dans le sens inverse des aiguilles d'une montre et étalons les tracés qui se chevauchaient auparavant pour chaque niveau différent (encore une fois, comme un moyen visuel de "voir" la connexion, pas comme une égalité mathématique, car nous comparons deux modèles différents!).cylinder
Et c’est grâce à la somme de ces segments verticaux que nous pouvons calculer manuellement les résidus:
Le résultat:
SumSq = 301.2626
etTSS - SumSq = 824.7846
. Comparer aux:Exactement le même résultat que de tester avec une ANOVA le modèle linéaire avec uniquement le catégorique
cylinder
comme régresseur:Nous voyons donc que les résidus - la partie de la variance totale non expliquée par le modèle - ainsi que la variance sont les mêmes, que vous appeliez une MCO de type
lm(DV ~ factors)
ou une ANOVA (aov(DV ~ factors)
): lorsque nous supprimons la modèle de variables continues nous nous retrouvons avec un système identique. De même, lorsque nous évaluons les modèles globalement ou sous la forme d'une ANOVA omnibus (pas de niveau par niveau), nous obtenons naturellement la même valeur pF-statistic: 39.7 on 2 and 29 DF, p-value: 4.979e-09
.Cela ne veut pas dire que le test de niveaux individuels produira des valeurs de p identiques. Dans le cas de MCO, nous pouvons invoquer
summary(fit)
et obtenir:p adjusted
En fin de compte, rien n’est plus rassurant que de jeter un coup d’œil sur le moteur sous le capot, qui n’est autre que les matrices du modèle et les projections dans l’espace des colonnes. Celles-ci sont en réalité assez simples dans le cas d'une ANOVA:
cyl 4
cyl 6
cyl 8
Par ailleurs, la matrice de modèle pour une régression OLS est la suivante:
weight
displacement
lm(mpg ~ wt + as.factor(cyl), data = mtcars)
weight
weight
cyl 4
cyl 4
cyl 6
cyl 8
la source
Antoni Parellada et USP11852 avaient une très bonne réponse. Je vais répondre à votre question pour la perspective de codage avec
R
.En fait, nous pouvons
aov
fonctionner dansR
peut être utilisé commelm
. Voici quelques exemples.Comme vous pouvez le constater, non seulement nous pouvons obtenir un coefficient à partir du modèle ANOVA, mais nous pouvons également l’utiliser pour la prévision, tout comme pour le modèle linéaire.
Si nous vérifions la
aov
fonction du fichier d’aide, cela indiquela source
Si nous prenons toutes les entrées de données et les organisons dans une seule colonne Y, le reste des colonnes étant des variables indicatrices 1 {les données sont un élément de la jième colonne de la configuration originale de anova}, puis en prenant une régression linéaire simple de Y on Dans les autres colonnes (par exemple, la colonne B), vous devez obtenir les mêmes statistiques de test DF, SS, MS et F que dans votre problème ANOVA.
Ainsi, l'ANOVA peut être "traitée comme" une régression linéaire en écrivant les données avec des variables binaires. Notez également que le coefficient de régression pour, par exemple, une régression de Y sur B doit être identique à celui de moy. de la colonne B, calculée avec les données d'origine.
la source