如何从一个简单的线性回归模型中提取p值(单个解释变量的系数的显著性为非零)和r平方值?例如……
x = cumsum(c(0, runif(100, -1, +1)))
y = cumsum(c(0, runif(100, -1, +1)))
fit = lm(y ~ x)
summary(fit)
我知道summary(fit)显示了p值和r平方值,但我希望能够将它们插入到其他变量中。
如何从一个简单的线性回归模型中提取p值(单个解释变量的系数的显著性为非零)和r平方值?例如……
x = cumsum(c(0, runif(100, -1, +1)))
y = cumsum(c(0, runif(100, -1, +1)))
fit = lm(y ~ x)
summary(fit)
我知道summary(fit)显示了p值和r平方值,但我希望能够将它们插入到其他变量中。
当前回答
通过调用str(summary(fit))可以看到summary()返回的对象的结构。每个片段都可以使用$访问。F统计量的p值更容易从方差分析返回的对象中得到。
简单地说,你可以这样做:
rSquared <- summary(fit)$r.squared
pVal <- anova(fit)$'Pr(>F)'[1]
其他回答
@Vincent回答的延伸:
对于lm()生成的模型:
summary(fit)$coefficients[,4] ##P-values
summary(fit)$r.squared ##R squared values
对于gls()生成的模型:
summary(fit)$tTable[,4] ##P-values
##R-squared values are not generated b/c gls uses max-likelihood not Sums of Squares
为了隔离单独的p值本身,你需要在代码中添加一个行号:
例如,要访问两个模型摘要中截距的p值:
summary(fit)$coefficients[1,4]
summary(fit)$tTable[1,4]
注意,你可以在上面的每个实例中用列名替换列号: 总结(适合)$系数[1,“公关(> | t |)“# # lm 总结(适合)$ tTable[1,“假定值 "] ## gl
如果你仍然不确定如何从汇总表中访问一个值,使用str()来找出汇总表的结构:
str(summary(fit))
我在探索类似问题的建议解决方案时遇到了这个问题;我认为,为了将来的参考,它可能是值得更新可用的答案列表与解决方案利用扫帚包。
示例代码
x = cumsum(c(0, runif(100, -1, +1)))
y = cumsum(c(0, runif(100, -1, +1)))
fit = lm(y ~ x)
require(broom)
glance(fit)
结果
>> glance(fit)
r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC deviance df.residual
1 0.5442762 0.5396729 1.502943 118.2368 1.3719e-18 2 -183.4527 372.9055 380.7508 223.6251 99
一边笔记
我发现glance函数很有用,因为它简洁地总结了关键值。结果被存储为data.frame,这使得进一步的操作很容易:
>> class(glance(fit))
[1] "data.frame"
对于summary()末尾显示的最终p值,该函数使用pf()从summary(fit)$fstatistic值中计算。
fstat <- summary(fit)$fstatistic
pf(fstat[1], fstat[2], fstat[3], lower.tail=FALSE)
来源:[1],[2]
使用:
(summary(fit))$coefficients[***num***,4]
其中num是一个数字,表示系数矩阵的行。这取决于你的模型中有多少特征,以及你想为哪一个提取p值。例如,如果你只有一个变量,那么截距的p值将是[1,4],下一个是你的实际变量的p值将是[2,4]。所以你的num是2。
x = cumsum(c(0, runif(100, -1, +1)))
y = cumsum(c(0, runif(100, -1, +1)))
fit = lm(y ~ x)
> names(summary(fit))
[1] "call" "terms"
[3] "residuals" "coefficients"
[5] "aliased" "sigma"
[7] "df" "r.squared"
[9] "adj.r.squared" "fstatistic"
[11] "cov.unscaled"
summary(fit)$r.squared