2


R で mboost パッケージを使用して、多項ロジスティック回帰モデルを適用しようとしています。この例はオンラインで見つけましたが、予測関数に「newdata = iris」を追加して、予測式が新しいデータの mboost でどのように機能するかを確認しました。ただし、エラーが発生します。まず、コードは次のとおりです。

library(mboost)

### fitting multinomial logit model via a linear array model
X0 <- K0 <- diag(nlevels(iris$Species) - 1)
colnames(X0) <- levels(iris$Species)[-nlevels(iris$Species)]
mlm <- mboost(Species ~ bols(Sepal.Length, df = 2) %O%
            buser(X0, K0, df = 2), data = iris,
          family = Multinomial())
round(predict(mlm, type = "response", newdata = iris), 2)

私が得ているエラーは次のとおりです:
Error in [.data.frame(newdata, nm) : undefined columns selected

テストとして予測で虹彩データを再利用しましたが、以前にこの問題を経験した人はいますか?

4

1 に答える 1

3

関数を新しいデータで使用できない理由predictは、事前定義された計画行列とペナルティ行列をbuser()、つまりX0およびで使用するためK0です。これらは新しいデータ セットの一部ではないため、予測用の新しい計画行列を作成するときには使用できません。

Sarah Brockhausが github で に置き換えるソリューションbuserを投稿しましたbols。これを行うには、データ セットをリストに変換し、dummyこのリストに新しいものを追加する必要があります。新しいデータで本当に予測したい場合は、これをdummyそのままにしておく必要があります。githubの私の投稿も参照してください。

[編集] @Lorcan-Treanor がコメントで言及しているように、必要な要素の数はbols常に 2 とは限りません。ここでは、実際にはnlevels(iris$Species) - 1、つまり、結果に含まれるクラスよりも因子レベルが 1 つ少なくなります。それに応じて、github の投稿も更新しました。

于 2015-07-23T13:20:30.883 に答える