Dans cette expérience, quatre régimes différents ont été essayés sur des animaux. Ensuite, les chercheurs ont mesuré leurs effets sur le temps de coagulation sanguine.
coagulation$x1 <- 1*(coagulation$diet=="B") coagulation$x2 <- 1*(coagulation$diet=="C") coagulation$x3 <- 1*(coagulation$diet=="D") modelSummary <- lm(coag~1+x1+x2+x3, data=coagulation)
J'essaie d'ajuster un modèle linéaire pour le régime coag ~ en utilisant la fonction lm dans R Les résultats doivent ressembler à ce qui suit:
> modelSummary$coefficients
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.100000e+01 1.183216 5.155441e+01 9.547815e-23
dietB 5.000000e+00 1.527525 3.273268e+00 3.802505e-03
dietC 7.000000e+00 1.527525 4.582576e+00 1.805132e-04
dietD -1.071287e-14 1.449138 -7.392579e-15 1.000000e+00
Jusqu'à présent, mon code ne ressemble pas aux résultats:
## Data :
coag diet
1 62 A
2 60 A
3 63 A
4 59 A
5 63 B
6 67 B
7 71 B
8 64 B
9 65 B
10 66 B
11 68 C
12 66 C
13 71 C
14 67 C
15 68 C
16 68 C
17 56 D
18 62 D
19 60 D
20 61 D
21 63 D
22 64 D
23 63 D
24 59 D
3 Réponses :
Cette présentation est une propriété de summary (modelSummary) (classe summary.lm ), et non de modelSummary (classe lm ).summary(modelSummary)$coefficients
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 6.100000e+01 1.183216 5.155441e+01 9.547815e-23
# x1 5.000000e+00 1.527525 3.273268e+00 3.802505e-03
# x2 7.000000e+00 1.527525 4.582576e+00 1.805132e-04
# x3 2.991428e-15 1.449138 2.064281e-15 1.000000e+00
"régime" est une variable de caractère et est traitée comme un facteur. Vous pouvez donc omettre le codage factice et faire simplement:
summary(lm(coag ~ diet, data=coagulation))$coefficients # Estimate Std. Error t value Pr(>|t|) # (Intercept) 6.100000e+01 1.183216 5.155441e+01 9.547815e-23 # dietB 5.000000e+00 1.527525 3.273268e+00 3.802505e-03 # dietC 7.000000e+00 1.527525 4.582576e+00 1.805132e-04 # dietD 2.991428e-15 1.449138 2.064281e-15 1.000000e+00
Même si "diet" était une variable numérique et que vous voulez que R la traite plutôt comme une catégorie catégorique qu'une variable continue, aucun codage factice n'est nécessaire, il suffit de l'ajouter comme + facteur (régime) dans la formule.
Comme vous le voyez, aussi 1 + est redondant car lm calcule le (Intercept) par défaut. Pour omettre l'interception, vous pouvez faire 0 + (ou - 1 ).
Vous pouvez également envisager de coder régime de cette manière
coagulation$diet <- factor(coagulation$diet)
modelSummary<-lm(coag~diet,coagulation)
summary(modelSummary)
Call:
lm(formula = coag ~ diet, data = coagulation)
Residuals:
Min 1Q Median 3Q Max
-5.00 -1.25 0.00 1.25 5.00
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.100e+01 1.183e+00 51.554 < 2e-16 ***
dietB 5.000e+00 1.528e+00 3.273 0.003803 **
dietC 7.000e+00 1.528e+00 4.583 0.000181 ***
dietD 2.991e-15 1.449e+00 0.000 1.000000
---
Signif. codes: 0 â***â 0.001 â**â 0.01 â*â 0.05 â.â 0.1 â â 1