在R中为各种值拟合线性模型

在R中为各种值拟合线性模型,r,linear-regression,anova,oneway,R,Linear Regression,Anova,Oneway,在这个实验中,在动物身上尝试了四种不同的饮食。然后研究人员测量了它们对血液凝固时间的影响 ## 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

在这个实验中,在动物身上尝试了四种不同的饮食。然后研究人员测量了它们对血液凝固时间的影响

 ## 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
我试图用R中的lm函数拟合coag~饮食的线性模型 结果应如下所示:

> 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
到目前为止,我的代码看起来不像结果:

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)

summary$x1该演示文稿是
summary(modelsummmary)
(class
summary.lm
)的属性,而不是
modelsummmary
(class
lm

summary(modelsummmary)$系数
#估计标准误差t值Pr(>t)
#(截距)6.100000e+01 1.183216 5.155441e+01 9.547815e-23
#x1 5.000000 E+00 1.527525 3.273268e+00 3.802505e-03
#x2 7.000000 E+00 1.527525 4.582576e+00 1.805132e-04
#x3 2.991428e-15 1.449138 2.064281e-15 1.000000 E+00

该演示文稿是
摘要(modelSummary)
(class
summary.lm
)的属性,而不是
modelSummary
(class
lm

summary(modelsummmary)$系数
#估计标准误差t值Pr(>t)
#(截距)6.100000e+01 1.183216 5.155441e+01 9.547815e-23
#x1 5.000000 E+00 1.527525 3.273268e+00 3.802505e-03
#x2 7.000000 E+00 1.527525 4.582576e+00 1.805132e-04
#x3 2.991428e-15 1.449138 2.064281e-15 1.000000 E+00
“饮食”
是一个字符变量,被视为一个因子。因此,您可以省略虚拟编码,只需执行以下操作:

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
即使
“diet”
是一个数值变量,您希望R将其视为一个分类变量而不是一个连续变量,也不需要伪编码,您只需将其作为
+因子(diet)
添加到公式中即可

如您所见,
1+
也是冗余的,因为默认情况下
lm
计算
(截距)
。要省略截取,可以执行
0+
(或
-1
)。

“diet”
是一个字符变量,被视为一个因子。因此,您可以省略虚拟编码,只需执行以下操作:

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
即使
“diet”
是一个数值变量,您希望R将其视为一个分类变量而不是一个连续变量,也不需要伪编码,您只需将其作为
+因子(diet)
添加到公式中即可


如您所见,
1+
也是冗余的,因为默认情况下
lm
计算
(截距)
。为了省略拦截,您可以执行<代码> 0 + <代码>(或<代码> -1代码>代码> >您也可以考虑编码<代码>饮食< /代码>以这种方式

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

<代码>凝血-饮食> P>也可以考虑编码<代码>饮食< /代码>以这种方式< /P>
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
凝固$diet