【发布时间】:2014-12-14 22:38:21
【问题描述】:
关于使用 lm 函数在 R 中进行线性回归的简短问题。我注意到在函数中使用 summary 命令时输出不同。
当我进入时:
model1 <- lm (PostVal_Ave ~ Int)
summary(model1)
控制台返回如下:
Call:
lm(formula = PostVal_Ave ~ Int)
Residuals:
Min 1Q Median 3Q Max
-3.9871 -0.8897 0.4853 1.0129 1.5129
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.4871 0.1426 38.491 <2e-16
Int 0.2776 0.1988 1.396 0.164
(Intercept) ***
Int
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.322 on 175 degrees of freedom
(35 observations deleted due to missingness)
Multiple R-squared: 0.01102, Adjusted R-squared: 0.005366
F-statistic: 1.949 on 1 and 175 DF, p-value: 0.1644
但是,当编写一个函数以便能够为多个模型生成输出并能够为多个因变量生成结果时,我输入:
allModels <- function(x){
model2 <- lm (x ~ Int)
model2.1 <- lm (x ~ Int + cPreEff)
model2.2 <- lm (x ~ Int + cPreEff + Gender + Grade)
return(c(summary(model1), summary(model1.1), summary(model1.2)))}
与模型 1 的输出相比,我得到了相同的输出,但是这三个模型(模型 2、模型 2.1 和模型 2.2)有很多额外的输出。具体来说,输出包含三个模型中每一个的每个案例的残差,以及关于每个缺少数据的案例的信息。建议将不胜感激。谢谢。
【问题讨论】:
-
那么这里的问题到底是什么?请注意,
lm()返回一个“lm”类的对象,而该对象上的summary()会生成一个“summary.lm”对象。有自定义的print.lm()和print.summary.lm()对象。因此,打印到控制台的内容可能与对象本身的内容不同。当您手动连接 (c()) 两个 summary.lm 对象时,整个列表将失去其类别。您可能希望返回对象列表return(list(summary(model1), summary(model1.1), summary(model1.2))) -
谢谢 - 返回一个对象列表就可以了。
标签: r linear-regression lm