4级有序结局3读片者配对混合模型repolr报错修复方法
报错核心原因
repolr包对输入数据集的排序有强制要求:必须先按subjects参数指定的受试者分组变量排序,同一受试者的所有重复测量记录连续排列,且组内记录顺序和times参数指定的测量时点顺序严格对应。
你当前使用的数据集是按读片者编号排序的:所有reader=1的50条记录在前、reader=2的50条记录居中、reader=3的50条记录在后,同一患者的3条读片结果分散在数据集的三个区段,导致函数构建设计矩阵时维度不匹配,触发报错。
报错修复代码
先对数据集按要求排序,再运行模型即可正常输出结果:
library(repolr) # 按患者编号、读片者编号排序,保证同一患者的3条读片记录连续排列 mydata <- mydata[order(mydata$Patient, mydata$reader), ] # 拟合模型 read_model <- repolr( formula = rsna ~ factor(reader), subjects = "Patient", data = mydata, categories = 4, times = c(1,2,3), # 与排序后每个患者组内reader1→reader2→reader3的顺序一致 po.test = TRUE, fixed = FALSE ) # 查看模型结果 summary(read_model)
注意:如果后续调整
times参数的取值,必须同步保证排序后每个患者组内的记录顺序和times的顺序一一对应,否则会再次触发同类报错。
分析方法合理性说明
你提到的「以患者为随机效应的配对有序结局混合模型」完全适配该研究场景:
- 研究设计为同批50名患者的影像由3名读片者独立判读,属于典型的受试者内重复测量配对设计,将患者设为随机效应可有效校正不同患者的基线判读结果异质性
- 结局为4水平有序分类变量,除
repolr外,也可使用ordinal包的clmm函数拟合累积链接混合效应模型,该函数对数据排序无强制要求,语法容错性更高,参考代码如下:
library(ordinal) # 拟合带患者随机截距的比例优势模型 clmm_model <- clmm( factor(rsna) ~ factor(reader) + (1|Patient), data = mydata, link = "logit" ) summary(clmm_model)
内容的提问来源于stack exchange,提问作者ArTu
相关产品推荐
相关产品推荐

