Permettez-moi de vous donner un exemple simple pour expliquer le concept, puis nous pourrons le comparer à vos coefficients.
Notez qu'en incluant à la fois la variable fictive "A / B" et le terme d'interaction, vous donnez effectivement à votre modèle la flexibilité de s'adapter à une interception (en utilisant le modèle) et une pente (en utilisant l'interaction) différentes sur les données "A" et les données "B". Dans ce qui suit, peu importe si l'autre prédicteurXest une variable continue ou, comme dans votre cas, une autre variable fictive. Si je parle en termes d '"interception" et de "pente", cela peut être interprété comme "niveau lorsque le mannequin est nul" et "changement de niveau lorsque le mannequin est changé de0 à 1" si tu préfères.
Supposons que le modèle ajusté OLS sur les seules données "A" soit y^= 12 + 5 x et sur les seules données "B" est y^= 11 + 7 x. Les données peuvent ressembler à ceci:
Supposons maintenant que nous prenons "A" comme niveau de référence et utilisons une variable fictive b pour que b = 1 pour les observations du groupe B mais b = 0 dans le groupe A. Le modèle ajusté sur l'ensemble de données est
y^je=β^0+β^1Xje+β^2bje+β^3Xjebje
Pour les observations du groupe A, nous avons y^je=β^0+β^1Xje et nous pouvons minimiser leur somme des résidus carrés en définissant β^0= 12 et β^1= 5. Pour les données du groupe B,y^je= (β^0+β^2) + (β^1+β^3)Xje et nous pouvons minimiser leur somme de résidus carrés en prenant β^0+β^2= 11 et β^1+β^3= 7. Il est clair que nous pouvons minimiser la somme des résidus au carré dans la régression globale en minimisant les sommes pour les deux groupes, et que cela peut être réalisé en définissantβ^0= 12 et β^1= 5 (du groupe A) et β^2= - 1 et β^3= 2(puisque les données "B" devraient avoir une interception inférieure et une pente supérieure). Observez comment la présence d'un terme d'interaction était nécessaire pour que nous ayons une flexibilité suffisante pour minimiser la somme des résidus au carré pour les deux groupes à la fois . Mon modèle ajusté sera:
y^je= 12 + 5Xje- 1bje+ 2Xjebje
Basculez tout autour pour que "B" soit le niveau de référence et une est une variable fictive codant pour le groupe A. Pouvez-vous voir que je dois maintenant adapter le modèle
y^je= 11 + 7Xje+ 1uneje- 2Xjeuneje
Autrement dit, je prends l'interception (11) et pente (7) de mon groupe de référence «B», et utilisez le terme fictif et d'interaction pour les ajuster pour mon groupe «A». Ces ajustements sont cette fois en sens inverse (j'ai besoin d'une interception plus haute et d'une pente deux plus bas ) donc les signes sont inversés par rapport à quand j'ai pris "A" comme groupe de référence, mais il devrait être clair pourquoi les autres coefficients ont pas simplement changé de signe.
Comparons cela à votre sortie. Dans une notation similaire à celle ci-dessus, votre premier modèle ajusté avec la ligne de base "A" est:
y^je= 100,7484158 + 0,9030541bje- 0.8693598Xje+ 0.8709116Xjebje
Votre deuxième modèle équipé avec la ligne de base "B" est:
y^je= 101,651469922 - 0,903054145uneje+ 0,001551843Xje- 0.870911601Xjeuneje
Tout d'abord, vérifions que ces deux modèles vont donner les mêmes résultats. Mettonsbje= 1 -uneje dans la première équation, et on obtient:
y^je= 100,7484158 + 0,9030541 ( 1 -uneje) - 0,8693598Xje+ 0.8709116Xje( 1 -uneje)
Cela simplifie:
y^je= ( 100,7484158 + 0,9030541 ) - 0,9030541uneje+ ( - 0,8693598 + 0,8709116 )Xje- 0.8709116Xjeuneje
Un peu d'arithmétique confirme que c'est la même chose que le deuxième modèle ajusté; en outre, il devrait maintenant être clair quels coefficients ont changé de signe et quels coefficients ont simplement été ajustés à l'autre référence!
Deuxièmement, voyons quels sont les différents modèles équipés sur les groupes "A" et "B". Votre premier modèle donne immédiatementy^je= 100,7484158 - 0,8693598Xje pour le groupe "A", et votre deuxième modèle donne immédiatement y^je= 101,651469922 + 0,001551843Xjepour le groupe "B". Vous pouvez vérifier que le premier modèle donne le résultat correct pour le groupe "B" en remplaçantbje= 1dans son équation; l'algèbre, bien sûr, fonctionne de la même manière que l'exemple plus général ci-dessus. De même, vous pouvez vérifier que le deuxième modèle donne le résultat correct pour le groupe "A" en définissantuneje= 1.
Troisièmement, étant donné que dans votre cas, l'autre régresseur était également une variable fictive, je vous suggère de calculer les moyennes conditionnelles ajustées pour les quatre catégories ("A" avec x = 0, "A" avec x = 1, "B" avec x = 0, "B" avec x = 1) sous les deux modèles et vérifiez que vous comprenez pourquoi ils sont d'accord. À strictement parler, cela n'est pas nécessaire, car nous avons déjà effectué l'algèbre plus générale ci-dessus pour montrer que les résultats seront cohérents même siXest continu , mais je pense que cela reste un exercice précieux. Je ne remplirai pas les détails car l'arithmétique est simple et plus conforme à l'esprit de la très belle réponse de JonB. Un point clé à comprendre est que, quel que soit le groupe de référence que vous utilisez, votre modèle a suffisamment de flexibilité pour s'adapter séparément à chaque moyenne conditionnelle. (C'est là que cela fait une différence que votreX est un mannequin pour un facteur binaire plutôt que pour une variable continue - avec des prédicteurs continus, nous ne nous attendons généralement pas à la moyenne conditionnelle estimée y^ pour faire correspondre la moyenne de l'échantillon pour chaque combinaison de prédicteurs observée.) Calculez la moyenne de l'échantillon pour chacune de ces quatre combinaisons de catégories, et vous devriez trouver qu'elles correspondent à vos moyennes conditionnelles ajustées.
Code R pour tracer le tracé et explorer les modèles ajustés, prévu y^ et groupe signifie
#Make data set with desired conditional means
data.df <- data.frame(
x = c(0,0,0, 1,1,1, 0,0,0, 1,1,1),
b = c(0,0,0, 0,0,0, 1,1,1, 1,1,1),
y = c(11.8,12,12.2, 16.8,17,17.2, 10.8,11,11.2, 17.8,18,18.2)
)
data.df$a <- 1 - data.df$b
baselineA.lm <- lm(y ~ x * b, data.df)
summary(baselineA.lm) #check this matches y = 12 + 5x - 1b + 2xb
baselineB.lm <- lm(y ~ x * a, data.df)
summary(baselineB.lm) #check this matches y = 11 + 7x + 1a - 2xa
fitted(baselineA.lm)
fitted(baselineB.lm) #check the two models give the same fitted values for y...
with(data.df, tapply(y, interaction(x, b), mean)) #...which are the group sample means
colorSet <- c("red", "blue")
symbolSet <- c(19,17)
with(data.df, plot(x, y, yaxt="n", col=colorSet[b+1], pch=symbolSet[b+1],
main="Response y against other predictor x",
panel.first = {
axis(2, at=10:20)
abline(h = 10:20, col="gray70")
abline(v = 0:1, col="gray70")
}))
abline(lm(y ~ x, data.df[data.df$b==0,]), col=colorSet[1])
abline(lm(y ~ x, data.df[data.df$b==1,]), col=colorSet[2])
legend(0.1, 17, c("Group A", "Group B"), col = colorSet,
pch = symbolSet, bg = "gray95")