使用polr对多个共线数据进行训练后调用predict
请看下面的代码。这个问题以前被问过,但后来被关闭了——可能是因为缺少R代码来重现这个问题 基本上,当数据中存在多重共线性时,在调用使用polr对多个共线数据进行训练后调用predict,r,statistics,logistic-regression,ordinal,s,R,Statistics,Logistic Regression,Ordinal,S,请看下面的代码。这个问题以前被问过,但后来被关闭了——可能是因为缺少R代码来重现这个问题 基本上,当数据中存在多重共线性时,在调用predict()期间,使用Polr训练的模型是有问题的。我错过了什么 下面粗体部分是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
predict()
期间,使用Polr训练的模型是有问题的。我错过了什么
下面粗体部分是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)
X%*%object$系数中的错误:不一致参数
X%*%object$系数中的错误:不一致参数
X%*%object$系数中的错误:不一致参数
[1]13 13 1 2级别:1 2 3 [1]13 13 1 2
级别:1 2 3 [1]13 13 1 2
级别:1 2 3
现在,我已经设置了一个while循环来检测多重共线性。它删除了被忽略的预测值,并再次训练模型。您可能希望预测方法能够支持它。
test = model.frame(r~x+ z, data=a)
predict(model, test, type="class", s=model$lambda.min)
test2 = model.frame(r~x, data=a)
predict(model, test2, type="class", s=model$lambda.min)
test3 = model.frame(~x, data=a)
predict(model, test2, type="class", s=model$lambda.min)
model2 = polr(r~x, data=a, Hess=TRUE)
predict(model2, test, type="class", s=model$lambda.min)
predict(model2, test2, type="class", s=model$lambda.min)
predict(model2, test3, type="class", s=model$lambda.min)