看看下面的代码。之前已经问过这个问题但是关闭了 - 可能是因为缺少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)
警告讯息: 在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 $ variables中的错误:不一致的参数
test2 = model.frame(r~x, data=a)
predict(model, test2, type="class", s=model$lambda.min)
X%*%object $ variables中的错误:不一致的参数
test3 = model.frame(~x, data=a)
predict(model, test2, type="class", s=model$lambda.min)
X%*%object $ variables中的错误:不一致的参数
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