2017-05-19 4 views
0

JM est un paquet destiné à équiper un modèle de données longitudinales et de survie. Je peux le faire fonctionner avec leurs données d'exemple, mais j'obtiens une erreur avec mes propres données. Une idée de ce que le problème avec JMfit1 ou JMfit2 est?Erreur du paquetage JM dans R

Mes données: https://1drv.ms/u/s!AkG9wyz5G1c1gR4Vs_xohO--4Rb5

install.packages('JM') 
require(JM) 
?jointModel 

# Example from vignette 
# linear mixed model fit (random intercepts + random slopes) 
fitLME <- lme(log(serBilir) ~ drug * year, random = ~ year | id, data = pbc2) 
summary(fitLME) 
# survival regression fit 
fitSURV <- survreg(Surv(years, status2) ~ drug, data = pbc2.id, x = TRUE) 
summary(fitSURV) 
# joint model fit, under the (default) Weibull model 
fitJOINT <- jointModel(fitLME, fitSURV, timeVar = "year") 
fitJOINT 
summary(fitJOINT) 
# we can also include an interaction term of log(serBilir) with drug 
fitJOINT <- jointModel(fitLME, fitSURV, timeVar = "year", 
         # interFact = list(value = ~ drug, data = pbc2.id)) 
fitJOINT 
summary(fitJOINT) 


# With my data: 
data = readRDS('data.list.d1.dk.RDS') 
d1 = data$d1 
dk = data$dk 
dim(d1); names(d1) 
dim(dk); names(dk) 

slct.cov = c('ID','Yi','Ai','zi.1','zi.2','zi.3','xi_A','di') 

fmla.fix = as.formula('Yi ~ Ai*(zi.1+zi.2+zi.3)') 
fmla.rnd = as.formula(' ~ Ai|ID') 

fit.Yi = lme(fixed= fmla.fix, random=reStruct(fmla.rnd), 
       method="ML", data = dk[,slct.cov]) 

surv.model = survreg(Surv(xi_A, di) ~ zi.1+zi.2+zi.3, data = d1[,slct.cov], x = TRUE) 

JMfit1 = jointModel(lmeObject = fit.Yi, survObject = surv.model, timeVar = 'Ai') 
# Error in if (t1 || t2) { : missing value where TRUE/FALSE needed 


dForm <- list(fixed = ~ 1 + zi.1 + zi.2 + zi.3, indFixed = c(2,6,7,8), random = ~ 1, indRandom = 2) 

JMfit2 = jointModel(lmeObject = fit.Yi, survObject = surv.model, timeVar = 'Ai', 
        derivForm = dForm, parameterization = c("both")) #"both", "value", "slope" 
        # method = "weibull-PH-aGH", 
        # "weibull-PH-aGH", "weibull-PH-GH", "weibull-AFT-aGH","weibull-AFT-GH", 
        # "piecewise-PH-aGH", "piecewise-PH-GH", "Cox-PH-aGH", "Cox-PH-GH", 
        # "spline-PH-aGH", "spline-PH-GH", # "ch-Laplace" 
        # interFact = NULL, lag = 0, scaleWB = NULL, 
        # CompRisk = FALSE, init = NULL, control = list()) 

Répondre

0

Il me semble que votre modèle fmla.fix a besoin de plus enquête en elle-même peut-être.

La simplification des interactions à Yi ~ Ai+zi.1+zi.3 + Ai*(zi.2) ou même Yi ~ Ai+zi.1+zi.2+zi.3 semble donner une sortie JMfit1 valide.

Je suppose que vous obtiendrez une erreur différente pour JMfit2 (et vous ??), ce qui peut être une question SO suivante.