如何获得每个预测器对lm中最终回归预测的贡献

时间:2017-05-09 09:16:12

标签: r dataframe lm coefficients

当我使用Rrlm时使用lm我想获得模型的每个预测变量的贡献。

当我有交互术语时会出现问题,因为我认为它们不在lm对象

Bellow是样本数据(我正在寻找一种可以推广到任意数量预测变量的方法)

示例数据:

set.seed(1)                                              
y <- rnorm(10)                                           
m <- data.frame(v1=rnorm(10), v2=rnorm(10), v3=rnorm(10))
lmObj <- lm(formula=y~0+v1*v3+v2*v3, data=m)               
betaHat <- coefficients(lmObj)                           

betaHat
      v1       v3       v2    v1:v3    v3:v2
 0.03455 -0.50224 -0.57745  0.58905 -0.65592

# How do I get the data.frame or matrix with columns (v1,v3,v2,v1:v3,v3:v2) 
# worth [M$v1*v1, ... , (M$v3*M$v2)*v3:v2]

2 个答案:

答案 0 :(得分:1)

其实我是从lm本身得到的,诀窍是要求 x=TRUE

lmObj <- lm(formula=y~0+v1*v3+v2*v3, data=m, x=TRUE)               
lmObj$x %*% diag(lmObj$coefficients) 
         [,1]     [,2]     [,3]     [,4]     [,5]
1   0.0522305 -0.68238 -0.53066  1.20993 -0.81898
2   0.0134687  0.05162 -0.45164 -0.02360  0.05273
3  -0.0214632 -0.19470 -0.04306 -0.14187 -0.01896
4  -0.0765156  0.02702  1.14875  0.07019 -0.07021
5   0.0388652  0.69161 -0.35792 -0.91250  0.55985
6  -0.0015524  0.20843  0.03241  0.01098 -0.01528
7  -0.0005594  0.19803  0.08996  0.00376 -0.04029
8   0.0326086  0.02979  0.84928 -0.03298 -0.05722
9   0.0283723 -0.55248  0.27611  0.53213  0.34500
10  0.0205187 -0.38330 -0.24134  0.26699 -0.20921

答案 1 :(得分:1)

我认为&#34;贡献&#34;你想要解释每个术语的方差(ANOVA表有帮助),而实际上你想要逐项预测:

predict(lmObj, type = "terms") 

请参阅?predict.lm