randomForest
在这里使用统计软件包还很陌生。
我正在尝试运行具有2个响应变量和7个预测变量的模型,但由于响应变量的长度和/或使模型具有2个响应变量的性质,我似乎无法这样做。
假设这是我的数据和模型:
> table(data$y1)
0 1 2 3 4
23 43 75 47 21
> length(data$y1)
0 4
> table(data$y2)
0 2 3 4
104 30 46 29
> length(data$y2)
0 4
m1<-randomForest(cbind(y1,y2)~a+b+c+d+e+f+g, data, mtry=7, importance=TRUE)
当我运行此模型时,会出现以下错误:
Error in randomForest.default(m, y, ...) :
length of response must be the same as predictors
我进行了一些故障排除,发现这cbind()
两个响应变量只是将它们的值放在一起,从而使原始长度加倍,并可能导致上述错误。举个例子,
length(cbind(y1,y2))
> 418
t(lapply(data, length()))
> a b c d e f g y1 y2
209 209 209 209 209 209 209 209 209
然后,我尝试通过randomForest
分别在每个响应变量上运行,然后将其应用于combine()
回归模型来解决此问题,但遇到了以下问题:
m2<-randomForest(y1~a+b+c+d+e+f+g, data, mtry=7, importance=TRUE)
m3<-randomForest(y2~a+b+c+d+e+f+g, data, mtry=7, importance=TRUE)
combine(m2,m3)
Warning message:
In randomForest.default(m, y, ...) :
The response has five or fewer unique values. Are you sure you want to do regression?
然后,我决定将randomForest
模型视为分类模型,并as.factor()
在运行之前将其应用于两个响应变量randomForest
,但随后遇到了这个新问题:
m4<-randomForest(as.factor(y1)~a+b+c+d+e+f+g, data, mtry=7, importance=TRUE)
m5<-randomForest(as.factor(y2)~a+b+c+d+e+f+g, data, mtry=7, importance=TRUE)
combine(m4,m5)
Error in rf$votes + ifelse(is.na(rflist[[i]]$votes), 0, rflist[[i]]$votes) :
non-conformable arrays
我的猜测是我无法combine()
对模型进行分类。
我希望我的尝试运行多元随机森林模型的询问有意义。让我知道是否还有其他问题。我也可以回去进行调整。
在randomForest公式之外合并您的列:
data[["y3"]] <- paste0(data$y1, data$y2)
randomForest(y3~a+b+c+d+e+f+g, data, mtry=7, importance=TRUE)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句