class: top, left, title-slide # Modèles joints ### Henri Panjo ### INSERM ### 29 octobre, 2021 --- # Introduction/Motivation - La présentation porte sur l'idée d'ajuster simultanément un modèle de survie et un modèle longitudinal -- - De nombreuses études collectent à la fois des données longitudinales (mesures) et des données sur la survie. -- - Les données ***longitudinales*** sont des données pour lesquelles une variable réponse `\(y\)` (*biomarker*) est mesurée à différents moments (pression artérielle, le poids, les CD4, etc ...) -- - Les données de ***survie*** enregistrent les durées jusqu'à un événement d'intérêt tel que le temps jusqu'au décès par cancer par exemple -- - En l'absence de corrélation entre la réponse longitudinale et la *survie*, chaque *outcome* peut être analysé séparément. -- - Lorsque la réponse longitudinale et la *survie* sont liées, les deux outcomes doivent être analysés conjointement pour éviter des résultats potentiellement biaisés. --- # Modèle joints - Deux procéssus qui sont potentiellement liés : - Un modèle linéaire (mixte) longitudinal (*biomarker*) - Un modèle de survie (survival/time-to-event), survenu d'un évènement (*décès*) -- - On peut être intéresser par ... - Estimer la trajectoire du *biomarker* en utilisant la survenu de l'évènement (**informative**) - Estimer la relation entre la trajectoire du *biomarker* et la survenu de l'évènement --- # Modèle joints Les modèles joints sont utiles : -- - Pour évaluer l'impact d'une covariable longitudinale (mesurée avec erreur) sur le temps de survenu d'un événement d'intérêt -- - Estimer l'effet des covariables indépendantes du temps sur l'*outcome *longitudinal et la *survie* -- - Estimer l'effet des covariables dépendantes du temps sur l'*outcome *longitudinal et la *survie* -- - Pour tenir compte des *dropout* informatifs dans l'analyse des données longitudinales --- # Modèle joints - On suppose un essai clinique où on observe un *biomarker* mesuré à différents moments et le temps de survenu d'un évènement d'intérêt -- - Soit `\(T_i^*\)` la vraie durée de vie du patient `\(i \in \{ 1, 2 \dots, n \}\)` et `\(T_i = min(T_i^*,C_i)\)` la durée de vie observée, avec `\(C_i\)` le temps de censure -- - `\(\delta_i,\)` l'indicateur de l'évènement (égal à `\(1\)` si vraie évènement, `\(0\)` si censure) -- - Soit `\(y_i(t_{ij}), j = \{1, \dots, m_i\}\)` représentant les mesures répétées du *biomarker* pour le patient `\(i\)` au temps `\(t_{ij}\)` -- - On suppose que la censure et les temps de mesure ne sont pas informatifs. --- # Etudes longitudinales et *drop-out* informatif - Dans une étude longitudinale, il y a souvent des données manquantes -- - Ces données manquantes peuvent être informatives: elles ne doivent pas être ignorées dans les analyses. -- - Si la valeur d'un *biomarker* `\(y\)` est liée au risque de décès : -- - les valeurs élevées de `\(y\)` augmentent le risque de décès -- - au fil du temps, les patients disparaissent pour cause de décès -- - on se retrouvera avec une population en "meilleur" santé (valeurs plus faible de `\(y\)`). **L'effet du temps sera donc biaisé** --- # Données longitudinales .underline[sans] *drop-out*  --- # Données longitudinales .underline[avec] *drop-out*  --- # Le (sous) modèle longitudinal On modélise `\(y_i(t_{ij})\)` à l'aide d'un modèle linéaire mixte. -- `$$y_i(t_{ij}) = \color{blue}{\mu_i(t_{ij})} + \varepsilon_{ij}, \quad \varepsilon_{ij} \sim N(0, \sigma^2)$$` -- avec `\(\color{blue}{\mu_i(t_{ij})}\)` la fonction de trajectoire "réelle", définit par : -- `$$\begin{aligned} \color{blue}{\mu_i(t_{ij})} &= (\beta_{0} + b_{i0}) + (\beta_{10} + b_{i1})t_{ij} + \boldsymbol{x}_i^T(t_{ij})\boldsymbol{\beta}, \quad (b_{i0}, b_{i1})^T \sim N(\boldsymbol{0}, \Sigma) \end{aligned}$$` -- - Les effets aléatoires sont indépendants des erreurs de mesures `\(\varepsilon_{ij}\)` -- - Les sujets sont indépendants --- # Le (sous) modèle de survie *Proproportional hazards model*, paramétrique (Weibull, autres AFT) ou semi-paramétrique (Cox) `$$h_i(t) = h_0(t)\exp{\left(\boldsymbol{w}_i^T\boldsymbol{\gamma} + \alpha\color{blue}{\mu_i(t_{ij})} \right)}$$` -- - `\(h_0(t)\)` est la *baseline hazard function*, et `\(\boldsymbol{w}_i^T\)` est un ensemble de covariables indépendantes du temps associé et leur coefficient (effet) `\(\boldsymbol{\gamma}\)` -- - `\(\alpha\)` représente le paramètre d'association. - Ici on a la paramétrisation "valeur actuelle" (*current value*). C'est l'une des paramétrisations la plus utilisée. -- - Si des covariables sont dans les deux sous-modèles, on obtient les effets globaux sur la survie en combinant l'effet direct sur le *biomarker* longitudinal (multiplié `\(\alpha\)`) + l'effet direct sur la survie. --- # Autre structure d'association des modèles ## *Random effects association structure* <br> - Les sous modèles partagent des effets aléatoires (*intercept* + *slope*). `$$h_i(t) = h_0(t)\exp{\left(\boldsymbol{w}_i^T\boldsymbol{\gamma} + \alpha_1 \color{blue}{b_{i0}} + \alpha_2 \color{blue}{b_{i1}} \right)}$$` --- # Autre structure d'association des modèles ## *Gradient or rate of change association structure* <br> - On peut lier la pente (taux de variation, *slope*) du *biomarker* directement la survie. `$$h_i(t) = h_0(t)\exp{\left(\boldsymbol{w}_i^T\boldsymbol{\gamma} + \alpha \color{blue}{\mu_i'(t_{ij})} \right)}$$` -- avec `$$\color{blue}{\mu_i'(t_{ij})} = \frac{\partial \mu_i(t_{ij})}{\partial t_{ij}}$$` -- - C'est la dérivée de la trajectoire par rapport au temps --- # Autre structure d'association des modèles ## *Cumulative association structure* <br> - On peut évaluer l'effet cumulatif du *biomarker* sur la survie `$$h_i(t) = h_0(t)\exp{\left(\boldsymbol{w}_i^T\boldsymbol{\gamma} + \alpha \color{blue}{\int_0^t\mu_i(u)du} \right)}$$` --- # Cirrhose biliaire primitive *.font60[(Primary biliary cirrhosis)]* Pour illustrer on utilise une base de patients avec une cirrhose biliaire primitive (CBP) -- - `\(312\)` patients atteints de CBP recueillis à la Clinique Mayo 1974-1984 (Murtaugh et al., 1994) -- - `\(158\)` sujets randomisées pour recevoir de la D-pénicillamine et `\(154\)` pour recevoir un placebo `\((\texttt{drug})\)` -- - *Outcome* de survie `\((\texttt{status})\)` : `\(140\)` décès, toute cause -- - `\(1945\)` mesures répétées de bilirubine `\((y = \texttt{serbilir})\)` -- - Version de la base dans le package `\(\texttt{merlin}\)` de R ou pour les utilisateurs de Stata via ce [lien](https://www.mjcrowther.co.uk/data/jm_example.dta). --- # Structure de la base R (3 sujets) <table style="font-size:1em; width:100%; font-size: 20px; font-family: CMU Serif; margin-left: auto; margin-right: auto;" class="table table table-hover"> <thead> <tr> <th style="text-align:center;"> id </th> <th style="text-align:center;"> stime </th> <th style="text-align:center;"> status </th> <th style="text-align:center;"> died </th> <th style="text-align:center;"> drug </th> <th style="text-align:center;"> trt </th> <th style="text-align:center;"> placebo </th> <th style="text-align:center;"> sex </th> <th style="text-align:center;"> age </th> <th style="text-align:center;"> time </th> <th style="text-align:center;"> timebis </th> <th style="text-align:center;"> serbilir </th> <th style="text-align:center;"> logb </th> <th style="text-align:center;"> serbilir0 </th> <th style="text-align:center;"> logb0 </th> </tr> </thead> <tbody> <tr> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> 1.10 </td> <td style="text-align:center;"> Mort </td> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> D-penicil </td> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> 0 </td> <td style="text-align:center;"> Femme </td> <td style="text-align:center;"> 58.77 </td> <td style="text-align:center;"> 0.00 </td> <td style="text-align:center;"> 0.00 </td> <td style="text-align:center;"> 14.50 </td> <td style="text-align:center;"> 2.67 </td> <td style="text-align:center;"> 14.50 </td> <td style="text-align:center;"> 2.67 </td> </tr> <tr> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> Mort </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> D-penicil </td> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> 0 </td> <td style="text-align:center;"> Femme </td> <td style="text-align:center;"> 58.77 </td> <td style="text-align:center;"> 0.53 </td> <td style="text-align:center;"> 0.26 </td> <td style="text-align:center;"> 21.30 </td> <td style="text-align:center;"> 3.06 </td> <td style="text-align:center;"> 14.50 </td> <td style="text-align:center;"> 2.67 </td> </tr> <tr> <td style="text-align:center;"> 3 </td> <td style="text-align:center;"> 2.77 </td> <td style="text-align:center;"> Mort </td> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> D-penicil </td> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> 0 </td> <td style="text-align:center;"> Homme </td> <td style="text-align:center;"> 70.07 </td> <td style="text-align:center;"> 0.00 </td> <td style="text-align:center;"> 0.00 </td> <td style="text-align:center;"> 1.40 </td> <td style="text-align:center;"> 0.34 </td> <td style="text-align:center;"> 1.40 </td> <td style="text-align:center;"> 0.34 </td> </tr> <tr> <td style="text-align:center;"> 3 </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> Mort </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> D-penicil </td> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> 0 </td> <td style="text-align:center;"> Homme </td> <td style="text-align:center;"> 70.07 </td> <td style="text-align:center;"> 0.48 </td> <td style="text-align:center;"> 0.24 </td> <td style="text-align:center;"> 1.10 </td> <td style="text-align:center;"> 0.10 </td> <td style="text-align:center;"> 1.40 </td> <td style="text-align:center;"> 0.34 </td> </tr> <tr> <td style="text-align:center;"> 3 </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> Mort </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> D-penicil </td> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> 0 </td> <td style="text-align:center;"> Homme </td> <td style="text-align:center;"> 70.07 </td> <td style="text-align:center;"> 1.00 </td> <td style="text-align:center;"> 0.50 </td> <td style="text-align:center;"> 1.50 </td> <td style="text-align:center;"> 0.41 </td> <td style="text-align:center;"> 1.40 </td> <td style="text-align:center;"> 0.34 </td> </tr> <tr> <td style="text-align:center;"> 3 </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> Mort </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> D-penicil </td> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> 0 </td> <td style="text-align:center;"> Homme </td> <td style="text-align:center;"> 70.07 </td> <td style="text-align:center;"> 2.03 </td> <td style="text-align:center;"> 1.02 </td> <td style="text-align:center;"> 1.80 </td> <td style="text-align:center;"> 0.59 </td> <td style="text-align:center;"> 1.40 </td> <td style="text-align:center;"> 0.34 </td> </tr> <tr> <td style="text-align:center;"> 5 </td> <td style="text-align:center;"> 4.12 </td> <td style="text-align:center;"> Censure </td> <td style="text-align:center;"> 0 </td> <td style="text-align:center;"> Placebo </td> <td style="text-align:center;"> 0 </td> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> Femme </td> <td style="text-align:center;"> 38.11 </td> <td style="text-align:center;"> 0.00 </td> <td style="text-align:center;"> 0.00 </td> <td style="text-align:center;"> 3.40 </td> <td style="text-align:center;"> 1.22 </td> <td style="text-align:center;"> 3.40 </td> <td style="text-align:center;"> 1.22 </td> </tr> <tr> <td style="text-align:center;"> 5 </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> Censure </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> Placebo </td> <td style="text-align:center;"> 0 </td> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> Femme </td> <td style="text-align:center;"> 38.11 </td> <td style="text-align:center;"> 0.54 </td> <td style="text-align:center;"> 0.27 </td> <td style="text-align:center;"> 1.90 </td> <td style="text-align:center;"> 0.64 </td> <td style="text-align:center;"> 3.40 </td> <td style="text-align:center;"> 1.22 </td> </tr> <tr> <td style="text-align:center;"> 5 </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> Censure </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> Placebo </td> <td style="text-align:center;"> 0 </td> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> Femme </td> <td style="text-align:center;"> 38.11 </td> <td style="text-align:center;"> 1.07 </td> <td style="text-align:center;"> 0.54 </td> <td style="text-align:center;"> 2.50 </td> <td style="text-align:center;"> 0.92 </td> <td style="text-align:center;"> 3.40 </td> <td style="text-align:center;"> 1.22 </td> </tr> <tr> <td style="text-align:center;"> 5 </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> Censure </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> Placebo </td> <td style="text-align:center;"> 0 </td> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> Femme </td> <td style="text-align:center;"> 38.11 </td> <td style="text-align:center;"> 2.11 </td> <td style="text-align:center;"> 1.05 </td> <td style="text-align:center;"> 5.70 </td> <td style="text-align:center;"> 1.74 </td> <td style="text-align:center;"> 3.40 </td> <td style="text-align:center;"> 1.22 </td> </tr> <tr> <td style="text-align:center;"> 5 </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> Censure </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> Placebo </td> <td style="text-align:center;"> 0 </td> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> Femme </td> <td style="text-align:center;"> 38.11 </td> <td style="text-align:center;"> 3.01 </td> <td style="text-align:center;"> 1.50 </td> <td style="text-align:center;"> 5.20 </td> <td style="text-align:center;"> 1.65 </td> <td style="text-align:center;"> 3.40 </td> <td style="text-align:center;"> 1.22 </td> </tr> <tr> <td style="text-align:center;"> 5 </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> Censure </td> <td style="text-align:center;"> </td> <td style="text-align:center;"> Placebo </td> <td style="text-align:center;"> 0 </td> <td style="text-align:center;"> 1 </td> <td style="text-align:center;"> Femme </td> <td style="text-align:center;"> 38.11 </td> <td style="text-align:center;"> 3.98 </td> <td style="text-align:center;"> 1.99 </td> <td style="text-align:center;"> 19.00 </td> <td style="text-align:center;"> 2.94 </td> <td style="text-align:center;"> 3.40 </td> <td style="text-align:center;"> 1.22 </td> </tr> </tbody> </table> --- # Structure de la base Stata (3 sujets) ```stata set linesize 250 use "data/pbc.dta" format stime age - logb0 %9.3f list id stime status died drug trt placebo sex age time timebis logb if inlist(id,1,3,5), noobs sepby(id) ``` ``` | id stime status died drug trt placebo sex age time timebis logb | |----------------------------------------------------------------------------------------------------| | 1 1.095 Mort 1 D-penicil 1 0 Femme 58.767 0.000 0.000 2.674 | | 1 . Mort . D-penicil 1 0 Femme 58.767 0.526 0.263 3.059 | |----------------------------------------------------------------------------------------------------| | 3 2.771 Mort 1 D-penicil 1 0 Homme 70.074 0.000 0.000 0.336 | | 3 . Mort . D-penicil 1 0 Homme 70.074 0.482 0.241 0.095 | | 3 . Mort . D-penicil 1 0 Homme 70.074 0.997 0.498 0.405 | | 3 . Mort . D-penicil 1 0 Homme 70.074 2.034 1.017 0.588 | |----------------------------------------------------------------------------------------------------| | 5 4.121 Censure 0 Placebo 0 1 Femme 38.106 0.000 0.000 1.224 | | 5 . Censure . Placebo 0 1 Femme 38.106 0.545 0.272 0.642 | | 5 . Censure . Placebo 0 1 Femme 38.106 1.071 0.535 0.916 | | 5 . Censure . Placebo 0 1 Femme 38.106 2.105 1.053 1.740 | | 5 . Censure . Placebo 0 1 Femme 38.106 3.006 1.503 1.649 | | 5 . Censure . Placebo 0 1 Femme 38.106 3.984 1.992 2.944 | +----------------------------------------------------------------------------------------------------+ ``` --- # Trajectoire de la réponse (1)  --- # Trajectoire de la réponse (2)  --- # Trajectoire de la réponse (2) : interprétations - Il semble y avoir une tendance générale à la hausse -- - Beaucoup plus marquée chez les patients décédés que chez ceux qui sont censurés -- - Cela indique une association positive entre la réponse longitudinale et la durée avant le décès -- - Un niveau plus élevé du *biomarker* semble être associé à la durée avant le décès --- # Courbe de survie de Kaplan Meier par valeur de bilirubin  --- # Trajectoire de la réponse (16 sujets)  --- # R Modèle Survie : `library(survival)`
Characteristic
% (n)
Event N
Cox model
Weibull model
HR
(95% CI)
1
p-value
HR (95% CI)
1
p-value
Traitement
D-penicil
51% (158)
71
1.00
1.00
Placebo
49% (154)
69
1.14 (0.80 to 1.61)
0.469
1.13 (0.80 to 1.60)
0.482
Sexe
Femme
88% (276)
114
1.00
1.00
Homme
12% (36)
26
1.00 (0.64 to 1.59)
0.986
0.99 (0.62 to 1.57)
0.963
Age (années)
140
1.05 (1.03 to 1.06)
<0.001
1.05 (1.03 to 1.06)
<0.001
Mean (SD)
50 (11)
Bilirubine (base)
140
2.96 (2.47 to 3.55)
<0.001
2.87 (2.41 to 3.43)
<0.001
Mean (SD)
0.57 (1.03)
1
HR = Hazard Ratio, CI = Confidence Interval, CI = Confidence Interval
--- # Stata, Modèle Survie - On déclare à Stata qu'on a des données de survie ```stata stset stime, failure(died) ``` ``` Survival-time data settings Failure event: died!=0 & died<. Observed time interval: (0, stime] Exit on or before: failure -------------------------------------------------------------------------- 1,945 total observations 1,633 event time missing (stime>=.) PROBABLE ERROR -------------------------------------------------------------------------- 312 observations remaining, representing 140 failures in single-record/single-failure data 2,000.307 total analysis time at risk and under observation At risk from t = 0 Earliest observed entry t = 0 Last observed exit t = 14.30566 ``` --- # Stata, Cox model : `stcox` ```stata stcox i.drug i.sex age logb0, nolog cformat(%9.2f) ``` ``` Failure _d: died Analysis time _t: stime Cox regression with Breslow method for ties No. of subjects = 312 Number of obs = 312 No. of failures = 140 Time at risk = 2,000.3066 LR chi2(4) = 167.73 Log likelihood = -642.69626 Prob > chi2 = 0.0000 ------------------------------------------------------------------------------ _t | Haz. ratio Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- drug | D-penicil | 1.00 (base) Placebo | 1.14 0.20 0.73 0.467 0.80 1.61 | sex | Femme | 1.00 (base) Homme | 1.00 0.23 0.02 0.985 0.64 1.59 | age | 1.05 0.01 5.64 0.000 1.03 1.06 logb0 | 2.96 0.27 11.73 0.000 2.47 3.55 ------------------------------------------------------------------------------ ``` --- # Stata, Post estimation : Fonction de survie ```stata stcurve, survival at(drug = (1 2) age = (30 50)) scheme(plotplainblind) xsize(15) ysize(7) /// legend(pos(12) row(1) size(*1.3) order(1 "D-penicil/30ans" 2 "D-penicil/50ans" 3 "Pacebo/30ans" 4 "Pacebo/30ans")) /// xlab(,labs(3.5)) ylab(,labs(3.5)) xtitle(,size(4.5)) ytitle(,size(4.5)) ``` --  --- # Stata, Post estimation : Fonction de hazard ```stata stcurve, hazard at(drug = (1 2) age = (30 50)) scheme(plotplainblind) xsize(15) ysize(7) /// legend(pos(12) row(1) size(*1.3) order(1 "D-penicil/30ans" 2 "D-penicil/50ans" 3 "Pacebo/30ans" 4 "Pacebo/50ans")) /// xlab(,labs(3.5)) ylab(,labs(3.5)) xtitle(,size(4.5)) ytitle(,size(4.5)) ``` --  --- # Stata, Weibull model : `streg` (modèle paramétrique) ```stata streg i.drug i.sex age logb0, dist(weibull) cformat(%9.2f) nolog ``` ``` Failure _d: died Analysis time _t: stime Weibull PH regression No. of subjects = 312 Number of obs = 312 No. of failures = 140 Time at risk = 2,000.3066 LR chi2(4) = 166.64 Log likelihood = -271.88609 Prob > chi2 = 0.0000 ------------------------------------------------------------------------------ _t | Haz. ratio Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- drug | D-penicil | 1.00 (base) Placebo | 1.13 0.20 0.70 0.482 0.80 1.60 | sex | Femme | 1.00 (base) Homme | 0.99 0.23 -0.05 0.963 0.62 1.57 | age | 1.05 0.01 5.65 0.000 1.03 1.06 logb0 | 2.87 0.26 11.84 0.000 2.41 3.42 _cons | 0.00 0.00 -12.37 0.000 0.00 0.00 -------------+---------------------------------------------------------------- /ln_p | 0.36 0.07 5.12 0.000 0.22 0.50 -------------+---------------------------------------------------------------- p | 1.44 0.10 1.25 1.65 1/p | 0.70 0.05 0.61 0.80 ------------------------------------------------------------------------------ Note: _cons estimates baseline hazard. ``` --- # Stata, Weibull model : `gsem` (structural equation model) ```stata gsem (stime <- i.drug age logb0, family(weibull, fail(died)) cformat(%9.2f) nolog) ``` ``` Generalized structural equation model Number of obs = 312 Response: stime No. of failures = 140 Family: Weibull Time at risk = 2,000.31 Form: Proportional hazards Link: Log Log likelihood = -428.52698 ------------------------------------------------------------------------------ | Coefficient Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- stime | drug | D-penicil | 0.00 (base) Placebo | 0.12 0.18 0.70 0.483 -0.22 0.47 | age | 0.05 0.01 6.02 0.000 0.03 0.06 logb0 | 1.06 0.09 11.95 0.000 0.88 1.23 _cons | -6.58 0.51 -12.80 0.000 -7.59 -5.57 -------------+---------------------------------------------------------------- /stime | ln_p | 0.36 0.07 0.22 0.50 ------------------------------------------------------------------------------ ``` --- # Stata, Weibull model : `gsem` ```stata estat eform, cformat(%9.2f) ``` ``` | exp(b) Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- stime | drug | D-penicil | 1.00 (base) Placebo | 1.13 0.20 0.70 0.483 0.80 1.60 | age | 1.05 0.01 6.02 0.000 1.03 1.06 logb0 | 2.87 0.25 11.95 0.000 2.42 3.42 _cons | 0.00 0.00 -12.80 0.000 0.00 0.00 ------------------------------------------------------------------------------ ``` --- # Stata, modèle mixte : `mixed` ```stata mixed logb i.drug time || id: time, mle stddev covariance(unstr) technique(nr) nolog ``` ``` Mixed-effects ML regression Number of obs = 1,945 Group variable: id Number of groups = 312 Obs per group: min = 1 avg = 6.2 max = 16 Wald chi2(2) = 206.99 Log likelihood = -1525.2746 Prob > chi2 = 0.0000 ------------------------------------------------------------------------------ logb | Coefficient Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- drug | D-penicil | 0 (base) Placebo | .1282264 .1120144 1.14 0.252 -.0913179 .3477707 | time | .1772868 .0123674 14.33 0.000 .1530471 .2015265 _cons | .4324002 .0800797 5.40 0.000 .2754469 .5893535 ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ Random-effects parameters | Estimate Std. err. [95% conf. interval] -----------------------------+------------------------------------------------ id: Unstructured | sd(time) | .170855 .0117884 .1492443 .1955949 sd(_cons) | .9952186 .0424102 .9154727 1.081911 corr(time,_cons) | .4183218 .0764693 .2580222 .5562068 -----------------------------+------------------------------------------------ sd(Residual) | .3490452 .0067617 .3360409 .3625528 ------------------------------------------------------------------------------ LR test vs. linear model: chi2(3) = 2871.90 Prob > chi2 = 0.0000 Note: LR test is conservative and provided only for reference. ``` --- # Stata, modèle mixte : `gsem` .panelset[ .panel[.panel-name[Stata Code] - Modèle 1 : *Random Intercept* ```stata #delimit; gsem (logb <- i.drug c.time M1[id]@1 c.time#M2[id]@1, fam(gauss) link(id) covstr(M1[id] M2[id], diagonal) /*covariance(M1[id]*M2[id]@0)*/ nocnsreport nolog) ; #delimit cr ``` <br> - Modèle 2 : *Random Intercept, Slope* ```stata #delimit; gsem (logb <- i.drug c.time M1[id]@1 c.timebis#M2[id]@1, fam(gauss) link(id) covstructure(M1[id] M2[id], unstr) /*covariance(M1[id]*M2[id])*/ nolog nocnsreport) ; #delimit cr ``` ] .panel[.panel-name[Modèle 1] ``` delimiter now ; Generalized structural equation model Number of obs = 1,945 Response: logb Family: Gaussian Link: Identity Log likelihood = -1536.9487 ------------------------------------------------------------------------------- | Coefficient Std. err. z P>|z| [95% conf. interval] --------------+---------------------------------------------------------------- logb | drug | D-penicil | 0 (base) Placebo | .134177 .1181044 1.14 0.256 -.0973033 .3656573 | time | .1617294 .0128887 12.55 0.000 .136468 .1869909 | M1[id] | 1 (constrained) | c.time#M2[id] | 1 (constrained) | _cons | .4356243 .0831797 5.24 0.000 .272595 .5986535 --------------+---------------------------------------------------------------- var(M1[id])| 1.038527 .0877061 .8800994 1.225473 var(M2[id])| .0294898 .004093 .0224662 .0387091 --------------+---------------------------------------------------------------- var(e.logb)| .1209605 .0046763 .1121339 .130482 ------------------------------------------------------------------------------- ``` ] .panel[.panel-name[Modèle 2] ``` delimiter now ; Generalized structural equation model Number of obs = 1,945 Response: logb Family: Gaussian Link: Identity Log likelihood = -1525.2746 ------------------------------------------------------------------------------------ | Coefficient Std. err. z P>|z| [95% conf. interval] -------------------+---------------------------------------------------------------- logb | drug | D-penicil | 0 (base) Placebo | .1282264 .1120749 1.14 0.253 -.0914363 .3478891 | time | .1772868 .0130372 13.60 0.000 .1517343 .2028393 | M1[id] | 1 (constrained) | c.timebis#M2[id] | 1 (constrained) | _cons | .4324002 .0800887 5.40 0.000 .2754292 .5893712 -------------------+---------------------------------------------------------------- var(M1[id])| .9904598 .0844148 .8380901 1.170531 var(M2[id])| .1167657 .0161128 .0890954 .1530295 -------------------+---------------------------------------------------------------- cov(M1[id],M2[id])| .1422613 .0300174 4.74 0.000 .0834282 .2010943 -------------------+---------------------------------------------------------------- var(e.logb)| .1218326 .0047203 .1129235 .1314445 ------------------------------------------------------------------------------------ ``` ] ] --- # Stata, modèle joints : `merlin`, *Random Intercept* .panelset[ .panel[.panel-name[Code] - *Current value association* ```stata #delimit; merlin (logb time M1[id]@1, family(gaussian)) (stime placebo age EV[logb], fam(weibull, failure(died))), intmethod(mvaghermite) intpoints(7) technique(nr) nolog ; ``` <br> - *Random effect association* ```stata merlin (logb time M1[id]@1, fam(gaussian)) (stime placebo age M1[id], fam(weibull, failure(died))), nolog ``` <br> - *Cumulative association* ```stata merlin (logb time M1[id]@1, fam(gaussian)) (stime placebo age iEV[logb], fam(weibull, failure(died))), nolog ``` ] .panel[.panel-name[Current value association] ``` Fitting fixed effects model: Fitting full model: Mixed effects regression model Number of obs = 1,945 Log likelihood = -2284.7594 ------------------------------------------------------------------------------ | Coefficient Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- logb: | time | .0974722 .0043194 22.57 0.000 .0890063 .105938 M1[id] | 1 . . . . . _cons | .5782798 .0649178 8.91 0.000 .4510432 .7055163 sd(resid.) | .4913687 .0085918 .4748144 .5085001 -------------+---------------------------------------------------------------- stime: | placebo | .0944978 .1792764 0.53 0.598 -.2568775 .4458731 age | .0601927 .008457 7.12 0.000 .0436173 .076768 EV[] | 1.375147 .112922 12.18 0.000 1.153824 1.59647 _cons | -8.076551 .6260561 -12.90 0.000 -9.303599 -6.849504 log(gamma) | .520452 .0713696 7.29 0.000 .3805702 .6603339 -------------+---------------------------------------------------------------- id: | sd(M1) | 1.106563 .0470289 1.018123 1.202686 ------------------------------------------------------------------------------ ``` ] .panel[.panel-name[Random effect association] ``` Fitting fixed effects model: Fitting full model: Mixed effects regression model Number of obs = 1,945 Log likelihood = -2284.7594 ------------------------------------------------------------------------------ | Coefficient Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- logb: | time | .0974722 .0043194 22.57 0.000 .0890063 .105938 M1[id] | 1 . . . . . _cons | .57828 .0649178 8.91 0.000 .4510434 .7055165 sd(resid.) | .4913687 .0085918 .4748144 .5085001 -------------+---------------------------------------------------------------- stime: | placebo | .094498 .1792764 0.53 0.598 -.2568774 .4458733 age | .0601928 .0084569 7.12 0.000 .0436176 .0767681 M1[id] | 1.375147 .1129219 12.18 0.000 1.153824 1.59647 _cons | -7.281341 .5969089 -12.20 0.000 -8.451261 -6.111421 log(gamma) | .5204523 .0713696 7.29 0.000 .3805705 .6603341 -------------+---------------------------------------------------------------- id: | sd(M1) | 1.106563 .0470289 1.018123 1.202686 ------------------------------------------------------------------------------ ``` ] .panel[.panel-name[Cumulative association] ``` Fitting fixed effects model: Fitting full model: Mixed effects regression model Number of obs = 1,945 Log likelihood = -2356.8201 ------------------------------------------------------------------------------ | Coefficient Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- logb: | time | .0986892 .0043429 22.72 0.000 .0901773 .1072011 M1[id] | 1 . . . . . _cons | .5582468 .0644958 8.66 0.000 .4318374 .6846563 sd(resid.) | .4913076 .0085898 .4747572 .508435 -------------+---------------------------------------------------------------- stime: | placebo | .1967482 .1731024 1.14 0.256 -.1425262 .5360227 age | .0549198 .0080979 6.78 0.000 .0390482 .0707914 iEV[] | .0935277 .0131188 7.13 0.000 .0678154 .11924 _cons | -6.116493 .5267488 -11.61 0.000 -7.148902 -5.084084 log(gamma) | .1711225 .0739781 2.31 0.021 .026128 .3161169 -------------+---------------------------------------------------------------- id: | sd(M1) | 1.098356 .0466558 1.010615 1.193714 ------------------------------------------------------------------------------ ``` ] ] --- # Random slope. Current value association ```stata merlin (logb time M1[id]@1 time#M2[id]@1, fam(gaussian) timevar(time)) (stime placebo age sex EV[logb], fam(weibull, failure(died))), cov(unstr) restartvalues(M1 1 M2 0.1) nolog; ``` ``` delimiter now ; Mixed effects regression model Number of obs = 1,945 Log likelihood = -1972.7359 ------------------------------------------------------------------------------ | Coefficient Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- logb: | time | .172882 .0129342 13.37 0.000 .1475315 .1982326 M1[id] | 1 . . . . . time#M2[id] | 1 . . . . . _cons | .5046443 .0583123 8.65 0.000 .3903543 .6189343 sd(resid.) | .3481897 .0067211 .3352627 .3616151 -------------+---------------------------------------------------------------- stime: | placebo | .1376123 .1767057 0.78 0.436 -.2087245 .4839492 age | .0578418 .0088909 6.51 0.000 .040416 .0752676 sex | .039843 .2385632 0.17 0.867 -.4277324 .5074183 EV[] | .7101999 .0806747 8.80 0.000 .5520803 .8683195 _cons | -7.369589 .6055144 -12.17 0.000 -8.556375 -6.182803 log(gamma) | .2414628 .0722123 3.34 0.001 .0999292 .3829963 -------------+---------------------------------------------------------------- id: | sd(M1) | 1.002638 .0426881 .9223664 1.089895 sd(M2) | .1728658 .0119119 .1510267 .1978628 corr(M2,M1) | .435763 .0734724 .2814268 .5681226 ------------------------------------------------------------------------------ ``` --- # Random slope. Random effect association ```stata merlin (logb time M1[id]@1 time#M2[id]@1, fam(gaussian) timevar(time)) (stime placebo age sex M1[id] M2[id], fam(weibull, failure(died))), cov(unstr) restartvalues(M1 1 M2 0.1) nolog ; ``` ``` delimiter now ; Mixed effects regression model Number of obs = 1,945 Log likelihood = -1894.1313 ------------------------------------------------------------------------------ | Coefficient Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- logb: | time | .2014861 .0143148 14.08 0.000 .1734295 .2295426 M1[id] | 1 . . . . . time#M2[id] | 1 . . . . . _cons | .4929323 .0580162 8.50 0.000 .3792227 .6066419 sd(resid.) | .3471596 .0066628 .3343432 .3604672 -------------+---------------------------------------------------------------- stime: | placebo | .0490363 .2017467 0.24 0.808 -.3463799 .4444526 age | .0668058 .0103209 6.47 0.000 .0465772 .0870344 sex | -.2080335 .2737672 -0.76 0.447 -.7446074 .3285405 M1[id] | 1.204667 .1415654 8.51 0.000 .9272044 1.48213 M2[id] | 7.508258 .9669993 7.76 0.000 5.612974 9.403542 _cons | -8.631326 .8054924 -10.72 0.000 -10.21006 -7.05259 log(gamma) | .8468186 .0871465 9.72 0.000 .6760147 1.017623 -------------+---------------------------------------------------------------- id: | sd(M1) | .9991078 .0424512 .9192752 1.085873 sd(M2) | .1963487 .0144576 .1699621 .2268317 corr(M2,M1) | .5132364 .0617975 .3822387 .6240118 ------------------------------------------------------------------------------ ``` --- # Random slope. Cumulative association ```stata merlin (logb time M1[id]@1 time#M2[id]@1, fam(gaussian) timevar(time)) (stime placebo age sex iEV[logb], fam(weibull, failure(died))), cov(unstr) restartvalues(M1 1 M2 0.1) nolog ; ``` ``` delimiter now ; Mixed effects regression model Number of obs = 1,945 Log likelihood = -2014.659 ------------------------------------------------------------------------------ | Coefficient Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- logb: | time | .175436 .0130909 13.40 0.000 .1497783 .2010936 M1[id] | 1 . . . . . time#M2[id] | 1 . . . . . _cons | .4961729 .0580483 8.55 0.000 .3824003 .6099454 sd(resid.) | .3487104 .0067487 .3357308 .3621917 -------------+---------------------------------------------------------------- stime: | placebo | .1737923 .1724912 1.01 0.314 -.1642842 .5118688 age | .0485811 .0085728 5.67 0.000 .0317788 .0653834 sex | .3055313 .2299103 1.33 0.184 -.1450847 .7561472 iEV[] | .0413797 .0116459 3.55 0.000 .0185541 .0642052 _cons | -6.007028 .5480056 -10.96 0.000 -7.081099 -4.932957 log(gamma) | .1086591 .0744668 1.46 0.145 -.0372932 .2546113 -------------+---------------------------------------------------------------- id: | sd(M1) | .997817 .0425082 .917886 1.084709 sd(M2) | .1722515 .0119054 .1504288 .19724 corr(M2,M1) | .4238052 .0758592 .2646375 .5604944 ------------------------------------------------------------------------------ ``` --- # Random slope. Gradiant association, fractional polynomial ```stata merlin (logb fp(time, pow(1)) M1[id]@1 fp(time, pow(1))#M2[id]@1, fam(gaussian) timevar(time)) (stime placebo age sex dEV[logb], fam(weibull, failure(died))), cov(unstr) restartvalues(M1 1 M2 0.1) nolog ; ``` ``` delimiter now ; variables created for model 1, component 1: _cmp_1_1_1 to _cmp_1_1_1 Mixed effects regression model Number of obs = 1,945 Log likelihood = -1925.3643 ------------------------------------------------------------------------------ | Coefficient Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- logb: | fp() | .2192966 .0143835 15.25 0.000 .1911054 .2474878 M1[id] | 1 . . . . . fp()#M2[id] | 1 . . . . . _cons | .4836871 .0559192 8.65 0.000 .3740876 .5932867 sd(resid.) | .3554995 .006974 .3420902 .3694345 -------------+---------------------------------------------------------------- stime: | placebo | .0706699 .2206293 0.32 0.749 -.3617556 .5030953 age | .0564519 .0112882 5.00 0.000 .0343274 .0785763 sex | .2171143 .2979299 0.73 0.466 -.3668175 .8010462 dEV[] | 10.98452 1.231099 8.92 0.000 8.57161 13.39743 _cons | -10.85363 1.071445 -10.13 0.000 -12.95362 -8.753637 log(gamma) | .8025727 .0976509 8.22 0.000 .6111804 .9939649 -------------+---------------------------------------------------------------- id: | sd(M1) | .9658252 .0409503 .8888085 1.049516 sd(M2) | .2099789 .0146959 .1830637 .2408514 corr(M2,M1) | .6997001 .0394773 .6138797 .769174 ------------------------------------------------------------------------------ ``` --- # Modèle joints : traitement dans les 2 modèles ```stata merlin (logb time placebo M1[id]@1 time#M2[id]@1, fam(gaussian) timevar(time)) (stime placebo EV[logb], family(weibull, failure(died)) timevar(stime)), covariance(unstr) restartvalues(M1 1 M2 0.1) nolog ; ``` ``` delimiter now ; Mixed effects regression model Number of obs = 1,945 Log likelihood = -1918.5299 ------------------------------------------------------------------------------ | Coefficient Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- logb: | time | .1849158 .0133043 13.90 0.000 .1588397 .2109918 placebo | .1313651 .1119896 1.17 0.241 -.0881305 .3508608 M1[id] | 1 . . . . . time#M2[id] | 1 . . . . . _cons | .4280096 .0802409 5.33 0.000 .2707402 .5852789 sd(resid.) | .3471621 .0066736 .3343254 .3604918 -------------+---------------------------------------------------------------- stime: | placebo | -.0392779 .1791411 -0.22 0.826 -.390388 .3118323 EV[] | 1.241051 .0932787 13.30 0.000 1.058229 1.423874 _cons | -4.370797 .2801213 -15.60 0.000 -4.919825 -3.82177 log(gamma) | .0194596 .0825675 0.24 0.814 -.1423696 .1812889 -------------+---------------------------------------------------------------- id: | sd(M1) | 1.0003 .042573 .9202442 1.087321 sd(M2) | .1805618 .0123693 .1578755 .206508 corr(M2,M1) | .4246963 .0728335 .2722046 .5563785 ------------------------------------------------------------------------------ ``` --- # Overall treatment effect on survival ```stata matrix list e(b) ``` ``` e(b)[1,13] _cmp_1_1_1: _cmp_1_2_1: _cmp_1_3_1: _cmp_1_4_1: cons1: dap1_1: _cmp_2_1_1: _cmp_2_2_1: cons2: _cons _cons _cons _cons _cons _cons _cons _cons _cons y1 .18491577 .13136513 1 1 .4280096 -1.0579634 -.03927789 1.2410515 -4.3707972 dap2_1: lns1_1: lns1_2: art1_1_2: _cons _cons _cons _cons y1 .01945965 .00030031 -1.7116823 .45340794 ``` -- <br> - Le log hazard-ratio global pour l'effet du placebo sur la survie est `$$\alpha \beta + \gamma, \mbox{ avec } \alpha = 1.241, \beta = 0.131, \gamma = -0.039$$` -- - On peut le calculer avec une combinaison **non linéaire** des paramètres du modèle : -- ```stata nlcom (placebo_survival: [_cmp_2_2_1][_cons]*[_cmp_1_2_1][_cons] + [_cmp_2_1_1][_cons]) ``` ``` placebo_su~l: [_cmp_2_2_1][_cons]*[_cmp_1_2_1][_cons] + [_cmp_2_1_1][_cons] ---------------------------------------------------------------------------------- | Coefficient Std. err. z P>|z| [95% conf. interval] -----------------+---------------------------------------------------------------- placebo_survival | .123753 .2293467 0.54 0.589 -.3257582 .5732642 ---------------------------------------------------------------------------------- ``` --- # Modèle joints : Restricted cubic spline ```stata merlin (logb rcs(time, df(1)) placebo M1[id]@1 rcs(time, df(1))#M2[id]@1, fam(gaussian) timevar(time)) (stime placebo age EV[logb], fam(weibull, failure(died))), covariance(unstr) restartvalues(M1 1 M2 0.1) nolog ; ``` ``` delimiter now ; variables created for model 1, component 1: _cmp_1_1_1 to _cmp_1_1_1 Mixed effects regression model Number of obs = 1,945 Log likelihood = -1972.0731 ------------------------------------------------------------------------------ | Coefficient Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- logb: | rcs() | .1727339 .0129134 13.38 0.000 .1474241 .1980436 placebo | .1303464 .1119772 1.16 0.244 -.089125 .3498178 M1[id] | 1 . . . . . rcs()#M2[id] | 1 . . . . . _cons | .44027 .0802616 5.49 0.000 .2829602 .5975798 sd(resid.) | .3482309 .0067222 .3353017 .3616586 -------------+---------------------------------------------------------------- stime: | placebo | .1460657 .1768804 0.83 0.409 -.2006134 .4927449 age | .0582723 .0085285 6.83 0.000 .0415568 .0749878 EV[] | .7125079 .0798715 8.92 0.000 .5559627 .8690531 _cons | -7.354149 .5941311 -12.38 0.000 -8.518624 -6.189673 log(gamma) | .2415113 .0721999 3.35 0.001 .1000021 .3830204 -------------+---------------------------------------------------------------- id: | sd(M1) | 1.000521 .0426023 .9204117 1.087603 sd(M2) | .1726132 .0118837 .1508247 .1975495 corr(M2,M1) | .4352359 .0733578 .2811759 .5674257 ------------------------------------------------------------------------------ ``` --- # Modèle joints : non-proportional hazards .panelset[ .panel[.panel-name[Stata Code] - **Treatment effect** : `$$h_i(t) = h_0(t)\exp{\left(\gamma_1 \texttt{placebo} + \gamma_2\texttt{placebo}\times\log(t) + \alpha\color{blue}{\mu_i(t_{ij})} \right)}$$` ```stata merlin (logb fp(time, pow(1)) M1[id]@1 fp(time, pow(1))#M2[id]@1, fam(gauss) timevar(time)) /// (stime placebo placebo#fp(stime, pow(0)) EV[logb], fam(weibull, failure(died)) timevar(stime)), /// covariance(unstr) restartvalues(M1 1 M2 0.1) nolog ; ``` <br> - **Association effect** : `$$h_i(t) = h_0(t)\exp{\left(\gamma_1 \texttt{placebo} + \alpha_1\color{blue}{\mu_i(t_{ij})} + \alpha_2\color{blue}{\mu_i(t_{ij})}\times \log(t)\right)}$$` ```stata merlin (logb fp(time, pow(1)) M1[id]@1 fp(time, pow(1))#M2[id]@1, fam(gauss) timevar(time)) /// (stime placebo EV[logb] EV[logb]#fp(stime, pow(0)), fam(weibull, failure(died)) timevar(stime)), /// covariance(unstr) restartvalues(M1 1 M2 0.1) nolog ; ``` ] .panel[.panel-name[Treatment effect] ``` delimiter now ; variables created for model 1, component 1: _cmp_1_1_1 to _cmp_1_1_1 variables created for model 2, component 2: _cmp_2_2_1 to _cmp_2_2_1 Mixed effects regression model Number of obs = 1,945 Log likelihood = -1919.0794 ------------------------------------------------------------------------------ | Coefficient Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- logb: | fp() | .1850538 .0133219 13.89 0.000 .1589435 .2111642 M1[id] | 1 . . . . . fp()#M2[id] | 1 . . . . . _cons | .4929608 .0582836 8.46 0.000 .3787271 .6071946 sd(resid.) | .3471186 .0066719 .3342852 .3604448 -------------+---------------------------------------------------------------- stime: | placebo | -.1401475 .2555729 -0.55 0.583 -.6410611 .3607662 placebo#fp() | .0884933 .1689263 0.52 0.600 -.2425961 .4195826 EV[] | 1.247314 .0944558 13.21 0.000 1.062184 1.432444 _cons | -4.282816 .3197797 -13.39 0.000 -4.909572 -3.656059 log(gamma) | -.0262071 .1217259 -0.22 0.830 -.2647854 .2123712 -------------+---------------------------------------------------------------- id: | sd(M1) | 1.002564 .042663 .9223385 1.089768 sd(M2) | .1808127 .0123957 .1580791 .2068158 corr(M2,M1) | .4248652 .0729237 .2721674 .5566908 ------------------------------------------------------------------------------ ``` ] .panel[.panel-name[Association effect] ``` delimiter now ; variables created for model 1, component 1: _cmp_1_1_1 to _cmp_1_1_1 variables created for model 2, component 3: _cmp_2_3_1 to _cmp_2_3_1 Mixed effects regression model Number of obs = 1,945 Log likelihood = -1915.8459 ------------------------------------------------------------------------------ | Coefficient Std. err. z P>|z| [95% conf. interval] -------------+---------------------------------------------------------------- logb: | fp() | .1864671 .0134396 13.87 0.000 .160126 .2128082 M1[id] | 1 . . . . . fp()#M2[id] | 1 . . . . . _cons | .4940006 .0582044 8.49 0.000 .3799222 .6080791 sd(resid.) | .3470075 .0066705 .3341767 .3603309 -------------+---------------------------------------------------------------- stime: | placebo | -.1089156 .1811347 -0.60 0.548 -.4639331 .2461019 EV[] | 1.559629 .1683266 9.27 0.000 1.229715 1.889543 EV[]#fp() | -.2507349 .1007199 -2.49 0.013 -.4481423 -.0533274 _cons | -5.440698 .540824 -10.06 0.000 -6.500694 -4.380703 log(gamma) | .4407332 .1564277 2.82 0.005 .1341405 .7473259 -------------+---------------------------------------------------------------- id: | sd(M1) | 1.001 .0425932 .920905 1.088061 sd(M2) | .1824288 .0125577 .1594042 .2087791 corr(M2,M1) | .4384078 .0720171 .2872099 .5682899 ------------------------------------------------------------------------------ ``` ] ] --- # Résumé / Conclusion - L'analyse conjointe des *outcomes* longitudinaux et de survie est nécessaire pour obtenir des estimations et inférences non biaisées lorsque les deux *outcomes* sont corrélés. -- - Les modèles joints peuvent être utilisées : -- - pour évaluer les effets des covariables à la *baseline* sur les *outcomes* longitudinaux et de survie -- - pour évaluer les effets des covariables dépendantes du temps sur les *outcomes* de survie -- - pour tenir compte des *dropouts* informatifs dans l'analyse longitudinale -- - On peut utiliser `gsem` de **Stata** pour les modèles conjoints prenant en compte des *outcomes* longitudinaux non continus. La survie, cependant, est modélisée de manière paramétrique. -- - La commande `merlin` (Mixed effects regression for linear, non-linear and user-defined models) de **Stata**, crée par [Michael J. Crowther](https://www.mjcrowther.co.uk/), permet de "tout" faire 😎🤯😎