【问题标题】:caret renaming coefficient names in model插入符号重命名模型中的系数名称
【发布时间】:2018-01-22 03:20:56
【问题描述】:

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 中的某些内容?

【问题讨论】:

    标签: r r-caret


    【解决方案1】:

    您并没有错过插入符号中的某些内容。只需使用 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 显示为系数。

    【讨论】:

    • 谢谢!我只使用数字数据与caretlm 一起工作,这是出乎意料的事情。
    猜你喜欢
    • 2013-07-13
    • 1970-01-01
    • 2013-07-15
    • 2014-12-10
    • 2017-12-27
    • 2018-08-16
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    相关资源
    最近更新 更多