多项式逐步前向选择

时间:2019-06-20 13:28:56

标签: r r-caret nnet

对于我的研究,我想进行多项式逻辑逐步前向选择(尽管有其缺点)。为此,我运行以下示例代码:

x1=sample(1:100,10,replace=T)
x2=sample(1:100,10,replace=T)
x3=sample(1:100,10,replace=T)
x4=sample(1:100,10,replace=T)
x5=sample(1:100,10,replace=T)
x=as.data.frame(cbind(x1,x2,x3,x4,x5))
y=as.data.frame(c(0,0,2,3,0,0,3,1,0,0))
xy=as.data.frame(cbind(x,y))
names(xy)[6]="y"
beststep=train(multinom(y~x1+x2+x3+x4+x5,data=xy), method="glmStepAIC", direction="forward", k=log(10))

这会导致以下错误:

Error: Please use column names for `x

数据框xy的列均已命名。这里的问题是什么?如何解决?

2 个答案:

答案 0 :(得分:0)

通过更改

的最后一行
beststep=train(multinom(y~x1+x2+x3+x4+x4+x5,data=xy), method="glmStepAIC", direction="forward", k=log(3562))

beststep=train(y~x1+x2+x3+x4+x4+x5,data=xy, method="glmStepAIC", direction="forward", k=log(3562))

我得到的结果没有错误。也许您有特定的理由在(multinom中包含模型,但是train函数不接受模型作为第一个参数。

答案 1 :(得分:0)

multinom函数中,响应是一个因素。尽管multinom可以是整数,但我在这里看到的https://github.com/topepo/caret/blob/master/RegressionTests/Code/multinom.R的唯一用于训练的示例将其视为虹膜数据中的一个因素。

这对我有用,是您需要的吗?

xy$y <- as.factor(xy$y)
beststep=train(y~.,
               data=xy, 
               method="multinom",
               direction="forward", k=log(3562))

您的模型公式中有两次x4。如果使用所有回归变量,则可以使用.