[英]Fit linear model in R for various values
In this experiment, four different diets were tried on animals.在这个实验中,在动物身上尝试了四种不同的饮食。 Then researchers measured their effects on blood coagulation time.然后研究人员测量了它们对血液凝固时间的影响。
## 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
I am trying to fit a linear model for coag~diet by using the function lm in R Results should look like the following:我正在尝试通过在 R 中使用 function lm 来为 coag~diet 拟合线性 model 结果应如下所示:
> 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
My code thus far does not look like results:到目前为止,我的代码看起来不像结果:
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)
"diet"
is a character variable and is treated as a factor. "diet"
是一个字符变量,被视为一个因素。 So you may leave out the dummy coding and just do:因此,您可以省略虚拟编码,只需执行以下操作:
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
Even if "diet"
were a numeric variable and you want R to treat it as a categorical rather than a continuous variable no dummy coding is needed, you would just add it as + factor(diet)
into the formula.即使"diet"
是一个数字变量,并且您希望 R 将其视为分类变量而不是连续变量,也不需要虚拟编码,您只需将其作为+ factor(diet)
添加到公式中。
As you see, also 1 +
is redundant since lm
calculates the (Intercept)
by default.如您所见, 1 +
也是多余的,因为lm
默认计算(Intercept)
。 To omit the intercept, you may do 0 +
(or - 1
).要省略截距,您可以执行0 +
(或- 1
)。
That presentation is a property of summary(modelSummary)
(class summary.lm
), not modelSummary
(class lm
).该演示文稿是summary(modelSummary)
(类summary.lm
)的属性,而不是modelSummary
(类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
You may also consider coding diet
in this manner您也可以考虑以这种方式编码diet
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.