1

我想为一些值从 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 

我有点迷茫,因为我看到这些是概率最高的结果,但我看不出这种预测有什么用处。我在设置预测数据的方式上遗漏了什么吗?

4

0 回答 0