如何在R中使用转换变量对线性模型进行交叉验证

时间:2018-10-12 19:05:38

标签: r cross-validation

我正在尝试对具有转换后的独立变量的线性模型进行交叉验证,但是大多数CV函数(DAAG::cvLm()cvTools::repCV()等)由于无法找到x3而无法处理或数据中的x4。我想我可以生成x5=log(x3)x6=I(x4 %in% c("A", "B")并重新估算。但是有没有可以自动处理的功能?

set.seed(666)

DF <- data.table::data.table(x1=rnorm(100), x2=runif(100, 3, 5), x3=rnorm(100, 10, 2),
                         x4=sample(c("A","B","C","D"), 100, replace = T))
DF[,`:=`( y1= 2*x1+3*x2+4*log(x3)+rnorm(100),
          y2= x1+x2+I(!x4 %in% c("C","D"))+rnorm(100))]

lm1 <- lm(y1~x1+x2+log(x3), data=DF)
lm2 <- lm(y2~x1+x2+I(!x4 %in% c("C","D")), data=DF)

cvTools::repCV(lm1)
  

eval(predvars,data,env)中的错误:找不到对象'x3'

cvTools::cvLm(lm2)
  

x4%in%c(“ C”,“ D”)中的错误:找不到对象'x4'

0 个答案:

没有答案