【问题标题】:Multinomial stepwise forward selection多项式逐步前向选择
【发布时间】:2019-11-03 08:08:31
【问题描述】:

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

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 的列都已命名。这可能是什么问题以及如何解决?

【问题讨论】:

  • 一般来说,as.data.frame(cbind(...)) 是一种反模式。请改用data.frame(...)。在这种情况下,这并不重要,因为您的所有数据都是同一类型,但 cbind() 首先转换为矩阵,因此如果您混合字符串和数字(​​甚至整数和双精度)数据类型,cbind 矩阵转换会搞砸。
  • 没错,但不幸的是它并没有解决问题。

标签: r r-caret nnet


【解决方案1】:

通过改变最后一行

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 函数不接受模型作为第一个参数。

【讨论】:

  • 这只是一个池化模型,而不是多项式模型,我想将其用于前向选择。
【解决方案2】:

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。如果使用所有回归器,则可以使用.

【讨论】:

  • 我使用method=glmstepAIC,因为我希望我的逐步选择过程基于 BIC(这就是 k=log(n) 的原因)。当它被删除时,逐步选择不再基于 BIC(它基于什么?)。这就是为什么我想把它留在里面,因此你的解决方案并不完全是我想要的
  • 我也在调查 metric=BIC,但 R 报告了 The metric "BIC" was not in the result set. Accuracy will be used instead.,所以这也不起作用。
  • stepAIC?我假设它是glmStepAIC 所基于的指标
  • 嗯,我用stepAIC 试过了,没有出错。 ?train 中的 metric 组件是用于优化模型的指标。也可以在trainControl 中用summaryFunction 设置。
  • 不多,抱歉。您需要编写一个类似于multiClassSummary 格式的函数。它目前允许AccuracyKeppa 作为选择的指标。我没有建立自己的分类功能的经验。它说明了输入是什么,所以如果您知道公式,也许您可​​以手动编写函数并放入 trainControl() 函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
相关资源
最近更新 更多