Пакет r «jm»: отсутствует значение, где требуется истина / ложь

Я получаю следующее сообщение об ошибке:

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")

Что это значит и как решить эту проблему.

и в данных нет двух переменных t1 и t2.

sansan 26.10.2018 06:43
3
1
146
1

Ответы 1

У меня была та же проблема, и я обнаружил, что исключение некоторых идентификаторов позволяет избежать сообщения об ошибке.

Некоторые идентификаторы в моем наборе данных содержали только одну точку данных для продольной переменной. Когда я удалил эти идентификаторы из данных, включая только те идентификаторы, которые имели как минимум 2 записи, модель работала без ошибок. Я подозреваю, что это было причиной проблемы, поскольку тогда модель могла не знать, как оценить градиент случайных эффектов для этих переменных.

Один из способов удалить их:

AD <- AD[which(is.element(AD$RID,
                          AD$RID[duplicated(AD$RID)])),]

Обратите внимание, что вам придется удалить их как из AD, так и из AD.RID, поскольку эти наборы данных должны быть соответствующими, где AD и AD.RID упорядочены по идентификатору и содержат одних и тех же лиц.

Что касается переменных t1 и t2, и что именно вызывает ошибку, я не уверен - я проверил исходный код JointModel, coxph и lme, и они не появляются ни в одной из функций.

Если вы хотите включить эти идентификаторы, это может быть более возможным в байесовской структуре, чем в частотной, поскольку с помощью байесовских методов легче справиться с отсутствующими данными. Я еще не смотрел на это, но пакет JMBayes в R соответствует байесовским совместным моделям и может позволить вам включить этих людей.

Другие вопросы по теме