插入符号重命名模型中的系数名称

时间:2018-01-21 18:59:36

标签: r r-caret

为什么caret重命名系数名称?

MCVE

library(caret)
library(mlbench)

data(BostonHousing)

model <- train(medv ~ .,
               data = BostonHousing,
               method = "lm")

> model$coefnames
 [1] "crim"    "zn"      "indus"   "chas1"   "nox"     "rm"      "age"     "dis"     "rad"     "tax"    
[11] "ptratio" "b"       "lstat"

> colnames(BostonHousing)
 [1] "crim"    "zn"      "indus"   "chas"    "nox"     "rm"      "age"     "dis"     "rad"     "tax"    
[11] "ptratio" "b"       "lstat"   "medv"  

并且,结果包含chas1,其中不存在数据。

我错过了caret的内容吗?

1 个答案:

答案 0 :(得分:3)

你不会错过插入符号中的某些内容。只需使用lm即可获得相同的结果。

lm(medv ~., data = BostonHousing)
Call:
lm(formula = medv ~ ., data = BostonHousing)

Coefficients:
(Intercept)         crim           zn        indus        chas1          nox           rm          age          dis          rad  
  3.646e+01   -1.080e-01    4.642e-02    2.056e-02    2.687e+00   -1.777e+01    3.810e+00    6.922e-04   -1.476e+00    3.060e-01  
        tax      ptratio            b        lstat  
 -1.233e-02   -9.527e-01    9.312e-03   -5.248e-01  

这与chas是包含值0和1的因子有关。系数chas1基于此因子。如果chas1 == 1,则使用系数,否则不使用。如果chas有3个级别(0,1,2),你会看到chas1和chas2显示为系数。