clm函数包序数“Hessian是数字奇异的:参数不是唯一确定的”

时间:2016-05-14 18:53:46

标签: r ordinal

我正在使用来自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 z测试。

模拟数据时我没有这个问题

 data$x1 <- sample(c(1,2,3), 17, replace = TRUE)

令我困惑的是,与m1(O1~O2)不同,使用O2作为响应而O1作为预测器的模型完全正常。此外,我已经尝试更换O1中的一些值,并且碰巧当用1或2代替1时,我没有得到任何警告信息,并且我获得了模型的所有系数。

我做了一些研究,看起来这可能是由于响应中某些值的低表示以及较小的样本量。这是对的还是可以成为一个bug?有人能帮帮我吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

这是因为您有太多的空白单元格(这里您只有2个主题,且O2 = 3) 尝试合并类别并调整模型