评估训练数据已使用虚拟变量自动转换的lm

时间:2017-11-15 04:13:24

标签: r r-caret

我正在尝试使用statisticsmodeling包来评估模型,并查看效果大小:

library(caret)
library(statisticalModeling)

a_model <- train(
  Sepal.Length ~ Species + Sepal.Width,
  data = iris,
  method = "lm"
)

statisticalModeling::effect_size(a_model$finalModel, ~ Species, data = iris)

在拟合模型期间,r会自动将分类变量Species转换为虚拟变量 - 很棒,我不必担心。

但是,当我尝试评估模型时,这会引发错误。上面的最后一行给出了:

  

eval(expr,envir,enclos)中的错误:找不到对象'Speciesversicolor'

以另一种方式提出问题,是否有可能检索用于构建模型的转换数据?然后我把它传递给统计模型函数的数据参数。

我尝试将data = iris切换为data = a_model$trainingData,但遇到了相同的消息。

我没有使用基线r线性模型遇到这个问题,只使用插入符号。

1 个答案:

答案 0 :(得分:3)

您可以使用train的默认S3方法来避免它。

b_model <- train(x = iris[, c("Species", "Sepal.Width")], 
                 y = iris$Sepal.Length, 
                 method = "lm")

identical(a_model$finalModel$coefficients, b_model$finalModel$coefficients)  # TRUE

statisticalModeling::effect_size(b_model$finalModel, ~ Species, data = iris)