【问题标题】:Extracting coefficients from a regression 1 model with 1 predictor从具有 1 个预测变量的回归 1 模型中提取系数
【发布时间】:2015-07-08 13:31:19
【问题描述】:

我目前有以下回归模型:

> print(summary(step1))

Call:
lm(formula = model1, data = newdat1)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.53654 -0.02423 -0.02423 -0.02423  1.71962 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   0.3962     0.0532   7.446 2.76e-12 ***
i2            0.6281     0.0339  18.528  < 2e-16 ***

我只想将以下内容作为数据框返回:

            Estimate Std. Error t value Pr(>|t|)
i2            0.6281     0.0339  18.528  < 2e-16

我目前有以下代码:

> results1<-as.data.frame(summary(step1)$coefficients[-1,drop=FALSE])

产量:

> results1
  summary(step1)$coefficients[-1, drop = FALSE]
1                                  6.280769e-01
2                                  5.320108e-02
3                                  3.389873e-02
4                                  7.446350e+00
5                                  1.852804e+01
6                                  2.764836e-12
7                                  2.339089e-45

这不是我想要的;但是,当预测变量超过 1 个时,它确实有效。

【问题讨论】:

  • 你少了一个逗号,试试summary(step1)$coefficients[-1,,drop=FALSE]你也可以使用coef函数顺便说一句。
  • 效果很好,但是如何使用 coef 函数呢?
  • 看 Bens 的回答,我会同意的。

标签: r regression


【解决方案1】:

如果你能给出一个可重现的例子就好了。我想你正在寻找

cc <- coef(summary(step1))[2,,drop=FALSE]
as.data.frame(cc)

使用诸如coef(summary(.)) 而不是summary(.)$coefficients 之类的访问器既更漂亮也更健壮(不能保证summary() 的内部结构将保持不变——尽管不可否认,这个基本部分不太可能是R 很快就会改变,尤其是许多用户可能使用过 $coefficients 等结构。

按名称索引行,即

coef(summary(step1))["i2",,drop=FALSE]

可能会更好。

【讨论】:

  • coef 函数运行良好,但我不能按名称指定行或项目,因为这需要自动化,并且这些名称会经常更改。不过谢谢!
【解决方案2】:

summary(step1)$coefficients 是一个矩阵。当你用[-1, drop=FALSE] 取出第一个元素时,它会被转换为一个向量,这就是为什么你会得到 7 个数字而不是你想要的行。

> set.seed(123)
> x <- rnorm(100)
> y <- -1 + 0.2*x + rnorm(100)
> step1 <- lm(y ~ x)
> class(summary(step1)$coefficients)
[1] "matrix"
> class(summary(step1)$coefficients[-1, drop=FALSE])
[1] "numeric"

解决方案是使用[ 更改子集,以便您指定要保留所有列(请参阅?`[`):

> summary(step1)$coefficients[-1, , drop=FALSE]
   Estimate Std. Error  t value  Pr(>|t|)
 x 0.1475284  0.1068786 1.380336 0.1706238

【讨论】:

  • 或者使用访问器函数coef(),正如 Ben 在他的回答中指出的那样。
  • 我开始写答案时没有看到你的评论,我的错。
  • @DavidArenburg 是的,我知道请提交您的初始评论作为答案。感谢其他所有人提供更多信息。
猜你喜欢
  • 2021-09-25
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
  • 2017-09-19
  • 2019-10-01
  • 2020-06-26
  • 2019-03-27
相关资源
最近更新 更多