Je vais donner mes exemples avec les appels R. D'abord un exemple simple de régression linéaire avec une variable dépendante «durée de vie» et deux variables explicatives continues.
data.frame(height=runif(4000,160,200))->human.life
human.life$weight=runif(4000,50,120)
human.life$lifespan=sample(45:90,4000,replace=TRUE)
summary(lm(lifespan~1+height+weight,data=human.life))
Call:
lm(formula = lifespan ~ 1 + height + weight, data = human.life)
Residuals:
Min 1Q Median 3Q Max
-23.0257 -11.9124 -0.0565 11.3755 23.8591
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 63.635709 3.486426 18.252 <2e-16 ***
height 0.007485 0.018665 0.401 0.6884
weight 0.024544 0.010428 2.354 0.0186 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 13.41 on 3997 degrees of freedom
Multiple R-squared: 0.001425, Adjusted R-squared: 0.0009257
F-statistic: 2.853 on 2 and 3997 DF, p-value: 0.05781
Afin de trouver l'estimation de la «durée de vie» lorsque la valeur de «poids» est 1, j'ajoute (Intercept) + hauteur = 63,64319
Maintenant, que se passe-t-il si j'ai une trame de données similaire, mais une où une des variables explicatives est catégorique?
data.frame(animal=rep(c("dog","fox","pig","wolf"),1000))->animal.life
animal.life$weight=runif(4000,8,50)
animal.life$lifespan=sample(1:10,replace=TRUE)
summary(lm(lifespan~1+animal+weight,data=animal.life))
Call:
lm(formula = lifespan ~ 1 + animal + weight, data = animal.life)
Residuals:
Min 1Q Median 3Q Max
-4.7677 -2.7796 -0.1025 3.1972 4.3691
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.565556 0.145851 38.159 < 2e-16 ***
animalfox 0.806634 0.131198 6.148 8.6e-10 ***
animalpig 0.010635 0.131259 0.081 0.9354
animalwolf 0.806650 0.131198 6.148 8.6e-10 ***
weight 0.007946 0.003815 2.083 0.0373 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.933 on 3995 degrees of freedom
Multiple R-squared: 0.01933, Adjusted R-squared: 0.01835
F-statistic: 19.69 on 4 and 3995 DF, p-value: 4.625e-16
Dans ce cas, pour trouver l'estimation de la `` durée de vie '' lorsque la valeur de `` poids '' est 1, dois-je ajouter chacun des coefficients pour `` animal '' à l'interception: (Interception) + animalfox + animalpig + animalwolf? Ou quelle est la bonne façon de procéder?
Merci Sverre
code
, indentation de 4 espaces.code
ligne complète , utilisez des astuces:this is code with a $ and *
set.seed(1)
(ou le nombre que vous voulez) avant d'exécuter la génération de nombres aléatoires, de sorte que tout le monde obtienne exactement les mêmes résultats que vous (mais cela n'a pas beaucoup d'importance dans ce cas, cependant).Réponses:
Non, vous ne devez pas additionner tous les coefficients ensemble. Vous avez essentiellement le modèle
où, par exemple,pig=1 si l'animal était un porc et 0 sinon. Donc, pour calculerβ0+β1+β2+β3+β4 comme vous l'avez suggéré pour obtenir la moyenne globale lorsque weight=1 c'est comme dire "si vous étiez un cochon, un loup et un renard, et que votre poids était de 1, quelle est votre durée de vie prévue?". Il est clair que chaque animal n'est qu'une de ces choses, cela n'a pas beaucoup de sens.
Vous devrez le faire séparément pour chaque animal. Par exemple,β0+β2+β4 est la durée de vie attendue d'un porc lorsque son poids est de 1.
la source
La chose la plus simple à faire est d'utiliser la fonction de prédiction sur l'objet lm, puis de gérer de nombreux détails comme la conversion d'un facteur aux bonnes valeurs à additionner. Si vous essayez de comprendre les éléments qui entrent dans la prédiction, définissez-le
type='terms'
et il montrera les éléments individuels qui s'ajoutent pour faire votre prédiction.Notez également que la façon dont un facteur est converti en variables dépend de certaines options, la valeur par défaut choisira un groupe de référence pour comparer les autres groupes, mais vous pouvez également le définir sur une moyenne et des différences par rapport à cette moyenne (ou d'autres comparaisons d'intérêt) .
la source
Si vous voulez la durée de vie moyenne lorsque le poids est de 1, vous pouvez simplement supprimer "animal" dans cet appel:
la source