【问题标题】:Response must have 3 or more levels响应必须具有 3 个或更多级别
【发布时间】:2023-04-08 05:49:02
【问题描述】:

我正在尝试使用 R 执行有序逻辑回归,但我不断收到此错误消息:响应必须具有 3 个或更多级别。 R中的“响应”是什么意思?尝试在谷歌上搜索,但没有解释 R 中响应的含义。我正在粘贴我试图回归的数据的快照以及我到目前为止编写的代码:

m <- polr(as.factor(Gender) ~ VeryUnsat + Unsat + Sat + VerySat, data = df, Hess=TRUE)
summary(m)
ctable <- coef(summary(m))
p <- pnorm(abs(ctable[, "t value"]), lower.tail = FALSE) * 2
ctable <- cbind(ctable, "p value" = p)
ci <- confint(m)
exp(coef(m))
exp(cbind(OR = coef(m), ci))`

【问题讨论】:

  • "Response" 是您尝试建模的结果。现在看起来你的公式倒退了,因为响应/结果应该在 ~ 的左侧,你目前有 Gender
  • 那么我该如何解决这个问题?年龄有3个等级,但没有性别...
  • 请提供数据,不提供图片。检查?dput
  • 我是这个社区的新手,如何在这里提供我的数据?它在一个excel文件中..
  • 你想在这里建模什么?看起来您的响应/结果应该是满意,它有 4 个级别。您需要polr(Satisfaction ~ age + gender + other_predictors) 之类的东西,但您可能需要重新调整数据,使其“长”,并且每次观察首先有一行。

标签: r regression


【解决方案1】:

你应该看看 polr 方法的例子。 只需在 RStudio 的命令行中输入 ?polr

你会看到你的响应变量没有很好地定义为 polr 所期望的(除非我误解了你试图做什么)

polr 尝试对多级有序变量进行建模,例如示例中的 Sat。

我在您的数据中发现了两个问题:

  1. 您已经汇总了数据,统计了每个年龄和性别组合的每个满意度级别的样本数量。

  2. 您的响应变量分布在不同的列中。从非聚合数据开始,您需要转换为具有多个可能值(VeryUnsat、Unsat、Sat、VerySat)的单个变量

如果方法允许为每个组合指定一些权重,您也许可以使用聚合数据(尚未检查方法的详细信息)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 2019-10-05
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多