从具有 1 个预测变量的回归 1 模型中提取系数
Extracting coefficients from a regression 1 model with 1 predictor
我目前有以下回归模型:
> 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 个预测变量时它确实有效。
如果你能给出一个可重现的例子就好了。我想你正在寻找
cc <- coef(summary(step1))[2,,drop=FALSE]
as.data.frame(cc)
使用 coef(summary(.))
之类的访问器比 summary(.)$coefficients
更漂亮也更健壮(不能保证 summary()
的内部结构会保持不变——尽管不可否认R 的这一基本部分不太可能很快发生变化,尤其是因为许多用户可能 已经 使用了像 $coefficients
).
这样的结构
按名称索引行,即
coef(summary(step1))["i2",,drop=FALSE]
可能会更好。
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
我目前有以下回归模型:
> 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 个预测变量时它确实有效。
如果你能给出一个可重现的例子就好了。我想你正在寻找
cc <- coef(summary(step1))[2,,drop=FALSE]
as.data.frame(cc)
使用 coef(summary(.))
之类的访问器比 summary(.)$coefficients
更漂亮也更健壮(不能保证 summary()
的内部结构会保持不变——尽管不可否认R 的这一基本部分不太可能很快发生变化,尤其是因为许多用户可能 已经 使用了像 $coefficients
).
按名称索引行,即
coef(summary(step1))["i2",,drop=FALSE]
可能会更好。
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