TD 4 – Modèles de survie
Année universitaire 2025–2026 • Parcours Économie de la santé & Développement durable
1 Contexte et données
On s’intéresse à la durée de grèves dans l’industrie manufacturière américaine.
Les données proviennent de :
Kennan, J. (1985), The Duration of Contract Strikes in U.S. Manufacturing, Journal of Econometrics.
Nous utiliserons la base StrikeDuration du package AER dans R, qui contient :
duration: durée de la grève (en jours)uoutput: choc d’activité non anticipé (mesure de conjoncture macroéconomique)
On construit les variables suivantes :
une durée possiblement censurée :
\(time_i = \min(duration_i, 200)\)une indicatrice d’événement (fin de grève observée) :
\(status_i = \mathbb{1} \text{ } (duration_i \le 200)\)
deux codages de la conjoncture :
uoutput_sign: cycle défavorable / favorable (signe deuoutput)uoutput_q: choc faible / moyen / fort (terciles deuoutput)
2 Présentation des données et analyse descriptive
2.1 Exercice 1 – Correspondance entre codages du cycle
On construit :
uoutput_sign: 2 modalités (cycle défavorable, favorable)uoutput_q: 3 modalités (choc faible, moyen, fort, par terciles)
- Donner la table de contingence entre ces deux codages.
- Calculer les proportions par ligne.
- Commentez : les deux « échelles » du cycle sont-elles cohérentes ?
Indication R :
Indice : commencer par construire un tableau de contingence avec
table(uoutput_sign, uoutput_q), puis utiliserprop.table(..., margin = 1)pour obtenir les proportions par ligne.
2.2 Exercice 2 – Corrélations entre variables explicatives
On considère comme variables explicatives potentielles :
uoutput(continu)uoutput_q_num: version numérique deuoutput_q(1 = faible, 2 = moyen, 3 = fort)
- Construire la matrice de corrélation entre ces deux variables.
- Commentez : la version catégorielle apporte-t-elle une information réellement nouvelle ?
Indication R :
utiliser la commande
corr()
2.3 Exercice 3 – Courbes de survie brutes
On trace les courbes de survie Kaplan–Meier de la durée de grève selon uoutput_q.
- Représenter graphiquement les courbes \(\hat S(t)\) pour chacun des trois niveaux de choc.
- Commentez : que constate-t-on sur les différences de durée de grève selon le choc d’activité ?
Indication R :
Commencez par créer l’objet de survie avec
Surv(time, status), puis estimez un Kaplan–Meier par groupe avecsurvfit(Surv_obj ~ uoutput_q, data = …). Utilisez ensuiteplot()pour tracer les courbes etlegend()pour afficher les trois niveaux de choc.
2.4 Exercice 4 – Test du log-rank
On souhaite tester l’effet global de uoutput_q sur la durée de grève à l’aide d’un test du log-rank.
- Écrire précisément les hypothèses \(H_0\) et \(H_1\).
- Calculer la statistique du test et la p-valeur.
- Conclure au seuil de 5 % sur l’effet global du choc d’activité.
Indication R :
Utilisez la fonction
survdiff(Surv(time, status) ~ uoutput_q, data = ...)pour réaliser le test du log-rank. La sortie vous donne la statistique de type \(chi^2\) , les degrés de liberté et la p-valeur, à interpréter pour conclure au seuil de 5 %.
2.5 Exercice 5 – Vérification graphique de l’hypothèse de risques proportionnels
On trace les courbes de \(\log(-\log(\hat S(t)))\) par niveau de uoutput_q.
- Les courbes semblent-elles approximativement parallèles ?
- Que suggère ce résultat sur la plausibilité du modèle de Cox avec cette variable ?
Indication R :
Utilisez
ggsurvplot()du package survminer en lui passant un objetsurvfit(Surv(...) ~ uoutput_q, ...)et l’argumentfun = "cloglog"pour obtenir les courbes de \(\log(-\log(\hat S(t)))\) par groupe, puis regardez si elles sont à peu près parallèles.
3 Modèle de Cox
3.1 Exercice 6 – Modèle de Cox avec uoutput et uoutput_q_num
On ajuste un modèle de Cox ne contenant que les variables explicatives suivantes :
uoutput(continu)uoutput_q_num(version numérique deuoutput_q)
Écrire l’équation du modèle sous la forme :
\(h_i(t) = h_0(t),\exp\big( \beta_1 uoutput_i + \beta_2 uoutput_{q,i} \big)\)
Estimer ce modèle dans R.
Interpréter le hazard ratio associé à
uoutput.Calculer le critère AIC du modèle et le noter pour comparaison.
Indication R :
ajustez un modèle de Cox avec
coxph(Surv(time, status) ~ uoutput + uoutput_q_num, data = ...), puis utilisezsummary()pour lire les coefficients et interpréter les hazard ratios, etAIC()pour comparer ce modèle aux autres spécifications.
3.2 Exercice 7 – Version purement catégorielle du cycle
On ajuste un modèle de Cox où la conjoncture est mesurée seulement par la variable qualitative uoutput_q :
cox_cat <- coxph(S_strikes ~ uoutput_q, data = strikes)
Écrire l’équation du modèle :
\(h_i(t) = h_0(t),\exp\big( \beta2,\mathbb{1}{uoutput{q,i} = \text{Choc moyen}} + \beta3,\mathbb{1}{uoutput{q,i} = \text{Choc fort}} \big).\)
À partir de
summary(cox_cat), dire s’il existe une différence significative de durée de grève entre au moins deux niveaux de choc.Comparer la déviance \((-2\log L)\) de ce modèle à celle du modèle précédent.
3.3 Exercice 8 – Nombre de paramètres et emboîtement des modèles
On considère trois modèles :
- M1 :
S ~ uoutput - M2 :
S ~ uoutput + uoutput_q_num - M3 :
S ~ uoutput_q(facteur 3 modalités)
- Donner le nombre de paramètres de pente (hors baseline) dans chacun des trois modèles.
- Quelles relations d’emboîtement existe-t-il entre ces modèles (qui est inclus dans qui) ?
3.4 Exercice 9 – Choix de la meilleure mesure du cycle
On veut déterminer quelle représentation de la conjoncture (continu vs factorisé) prédit le mieux la durée des grèves.
- Utiliser des tests de rapport de vraisemblance (LR) pour comparer :
- M1 vs M2
- M1 vs M3
- Combiner l’information des tests LR et des AIC pour choisir la mesure du choc d’activité que vous retiendriez.
- Justifier votre choix d’un point de vue économique et économétrique.
Indication R :
estimez séparément les trois modèles de Cox correspondant à M1, M2 et M3, puis utilisez des tests de rapport de vraisemblance via
anova(mod_simple, mod_complex, test = "LRT")pour comparer les spécifications. Interprétez la p-valeur et l’évolution de l’AIC pour décider si le modèle plus riche améliore significativement l’ajustement par rapport au modèle plus simple.
4 Modèles paramétriques
4.1 Exercice 10 – Modèle de Weibull
On ajuste un modèle de Weibull avec la (ou les) variable(s) explicative(s) retenue(s) à la question 9.
- Estimer un modèle de Weibull à l’aide de
survreg(): - Préciser le nombre de paramètres estimés (y compris les paramètres de forme / échelle).
- Comparer son AIC à celui du modèle de Cox retenu précédemment.
Indication R (exemple avec uoutput seul) :
utilisez
survreg(Surv(time, status) ~ uoutput, data = ..., dist = "weibull")pour estimer un modèle de Weibull, puis regardez danssummary()quels paramètres sont estimés (intercept, coefficient deuoutput, paramètre de scale) et utilisezAIC()pour comparer ce modèle au modèle de Cox retenu.
4.2 Exercice 11 – Courbes de survie et risque instantané
À partir du modèle de durée retenu (Cox ou Weibull) :
- Tracer les courbes de survie pour différents scénarios de conjoncture (par ex. valeurs faibles, médianes et fortes de
uoutput). - Tracer (ou commenter) les taux de risque instantané correspondants.
- Commenter la forme du risque dans le temps (croissant ? décroissant ?).
Indication possible avec le modèle de Cox simple :
Commencez par définir un petit
data.framenewdataavec plusieurs valeurs représentatives deuoutput(par exemple des quantiles de la distribution), puis utilisezsurvfit(mod_cox, newdata = newdata)pour obtenir les courbes de survie prédites. Tracez-les avecplot()et ajoutez unelegend()pour comparer visuellement la probabilité de fin de grève selon le niveau de choc.
4.3 Exercice 12 – Interprétation économique
Sur la base des résultats obtenus (Kaplan–Meier, modèles de Cox, Weibull) :
- Dans quel contexte conjoncturel les grèves ont-elles le plus de chances d’être courtes ?
- Dans quel contexte ont-elles le plus de chances d’être longues ?
- Discuter ces résultats en termes :
- de hazard ratios (probabilité instantanée de fin de grève)
- et de fonctions de survie (probabilité de grève encore en cours).
Relier cette interprétation aux mécanismes économiques de négociation salariale et de coûts de la grève pour les syndicats et les employeurs.