2

以下のコードを見てください。この質問は以前に尋ねられましたが、シャットダウンされました-おそらく問題を再現するためのRコードが不足しているためです。

基本的に、データに多重共線性がある場合、Polr でトレーニングされたモデルを使用すると、 の呼び出し中に問題が発生しpredict()ます。ここで何が欠けていますか?

以下の太字の部分は、R が私に言ったことです。残りは私のコードです。

r = c(2,2,2,3,3,3,1,1,1,1)
r = as.factor(r)
x = c(0,0,0,4,5,6,0,-1,-1,1)
y = c(5,5,2,1,0,3,10,4,3,8)
z = c(0,0,0,4,5,6,0,-1,-1,1)
a = data.frame(r,x,y,z)

library(MASS)
model <- polr(r~x+z, data=a, Hess=TRUE)

警告メッセージ: In polr(r ~ x + z, data = a, Hess = TRUE) : 計画は階数不足のように見えるため、いくつかの係数を削除します

test = model.frame(r~x+ z, data=a)
predict(model, test, type="class", s=model$lambda.min)

X %*% object$coefficients のエラー: 適合しない引数

test2 = model.frame(r~x, data=a)
predict(model, test2, type="class", s=model$lambda.min)

X %*% object$coefficients のエラー: 適合しない引数

test3 = model.frame(~x, data=a)
predict(model, test2, type="class", s=model$lambda.min)

X %*% object$coefficients のエラー: 適合しない引数

model2 = polr(r~x, data=a, Hess=TRUE)
predict(model2, test, type="class", s=model$lambda.min)

[1] 1 1 1 3 3 3 1 1 1 2
レベル: 1 2 3

predict(model2, test2, type="class", s=model$lambda.min)

[1] 1 1 1 3 3 3 1 1 1 2
レベル: 1 2 3

predict(model2, test3, type="class", s=model$lambda.min)

[1] 1 1 1 3 3 3 1 1 1 2
レベル: 1 2 3

4

0 に答える 0