使用lcmm::predictClass时基于样条链接函数的报错问题
R lcmm包predictClass()在样条链接函数下的报错问题
使用lcmm包的predictClass()预测类别归属时,若模型采用基于样条的链接函数(如3-quant-splines)会触发报错Length of vector range is not correct.,但切换为默认线性链接函数时该功能可正常运行。同时predictRE()也出现相同报错,predictL()和predictY()可正常工作,已准备联系包维护者。
报错复现代码
## 定义初始化值以快速得到结果 BB <- c(-19.064,21.718,-1.192,-1.295,-1.205,-0.281,0.110, -0.232, 1.339,-1.007, 1.019,-9.395, 1.702,2.030, 2.089, 1.352,-9.369, 1.220, 1.532, 2.481,1.223) library(lcmm) m2c <- multlcmm(Ydep1+Ydep2~1+Time*X2, random=~1+Time, subject="ID", link="3-quant-splines", ng=2, mixture=~1+Time, classmb=~1+X1, data=data_lcmm, B=BB) ## 3次迭代后收敛 ## 定义预测数据集 library(dplyr) X <- data_lcmm %>% filter(ID %in% sample(ID,10)) %>% ## 随机选取10个ID select(ID,Ydep1,Ydep2,Time,X1,X2) ## 预测类别归属 predictClass(m2c, newdata=X) ## 报错信息: ## Error in multlcmm(fixed = Ydep1 + Ydep2 ~ 1 + Time * X2, mixture = ~1 + : ## Length of vector range is not correct.
线性链接函数下的正常运行示例
library(lcmm) m2 <- multlcmm(Ydep1+Ydep2~1+Time*X2, random=~1+Time, subject="ID", link="linear", ng=2, mixture=~1+Time, classmb=~1+X1, data=data_lcmm, B=c(18,-20.77,1.16,-1.41,-1.39,-0.32,0.16, -0.26,1.69,1.12,1.1,10.8,1.24,24.88,1.89)) ## 2次迭代后收敛 library(dplyr) X <- data_lcmm %>% filter(ID %in% sample(ID,10)) %>% select(ID,Ydep1,Ydep2,Time,X1,X2) ## 预测类别归属 predictClass(m2, newdata=X) ## 输出示例: ## ID class prob1 prob2 ## 1 21 2 0.031948951 9.680510e-01 ## 2 25 2 0.042938984 9.570610e-01 ## 3 33 2 0.026053178 9.739468e-01 ## 4 46 1 0.999999964 3.597409e-08 ## 5 50 2 0.066291287 9.337087e-01 ## 6 74 2 0.005630593 9.943694e-01 ## 7 120 2 0.024787290 9.752127e-01 ## 8 171 2 0.053499974 9.465000e-01 ## 9 229 1 0.999999996 4.368222e-09 ##10 235 2 0.008173507 9.918265e-01 ## ...或类似结果
内容的提问来源于stack exchange,提问作者Big Old Dave
相关产品推荐
相关产品推荐

