我想为一些值从 0 到 10 的有序分类响应数据创建一个模型,其中有 3 个预测变量是分类和数字。因此,除其他外,我正在使用该功能MASS::polr
。这是一个虚拟示例:
data <- data.frame(response = factor(sample.int(11, size = 300, replace = TRUE),
levels = c("1", "2", "3", "4", "5",
"6", "7", "8", "9", "10", "11"),
ordered = TRUE),
gender = rep(0:1, 300),
pred2 = sample.int(11, size = 300, replace = TRUE),
age = rpois(300, 30))
问题是,当我使用“类”类型的预测函数并将预测数据与实际结果进行比较时,模型似乎只考虑了响应变量中的一些值,尤其是最常见的值从培训:
index <- createDataPartition(data$response, p = 0.7, list = FALSE)
dummy_train <- data[index, ]
dummy_test <- data[-index, ]
> table(dummy_train$response)
1 2 3 4 5 6 7 8 9 10 11
37 31 48 21 66 37 31 35 45 30 42
model_polr <- polr(response ~ gender + pred2 + age, data = dummy_train, Hess = TRUE)
predict_polr <- predict(model_polr, newdata = dummy_test, type = "class")
> summary(predict_polr)
1 2 3 4 5 6 7 8 9 10 11
0 0 0 0 177 0 0 0 0 0 0
我有点迷茫,因为我看到这些是概率最高的结果,但我看不出这种预测有什么用处。我在设置预测数据的方式上遗漏了什么吗?