我使用R中序号包中的clm函数来建模序数数据,因为我有4个变量,2个序数和2个连续变量(O1、O2、C1、C2)。
O1 <- c(2,2,1,2,2,1,3,2,2,3,3,2,1,3,2,2,2)
O2 <- c(2,2,3,2,2,1,2,2,2,1,1,2,3,2,2,2,2)
C1 <- C(49,25,1000,19,61,700,25,375,35,46,105,437,3300,31,203,34,800)
C2 <- c(25350,25050,14925,25050,14325,16300,26425,22250,22250,44650,44650,21400,30125,25350,25050,14325,17525)
data <- data.frame (O1, O2, C1, C2)
data <- within(data, {
O1 <- factor ((O1), ordered =TRUE,
levels = c("1", "2", "3"))
O2 <- factor ((O2), ordered =TRUE,
levels = c("1", "2", "3"))
})在第一步中,我想将O1建模为响应变量,O2、C1和C2作为预测器(3种不同的模型);第二步,使用O2作为响应,使用O1、C1和C2作为预测器(另外3种不同的模型)。
m1 <- clm(O1 ~ O2, data = data)
m2 <- clm(O1 ~ C1, data = data)
m3 <- clm(O1 ~ log(C2), data = data)
m4 <- clm(O2 ~ O1, data = data)
m5 <- clm(O2 ~ C1, data = data)
m6 <- clm(O2 ~ log(C2), data = data)正如您所看到的,除了第一个模型(m1)作为警告消息外,所有模型的运行都没有问题:
(1) Hessian是数值奇异的:参数不是唯一确定的,而且满足绝对收敛准则,但不满足相关准则。
并且不要报告任何标准错误或wald测试。
我在模拟数据时没有这个问题。
data$x1 <- sample(c(1,2,3), 17, replace = TRUE)让我困惑的是,与m1 (O1 ~ O2)不同的是,使用O2作为响应,以O1作为预测器的模型工作得非常好。此外,我还尝试替换了O1中的一些值,结果表明,在替换1到2或3时,我没有收到任何警告信息,并且得到了模型的所有系数。
我做了一些研究,这似乎和这可能是由于低代表性的某些价值的反应,以及一个小样本的大小。这是对的还是可以是个小虫子?有人能帮帮我吗?
非常感谢!
发布于 2020-05-28 11:02:11
这是因为您有太多的空单元格(这里只有两个主题i与O2=3),尝试合并类别并修改模型
https://stackoverflow.com/questions/37230641
复制相似问题