User7598
User7598

Reputation: 1678

Select regression coefs by name

After running a regression, how can I select the variable name and corresponding parameter estimate?

For example, after running the following regression, I obtain:

set.seed(1)
n=1000
x=rnorm(n,0,1)
y=.6*x+rnorm(n,0,sqrt(1-.6)^2)
(reg1=summary(lm(y~x)))

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.2994 -0.2688 -0.0055  0.3022  1.4577 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.006475   0.013162  -0.492    0.623    
x            0.602573   0.012723  47.359   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4162 on 998 degrees of freedom
Multiple R-squared:  0.6921,    Adjusted R-squared:  0.6918 
F-statistic:  2243 on 1 and 998 DF,  p-value: < 2.2e-16

I would like to be able to select the coefficient by the variable names (e.g., (Intercept) -0.006475)

I have tried the following but nothing works...

attr(reg1$coefficients,"terms")
names(reg1$coefficients) 

Note: This works reg1$coefficients[1,1] but I want to be able to call it by the name rather than row / column.

Upvotes: 0

Views: 427

Answers (2)

r.bot
r.bot

Reputation: 5424

The package broom tidies a lot of regression models very nicely.

require(broom)
set.seed(1)
n=1000
x=rnorm(n,0,1)
y=.6*x+rnorm(n,0,sqrt(1-.6)^2)
model = lm(y~x)
tt <- tidy(model, conf.int=TRUE)

subset(tt,term=="x")
##   term estimate  std.error statistic       p.value  conf.low conf.high
## 2    x 0.602573 0.01272349  47.35908 1.687125e-257 0.5776051 0.6275409

with(tt,tt[term=="(Intercept)","estimate"])
## [1] -0.006474794

Upvotes: 2

Mark
Mark

Reputation: 4537

So, your code doesn't run the way you have it. I changed it a bit:

set.seed(1)
n=1000
x=rnorm(n,0,1)
y=.6*x+rnorm(n,0,sqrt(1-.6)^2)
model = lm(y~x)

Now, I can call coef(model)["x"] or coef(model)["(Intercept)"] and get the values.

> coef(model)["x"]
       x 
0.602573 
> coef(model)["(Intercept)"]
 (Intercept) 
-0.006474794 

Upvotes: 1

Related Questions