在lm对象R中查找预测变量

时间:2017-04-22 18:39:15

标签: r object lm

我在R

中有一个线性模型
 x <- lm(dist ~ poly(speed, degree=2), data = cars)

并希望了解,

a)汽车的哪些变量用作模型中的预测变量。在这里:&#34;速度&#34;

b)如何在模型对象中访问它们。这里:4 4 7 7 8 9 10 ...

model.frame包含已经转换的术语,但没有帮助。 lm对象包含数据,因为expand.model.frame(x,~speed)确实有效。但它在哪里?

任何提示?

2 个答案:

答案 0 :(得分:1)

要获取变量列表,您可以使用all.vars

all.vars(formula(x))
[1] "dist"  "speed"

仅获取预测变量:

formula(x)[[3]]
poly(speed, degree = 2)
all.vars(formula(x)[[3]]) # Use the third element of the formula
[1] "speed"

答案 1 :(得分:0)

x$coefficients将为您提供每个变量对结果的预测影响

我在这里制作了一个类似的模型:

x<-lm(cyl~ mpg, mtcars)
(Intercept)         mpg 
11.260683   -0.252515 

如果您另外添加,则会有其他系数:

 x<-lm(cyl~ disp + mpg, mtcars)
 x$coefficients
(Intercept)         disp          mpg 
 5.917863266  0.009197743 -0.092206375 

你可以使用summary

来获得整个低点
    Residuals:
    Min      1Q  Median      3Q     Max 
-1.3002 -0.6138  0.1776  0.5486  1.1406 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  5.917863   1.255293   4.714 5.61e-05 ***
disp         0.009198   0.002011   4.574 8.27e-05 ***
mpg         -0.092206   0.041352  -2.230   0.0337 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.7364 on 29 degrees of freedom
Multiple R-squared:  0.8409,    Adjusted R-squared:   0.83 
F-statistic: 76.66 on 2 and 29 DF,  p-value: 2.647e-12

模型数据集(这里只是前几个):

head(x$model)
                  cyl disp  mpg
Mazda RX4           6  160 21.0
Mazda RX4 Wag       6  160 21.0
Datsun 710          4  108 22.8
Hornet 4 Drive      6  258 21.4
Hornet Sportabout   8  360 18.7
Valiant             6  225 18.1

您可以使用典型的对象类查询访问模型的各个部分:

x$model$cyl
[1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4

基于您的模型(仅为前几个)的每个观察结果的预测结果:

head(x$fitted.values)
        Mazda RX4     Mazda RX4 Wag        Datsun 710    Hornet 4 Drive Hornet Sportabout           Valiant 
         5.453168          5.453168          4.808914          6.317664          7.504791          6.318420