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

R 使用虚拟变量自动转换训练数据的lm评估,r,r-caret,R,R Caret,我尝试使用statisticalmodeling软件包评估模型,并查看效果大小: library(caret) library(statisticalModeling) a_model <- train( Sepal.Length ~ Species + Sepal.Width, data = iris, method = "lm" ) statisticalModeling::effect_size(a_model$finalModel, ~ Species, data

我尝试使用statisticalmodeling软件包评估模型,并查看效果大小:

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)
库(插入符号)
图书馆(统计建模)

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

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)

b_model Hi谢谢你的回答。通过S3方法,这是否意味着只包括来自训练数据框架的精确变量?据我所知,这就是你正在做的事情,是的(请参阅帮助(“训练”、“插入”)
)。我使用dplyr select而不是
df[,c(“var1”、“var2”)]
尝试了这个S3方法,但它成功了;t run,这很奇怪,因为如果我将
select(iris,c(“物种”,“萼片宽度”)
的str与上面的x=方法进行比较,它们看起来完全相同:-/
tbl_df
可能不受支持。也许
select(如.data.frame(df),colnames)