Skip to main content
edited tags
Source Link
kjetil b halvorsen
  • 85.7k
  • 32
  • 216
  • 696
#mixed-effects model
mod_gam2 <- lme(variable~bs(seg,df=4)*group*sexo+fumador+diabetes+hipercol+hta + educ  + cohort ,random = ~1 | id2, correlation = corCAR1(form = ~seg | id2), control = lmeControl(opt="optim"), data=xxx, method='REML', na.action=na.exclude)

#survival model
coxfit <- coxph(coxph(Surv(years, event) ~ group*sexo+fumador+diabetes+hipercol+hta + educ  + cohort, data = xxx))

# mixed-effects model
mod_gam2 <- lme(variable ~ bs(seg, df=4)*group*sexo + 
    fumador + diabetes + hipercol + hta + educ  + 
    cohort , random = ~ 1 | id2, 
    correlation = corCAR1(form = ~seg | id2), 
    control = lmeControl(opt="optim"), data=xxx, 
    method='REML', na.action=na.exclude)

# survival model
coxfit <- coxph(coxph(Surv(years, event) ~ group*sexo + 
    fumador + diabetes + hipercol+hta + educ  + cohort, 
    data = xxx))
#Joint model
jmodel <- jm(mod_gam2, coxfit,  timeVar   = "seg")

# Joint model
jmodel <- jm(mod_gam2, coxfit,  timeVar   = "seg")

Any thoughts, pointers would be really appreciated. Thanks!

#mixed-effects model
mod_gam2 <- lme(variable~bs(seg,df=4)*group*sexo+fumador+diabetes+hipercol+hta + educ  + cohort ,random = ~1 | id2, correlation = corCAR1(form = ~seg | id2), control = lmeControl(opt="optim"), data=xxx, method='REML', na.action=na.exclude)

#survival model
coxfit <- coxph(coxph(Surv(years, event) ~ group*sexo+fumador+diabetes+hipercol+hta + educ  + cohort, data = xxx))

#Joint model
jmodel <- jm(mod_gam2, coxfit,  timeVar   = "seg")

Any thoughts, pointers would be really appreciated. Thanks!

# mixed-effects model
mod_gam2 <- lme(variable ~ bs(seg, df=4)*group*sexo + 
    fumador + diabetes + hipercol + hta + educ  + 
    cohort , random = ~ 1 | id2, 
    correlation = corCAR1(form = ~seg | id2), 
    control = lmeControl(opt="optim"), data=xxx, 
    method='REML', na.action=na.exclude)

# survival model
coxfit <- coxph(coxph(Surv(years, event) ~ group*sexo + 
    fumador + diabetes + hipercol+hta + educ  + cohort, 
    data = xxx))
# Joint model
jmodel <- jm(mod_gam2, coxfit,  timeVar   = "seg")

Any thoughts, pointers would be really appreciated.

Source Link

Joint Models: reversible BMI threshold as event, non-linear time terms, and aligning covariates in joint models

I’m analysing an adult cohort where each participant contributes a different number of BMI readings taken at different ages (some are better characterized, other worse). The goal is to quantify in the different groups how much time it takes for a group (stratified according to a specific condition) to reach "obesity" (IMC =>30), in this context, I thought joint models may be useful due to my repeated measures over time. My thought after considering serveral approachas was to build a joint model in JMbayes2 that links repeated BMI measurements to the time at which someone becomes obese (30 kg/m2). My study:

  • ~14 000 adults, BMI measured up to ten times (1990-2024)
  • Baseline covariates: age, sex, smoking, education, diabetes, hypertension
  • I want the event to be “BMI ≥ 30”, but people can cross that line more than once.

1. Handling a reversible obesity threshold (BMI ≥ 30 kg m²) My first instinct is to use the first time BMI hits 30 as the event (I create a variable called event(0,1)) and ignore later reversions, but I’m not sure that’s fully correct. Is there a standard way to treat a threshold that can be crossed, reversed, and crossed again?

  • Some participants cross 30 once and stay obese.
  • Others bounce above and below 30 over time.

2. Non-linear time in the longitudinal sub-model

The BMI curve is clearly non-linear (inverted-U). Can I just plug a spline term in the joint model? —e.g.with sex and group interactions.

enter image description here

The following code is one of the tested models accounting for interactions and non-linear components of time

#mixed-effects model
mod_gam2 <- lme(variable~bs(seg,df=4)*group*sexo+fumador+diabetes+hipercol+hta + educ  + cohort ,random = ~1 | id2, correlation = corCAR1(form = ~seg | id2), control = lmeControl(opt="optim"), data=xxx, method='REML', na.action=na.exclude)

#survival model
coxfit <- coxph(coxph(Surv(years, event) ~ group*sexo+fumador+diabetes+hipercol+hta + educ  + cohort, data = xxx))

Does the joint model support this? Is able to capture non-linear interactions?

#Joint model
jmodel <- jm(mod_gam2, coxfit,  timeVar   = "seg")

3 Do both sub-models need identical covariates? Regarding the prior syntax. Is there a principled rule about adjusting for the same covariates in the mixed-model and the survival one?

Any thoughts, pointers would be really appreciated. Thanks!