【发布时间】:2013-07-05 14:43:01
【问题描述】:
我正在尝试使用 ordinal 包拟合累积链接混合模型,但对于获取预测概率,我有一些不明白的地方。我使用ordinal 包中的以下示例:
library(ordinal)
data(soup)
## More manageable data set:
dat <- subset(soup, as.numeric(as.character(RESP)) <= 24)
dat$RESP <- dat$RESP[drop=TRUE]
m1 <- clmm2(SURENESS ~ PROD, random = RESP, data = dat, link="logistic", Hess = TRUE,doFit=T)
summary(m1)
str(dat)
现在我正在尝试预测新数据集的概率
newdata1=data.frame(PROD=factor(c("Ref", "Ref")), SURENESS=factor(c("6","6")))
与
predict(m1, newdata=newdata1)
但我收到以下错误
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
为什么会出现此错误? predict.clmm2() 的语法有什么问题吗?通常 predict.clmm2() 输出哪些概率? Pr(J<j) 还是 Pr(J=j)?有人可以向我指出有关使用 R 拟合分类(序数)序数混合模型的信息(网站、书籍)材料。根据我在文献和网络中的搜索,大多数研究人员都将这类模型与 SAS 拟合。
【问题讨论】:
-
您可能需要执行类似
newdata1=data.frame(PROD=factor(c("Ref","Ref") , levels = c("Ref","Somethingelse"), ... )的操作 - 错误表明您无法预测少于 2 个因子水平(您拥有)的事物。 -
(免责声明:我对 CLMM 一无所知)在您的模型公式中,
SURENESS似乎是您的响应变量,但您在 newdata 中使用它而不是 SOUPTYPE。此外,您将 PROD 排除在原始公式之外,但将其包含在新数据中。那是故意的吗?无论如何,当我运行代码时,无论我在 newdata 中使用 SOUPTYPE 还是 SURENESS,R 都会告诉我另一个变量丢失(即我从你那里得到一个不同的错误,R 2.15.0) -
谢谢。我纠正了它,但仍然吐出同样的错误。
-
@DavidMarx:
predict.clmm2要求响应变量在 newdata 参数中,并且要求因子水平与原始数据匹配。
标签: r regression ordinal mixed-models