我收到以下错误消息:
Error in if (t1 || t2) { : missing value where TRUE/FALSE needed
当我输入:
library(JM)
lmefit=lme(ADAS11+apoe4+AGEING,random = ~AGEING|RID,data = AD,na.action=na.exclude)
coxfit=coxph(Surv(AGEEND,DXEND)~apoe4bl+,data = AD.RID,x=TRUE)
jointfit=jointModel(lmefit,coxfit,timeVar = "AGEING")
这是什么意思,我该如何解决。谢谢
最佳答案
我遇到了同样的问题,发现排除一些 ID 可以避免错误消息。
我数据集中的一些 ID 只包含一个纵向变量数据点。当我从数据中删除这些 ID(仅包括至少有 2 个条目的 ID)时,模型运行时没有错误。我怀疑这是导致问题的原因,因为模型可能不知道如何估计这些变量的随机效应梯度。
删除它们的一种方法:
AD <- AD[which(is.element(AD$RID,
AD$RID[duplicated(AD$RID)])),]
请注意,您必须从 AD 和 AD.RID 中删除它们,因为这些数据集需要对应,其中 AD 和 AD.RID 均按 ID 排序并包含相同的个体。
至于变量 t1 和 t2 是什么,以及究竟是什么导致了错误,我不确定 - 我检查了 jointModel、coxph 和 lme 的源代码,它们没有出现在任何函数中。
如果您想包含这些 ID,在贝叶斯框架中可能比常客更有可能,因为使用贝叶斯方法更容易处理丢失的数据。我还没有看过它,但 R 中的 JMBayes 包适合贝叶斯联合模型,可能允许您包括这些人。
关于R包“JM”: missing value where TRUE/FALSE needed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53001556/