考虑mtcars示例:
model <- fit3 <- lm(mpg ~ factor(am)+wt+qsec+hp+drat, data = mtcars)
当您做
时model$xlevels
我们获得用于建模的变量的级别。
如果我想使用这些级别的详细信息来将数据归为培训数据级别,则假设新数据的水平比以前用于建模的水平更多。我该怎么办?
目的是避免新数据中有新因素的错误。
我的前瞻性解决方案是:
td <- train_data
dim(td)
for(i in 1:length(model$xlevels)){
print(i)
mod.seg <- as.data.frame(model$xlevels[i])
j = colnames(mod.seg)
attributes <- paste0("subset(td, ",j," %in% unique(mod.seg$",j,"))")
td <- unique(eval(parse(text=attributes)))
}
dim(td)
td <- train_data
dim(td)
for(i in 1:length(model$xlevels)){
print(i)
mod.seg <- as.data.frame(model$xlevels[i])
j = colnames(mod.seg)
attributes <- paste0("subset(td, ",j," %in% unique(mod.seg$",j,"))")
td <- unique(eval(parse(text=attributes)))
}
dim(td)