简体   繁体   中英

How can I get the contribution by each predictor to the final regression prediction in lm

Using R when I use rlm or lm I would like to get the contribution of each predictor of the model.

The problem occurs when I have interaction terms as I think they are not in the lm object

Bellow is sample data (I am looking for a way that generalized to any number of predictors)

Sample data:

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]

Actually I got it from lm itself, the trick is to ask for 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

I thought by "contribution" you want explained variance of each term (which an ANOVA table helps), while actually you want term-wise prediction:

predict(lmObj, type = "terms") 

See ?predict.lm .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM