forked from larmarange/analyse-R
-
Notifications
You must be signed in to change notification settings - Fork 0
/
analyse-de-survie.html
1369 lines (1248 loc) · 110 KB
/
analyse-de-survie.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta charset="utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="pandoc" />
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
<title>Analyse de survie</title>
<script src="libs/jquery-1.11.3/jquery.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="libs/bootstrap-3.3.5/css/paper.min.css" rel="stylesheet" />
<script src="libs/bootstrap-3.3.5/js/bootstrap.min.js"></script>
<script src="libs/bootstrap-3.3.5/shim/html5shiv.min.js"></script>
<script src="libs/bootstrap-3.3.5/shim/respond.min.js"></script>
<script src="libs/navigation-1.1/tabsets.js"></script>
<link href="libs/pagedtable-1.1/css/pagedtable.css" rel="stylesheet" />
<script src="libs/pagedtable-1.1/js/pagedtable.js"></script>
<meta name="robots" content="index, follow">
<link rel="stylesheet" href="./include/analyse-R.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script>
<script type="text/javascript" src="./libs/bigfoot-2.1.4/bigfoot.min.js"></script>
<link rel="stylesheet" href="./libs/bigfoot-2.1.4/bigfoot-number.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha256-eZrrJcwDc/3uDhsdt61sL2oOBY362qM3lon1gyExkL0=" crossorigin="anonymous">
<link rel="stylesheet" href="./libs/colorbox-1.6.1/colorbox.css" />
<script type="text/javascript" src="./libs/colorbox-1.6.1/jquery.colorbox-min.js"></script>
<!--- favicon --->
<link rel="apple-touch-icon" sizes="57x57" href="./images/favicon/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="./images/favicon/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="./images/favicon/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="./images/favicon/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="./images/favicon/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="./images/favicon/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="./images/favicon/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="./images/favicon/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="./images/favicon/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="./images/favicon/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="./images/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="./images/favicon/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="./images/favicon/favicon-16x16.png">
<link rel="manifest" href="./images/favicon/manifest.json">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="./images/favicon/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-121727005-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-121727005-1');
</script>
<style type="text/css">code{white-space: pre;}</style>
<style type="text/css" data-origin="pandoc">
a.sourceLine { display: inline-block; line-height: 1.25; }
a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
a.sourceLine:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode { white-space: pre; position: relative; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
code.sourceCode { white-space: pre-wrap; }
a.sourceLine { text-indent: -1em; padding-left: 1em; }
}
pre.numberSource a.sourceLine
{ position: relative; left: -4em; }
pre.numberSource a.sourceLine::before
{ content: attr(title);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; pointer-events: all; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
a.sourceLine::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
<script>
// apply pandoc div.sourceCode style to pre.sourceCode instead
(function() {
var sheets = document.styleSheets;
for (var i = 0; i < sheets.length; i++) {
if (sheets[i].ownerNode.dataset["origin"] !== "pandoc") continue;
try { var rules = sheets[i].cssRules; } catch (e) { continue; }
for (var j = 0; j < rules.length; j++) {
var rule = rules[j];
// check if there is a div.sourceCode rule
if (rule.type !== rule.STYLE_RULE || rule.selectorText !== "div.sourceCode") continue;
var style = rule.style.cssText;
// check if color or background-color is set
if (rule.style.color === '' && rule.style.backgroundColor === '') continue;
// replace div.sourceCode by a pre.sourceCode rule
sheets[i].deleteRule(j);
sheets[i].insertRule('pre.sourceCode{' + style + '}', j);
}
}
})();
</script>
<style type="text/css">
pre:not([class]) {
background-color: white;
}
</style>
<style type="text/css">
h1 {
font-size: 34px;
}
h1.title {
font-size: 38px;
}
h2 {
font-size: 30px;
}
h3 {
font-size: 24px;
}
h4 {
font-size: 18px;
}
h5 {
font-size: 16px;
}
h6 {
font-size: 12px;
}
.table th:not([align]) {
text-align: left;
}
</style>
<style type = "text/css">
.main-container {
max-width: 940px;
margin-left: auto;
margin-right: auto;
}
code {
color: inherit;
background-color: rgba(0, 0, 0, 0.04);
}
img {
max-width:100%;
}
.tabbed-pane {
padding-top: 12px;
}
.html-widget {
margin-bottom: 20px;
}
button.code-folding-btn:focus {
outline: none;
}
summary {
display: list-item;
}
</style>
<!-- tabsets -->
<style type="text/css">
.tabset-dropdown > .nav-tabs {
display: inline-table;
max-height: 500px;
min-height: 44px;
overflow-y: auto;
background: white;
border: 1px solid #ddd;
border-radius: 4px;
}
.tabset-dropdown > .nav-tabs > li.active:before {
content: "";
font-family: 'Glyphicons Halflings';
display: inline-block;
padding: 10px;
border-right: 1px solid #ddd;
}
.tabset-dropdown > .nav-tabs.nav-tabs-open > li.active:before {
content: "";
border: none;
}
.tabset-dropdown > .nav-tabs.nav-tabs-open:before {
content: "";
font-family: 'Glyphicons Halflings';
display: inline-block;
padding: 10px;
border-right: 1px solid #ddd;
}
.tabset-dropdown > .nav-tabs > li.active {
display: block;
}
.tabset-dropdown > .nav-tabs > li > a,
.tabset-dropdown > .nav-tabs > li > a:focus,
.tabset-dropdown > .nav-tabs > li > a:hover {
border: none;
display: inline-block;
border-radius: 4px;
}
.tabset-dropdown > .nav-tabs.nav-tabs-open > li {
display: block;
float: none;
}
.tabset-dropdown > .nav-tabs > li {
display: none;
}
</style>
<!-- code folding -->
</head>
<body>
<div class="container-fluid main-container">
<nav>
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href=".">analyse-R</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="manipuler" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Manipuler <span class="caret"></span></a>
<ul class="dropdown-menu multi-column columns-3" role="menu" id="menu_manipuler">
<div class="row">
<div class="col-sm-4">
<ul class="multi-column-dropdown">
<li class="dropdown-header">Prise en main</li>
<li><a href="presentation-et-philosophie.html">Présentation et Philosophie</a></li>
<li><a href="installation-de-R-et-RStudio.html">Installation de <strong>R</strong> et <strong>RStudio</strong></a></li>
<li><a href="premier-contact.html">Premier contact</a></li>
<li><a href="premier-travail-avec-les-donnees.html">Premier travail avec des données</a></li>
<li><a href="extensions.html">Extensions (installation, mise à jour)</a></li>
<li><a href="introduction-au-tidyverse.html">Introduction au <strong>tidyverse</strong></a></li>
<li><a href="vecteurs-indexation-et-assignation.html">Vecteurs, indexation et assignation</a></li>
<li><a href="listes-et-tableaux-de-donnes.html">Listes et Tableaux de données</a></li>
<li><a href="facteurs-et-vecteurs-labellises.html">Facteurs et vecteurs labellisés</a></li>
<li><a href="organiser-ses-fichiers.html">Organiser ses fichiers</a></li>
<li><a href="import-de-donnees.html">Import de données</a></li>
<li><a href="ou-trouver-de-l-aide.html">Où trouver de l'aide ?</a></li>
</ul>
</div>
<div class="col-sm-4">
<ul class="multi-column-dropdown">
<li class="dropdown-header">Manipulation de données</li>
<li><a href="visualiser-ses-donnees.html">Visualiser ses données</a></li>
<li><a href="recodage.html">Recodage de variables</a></li>
<li><a href="manipuler-les-donnees-avec-dplyr.html">Manipuler les données avec <strong>dplyr</strong></a></li>
<li><a href="manipulations-avancees-avec-data-table.html">Manipulations avancées avec <strong>data.table</strong></a></li>
<li><a href="tris.html">Tris</a></li>
<li><a href="sous-ensembles.html">Sous-ensembles</a></li>
<li><a href="fusion-de-tables.html">Fusion de tables</a></li>
<li><a href="gestion-des-dates.html">Gestion des dates</a></li>
<li><a href="fonctions-a-fenetre.html">Fonctions à fenêtre</a></li>
<li><a href="manipuler-du-texte.html">Manipuler du texte avec <strong>stringr</strong></a></li>
<li><a href="reorganiser-ses-donnees-avec-tidyr.html">Réorganiser ses données avec <strong>tidyr</strong></a></li>
<li><a href="scraping.html">Scraping</a></li>
</ul>
</div>
<div class="col-sm-4">
<ul class="multi-column-dropdown">
<li class="dropdown-header">Exporter</li>
<li><a href="export-de-donnees.html">Export de données</a></li>
<li><a href="export-de-graphiques.html">Export de graphiques</a></li>
</ul>
</div>
</div>
</ul>
</li>
<li class="dropdown">
<a href="analyser" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Analyser <span class="caret"></span></a>
<ul class="dropdown-menu multi-column columns-3" role="menu" id="menu_analyser">
<div class="row">
<div class="col-sm-4">
<ul class="multi-column-dropdown">
<li class="dropdown-header">Statistiques introductives</li>
<li><a href="statistique-univariee.html">Statistique univariée</a></li>
<li><a href="statistique-bivariee.html">Statistique bivariée</a></li>
<li><a href="intro-ggplot2.html">Introduction à <strong>ggplot2</strong>, la grammaire des graphiques</a></li>
<li><a href="graphiques-bivaries-ggplot2.html">Graphiques univariés et bivariés avec <strong>ggplot2</strong></a></li>
<li><a href="donnees-ponderees.html">Données pondérées</a></li>
</ul>
</div>
<div class="col-sm-4">
<ul class="multi-column-dropdown">
<li class="dropdown-header">Statistiques intermédiaires</li>
<li><a href="intervalles-de-confiance.html">Intervalles de confiance</a></li>
<li><a href="comparaisons-moyennes-et-proportions.html">Comparaisons (moyennes et proportions)</a></li>
<li><a href="definir-un-plan-d-echantillonnage-complexe.html">Définir un plan d'échantillonnage complexe</a></li>
<li><a href="regression-lineaire.html">Régression linéaire</a></li>
<li><a href="regression-logistique.html">Régression logistique binaire, multinomiale et ordinale</a></li>
<li><a href="analyse-des-correspondances-multiples.html">Analyse des correspondances multiples (ACM)</a></li>
<li><a href="classification-ascendante-hierarchique.html">Classification ascendante hiérarchique (CAH)</a></li>
</ul>
</div>
<div class="col-sm-4">
<ul class="multi-column-dropdown">
<li class="dropdown-header">Statistiques avancées</li>
<li><a href="effets-d-interaction.html">Effets d'interaction dans un modèle</a></li>
<li><a href="multicolinearite.html">Multicolinéarité dans la régression</a></li>
<li><a href="analyse-de-survie.html">Analyse de survie</a></li>
<li><a href="analyse-de-sequences.html">Analyse de séquences</a></li>
<!--<li><a href="modeles-a-effets-aleatoires.html">Modèles à effets aléatoires (modèles mixtes et GEE)</a></li>-->
<li><a href="trajectoires-de-soins.html">Trajectoires de soins : un exemple de données longitudinales</a></li>
<li><a href="analyse-de-reseaux.html">Analyse de réseaux</a></li>
<li><a href="analyse-spatiale.html">Analyse spatiale</a></li>
</ul>
</div>
</div>
</ul>
</li>
<li class="dropdown">
<a href="approfondir" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Approfondir <span class="caret"></span></a>
<ul class="dropdown-menu multi-column columns-3" role="menu" id="menu_approfondir">
<div class="row">
<div class="col-sm-4">
<ul class="multi-column-dropdown">
<li class="dropdown-header">Graphiques</li>
<li><a href="ggplot2.html"><strong>ggplot2</strong> et la grammaire des graphiques</a></li>
<li><a href="etendre-ggplot2.html">Étendre ggplot2</a></li>
<li><a href="combiner-plusieurs-graphiques.html">Combiner plusieurs graphiques</a></li>
<li><a href="graphiques-interactifs.html">Graphiques interactifs</a></li>
<li><a href="lattice-graphiques-et-formules.html"><strong>lattice</strong> : graphiques et formules</a></li>
<li><a href="cartes.html">Cartes</a></li>
</ul>
</div>
<div class="col-sm-4">
<ul class="multi-column-dropdown">
<li class="dropdown-header">Programmation</li>
<li><a href="conditions-et-comparaisons.html">Conditions et comparaisons</a></li>
<li><a href="formules.html">Formules</a></li>
<li><a href="structures-conditionnelles.html">Structures conditionnelles</a></li>
<li><a href="vectorisation.html">Vectorisation</a></li>
<li><a href="expressions-regulieres.html">Expressions régulières</a></li>
<!--<li class="dev"><a href="ecrire-ses-propres-fonctions.html">Écrire ses propres fonctions</a></li>-->
<li><a href="rmarkdown-les-rapports-automatises.html"><strong>R Markdown</strong> : les rapports automatisés</a></li>
</ul>
</div>
<div class="col-sm-4">
<ul class="multi-column-dropdown">
<li class="dropdown-header">Divers</li>
<li><a href="formater-nombres.html">Mettre en forme des nombres</a></li>
<li><a href="couleurs.html">Couleurs et Palettes</a></li>
<li><a href="annotations-mathematiques.html">Annotations mathématiques</a></li>
<li><a href="calculer-un-age.html">Calculer un âge</a></li>
<li><a href="diagramme-de-lexis.html">Diagramme de Lexis</a></li>
</ul>
</div>
</div>
</ul>
</li>
<li class="dropdown">
<a href="index" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Index <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu" id="menu_naviguer">
<li><a href="index-des-concepts.html">Index des concepts</a></li>
<li><a href="index-des-fonctions.html">Index des fonctions</a></li>
<li><a href="index-des-extensions.html">Index des extensions</a></li>
</ul>
</li>
<li><a href="analyse-R.pdf">PDF</a></li>
<!--<li><a href="https://github.com/larmarange/analyse-R">GitHub</a></li>-->
</ul>
<form id="rechercher" class="navbar-form navbar-right" role="search" style="padding-top: 5px;" method="get" action="https://duckduckgo.com/">
<div class="form-group">
<input name="q" type="text" class="form-control input-sm" placeholder="Rechercher">
</div>
<button type="submit" class="btn btn-default btn-sm" name="Rechercher">
<span class="glyphicon glyphicon-search" aria-hidden="true"></span>
</button>
</form>
</div><!--/.nav-collapse -->
</div><!--/.container -->
</div><!--/.navbar -->
</nav>
<div class="row">
<div class="visible-lg">
<a href="https://github.com/larmarange/analyse-R"><img style="position: absolute; top: 60px; left: 40px; border: 0;" src="./images/fork_me.png" alt="Contribuer sur GitHub"></a>
</div>
<div class="col-sm-9" role="main">
<article>
<div class="fluid-row" id="header">
<h1 class="title toc-ignore">Analyse de survie</h1>
</div>
<div id="TOC">
<ul>
<li><a href="#ressources-en-ligne">Ressources en ligne</a></li>
<li><a href="#un-exemple-concret-mortalite-infanto-juvenile">Un exemple concret : mortalité infanto-juvénile</a></li>
<li><a href="#preparation-des-donnees-avec-data.table">Préparation des données avec data.table</a></li>
<li><a href="#preparation-des-donnees-avec-dplyr">Préparation des données avec dplyr</a></li>
<li><a href="#kaplan-meier">Kaplan-Meier</a></li>
<li><a href="#modele-de-cox">Modèle de Cox</a></li>
<li><a href="#verification-de-la-validite-du-modele">Vérification de la validité du modèle</a></li>
<li><a href="#donnees-ponderees">Données pondérées</a></li>
</ul>
</div>
<div id="ressources-en-ligne" class="section level2">
<h2>Ressources en ligne</h2>
<p>L’extension centrale pour l’<dfn>analyse de survie</dfn><dfn data-index="survie, analyse"></dfn> est <code class="pkg">survival</code>.</p>
<p>Un très bon tutoriel (en anglais et en 3 étapes), introduisant les concepts de l’analyse de survie, des courbes de Kaplan-Meier et des modèles de Cox et leur mise en oeuvre pratique sous <strong>R</strong> est disponible en ligne :</p>
<ul>
<li><a href="http://www.sthda.com/english/wiki/survival-analysis-basics" class="uri">http://www.sthda.com/english/wiki/survival-analysis-basics</a></li>
<li><a href="http://www.sthda.com/english/wiki/cox-proportional-hazards-model" class="uri">http://www.sthda.com/english/wiki/cox-proportional-hazards-model</a></li>
<li><a href="http://www.sthda.com/english/wiki/cox-model-assumptions" class="uri">http://www.sthda.com/english/wiki/cox-model-assumptions</a></li>
</ul>
<p>Pour un autre exemple (toujours en anglais) d’analyse de survie avec <code class="pkg">survival</code>, on pourra se référer à <a href="https://rpubs.com/vinubalan/hrsurvival" class="uri">https://rpubs.com/vinubalan/hrsurvival</a>.</p>
<p>Pour représenter vos résultats avec <code class="pkg">ggplot2</code>, on pourra avoir recours à l’extension <code class="pkg">survminer</code> présentée en détails sur son site officiel (en anglais) : <a href="http://www.sthda.com/english/rpkgs/survminer/" class="uri">http://www.sthda.com/english/rpkgs/survminer/</a>. On pourra également avoir recours à la fonction <code data-pkg="GGally">ggsurv</code> de l’extension <code class="pkg">GGally</code> présentée à l’adresse <a href="http://ggobi.github.io/ggally/#ggallyggsurv" class="uri">http://ggobi.github.io/ggally/#ggallyggsurv</a>.</p>
<p>A noter, il est possible d’utiliser la fonction <code data-pkg="stats">step</code> sur un modèle de Cox, pour une sélection pas à pas d’un meilleur modèle basé sur une minimisation de l’AIC (voir le chapitre sur la <a href="regression-logistique.html">régression logistique</a>).</p>
<p>L’excellente extension <code class="pkg">broom</code> peut également être utilisée sur des modèles de survie (Kaplan-Meier ou Cox) pour en convertir les résultats sous la forme d’un tableau de données.</p>
<p>Pour approfondir les possibilités offertes par l’extension <code class="pkg">survival</code>, on pourra également consulter les différentes vignettes fournies avec l’extension (voir <a href="https://cran.r-project.org/package=survival" class="uri">https://cran.r-project.org/package=survival</a>).</p>
</div>
<div id="un-exemple-concret-mortalite-infanto-juvenile" class="section level2">
<h2>Un exemple concret : mortalité infanto-juvénile</h2>
<p>Dans cet exemple, nous allons utiliser le jeu de données <code>fecondite</code> fourni par l’extension <code class="pkg">questionr</code>. Ce jeu de données comporte trois tableaux de données : <code>menages</code>, <code>femmes</code> et <code>enfants</code>.</p>
<p>Nous souhaitons étudier ici la survie des enfants entre la naissance et l’âge de 5 ans. Dans un premier temps, nous comparerons la survie des jeunes filles et des jeunes garçons. Dans un second temps, nous procéderons à une analyse multivariée en prenant en compte les variables suivantes :</p>
<ul>
<li>sexe de l’enfant</li>
<li>milieu de résidence</li>
<li>niveau de vie du ménage</li>
<li>structure du ménage</li>
<li>niveau d’éducation de la mère</li>
<li>âge de la mère à la naissance de l’enfant</li>
<li>enfin, une variable un peu plus compliquée, à savoir si le rang de naissance de l’enfant (second, troisième, quatrième, etc.) est supérieur au nombre idéal d’enfants selon la mère.</li>
</ul>
<p>Nous allons préparer les données selon deux approches : soit en utilisant l’extension <code class="pkg">data.table</code> (voir le <a href="manipulations-avancees-avec-data-table.html">chapitre dédié à data.table</a>), soit en utilisant l’extension <code class="pkg">dplyr</code> (voir le <a href="manipuler-les-donnees-avec-dplyr.html">chapitre sur dplyr</a>).</p>
<p>Chargeons les données en mémoire et listons les variables disponibles.</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb1-1" title="1"><span class="kw">library</span>(questionr, <span class="dt">quietly =</span> <span class="ot">TRUE</span>)</a>
<a class="sourceLine" id="cb1-2" title="2"><span class="kw">data</span>(fecondite)</a>
<a class="sourceLine" id="cb1-3" title="3"><span class="kw">lookfor</span>(menages)</a></code></pre></div>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":[""],"name":["_rn_"],"type":[""],"align":["left"]},{"label":["variable"],"name":[1],"type":["chr"],"align":["left"]},{"label":["label"],"name":[2],"type":["chr"],"align":["left"]}],"data":[{"1":"id_menage","2":"Identifiant du ménage","_rn_":"1"},{"1":"taille","2":"Taille du ménage (nombre de membres)","_rn_":"2"},{"1":"sexe_chef","2":"Sexe du chef de ménage","_rn_":"3"},{"1":"structure","2":"Structure démographique du ménage","_rn_":"4"},{"1":"richesse","2":"Niveau de vie (quintiles)","_rn_":"5"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
</script>
</div>
<div class="sourceCode" id="cb2"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb2-1" title="1"><span class="kw">lookfor</span>(femmes)</a></code></pre></div>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":[""],"name":["_rn_"],"type":[""],"align":["left"]},{"label":["variable"],"name":[1],"type":["chr"],"align":["left"]},{"label":["label"],"name":[2],"type":["chr"],"align":["left"]}],"data":[{"1":"id_femme","2":"Identifiant de l'enquêtée","_rn_":"1"},{"1":"id_menage","2":"Identifiant du ménage","_rn_":"2"},{"1":"poids","2":"Poids statistique","_rn_":"3"},{"1":"date_entretien","2":"Date de passation du questionnaire","_rn_":"4"},{"1":"date_naissance","2":"Date de naissance","_rn_":"5"},{"1":"age","2":"Âge révolu (en années) à la date de passation du questionnaire","_rn_":"6"},{"1":"milieu","2":"Milieu de résidence","_rn_":"7"},{"1":"region","2":"Région de résidence","_rn_":"8"},{"1":"educ","2":"Niveau d'éducation","_rn_":"9"},{"1":"travail","2":"A un emploi ?","_rn_":"10"},{"1":"matri","2":"Statut matrimonial","_rn_":"11"},{"1":"religion","2":"Religion","_rn_":"12"},{"1":"journal","2":"Lit la presse ?","_rn_":"13"},{"1":"radio","2":"Ecoute la radio ?","_rn_":"14"},{"1":"tv","2":"Regarde la télévision ?","_rn_":"15"},{"1":"nb_enf_ideal","2":"Nombre idéal d'enfants","_rn_":"16"},{"1":"test","2":"A déjà fait un test de dépistage du VIH ?","_rn_":"17"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
</script>
</div>
<div class="sourceCode" id="cb3"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb3-1" title="1"><span class="kw">lookfor</span>(enfants)</a></code></pre></div>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":[""],"name":["_rn_"],"type":[""],"align":["left"]},{"label":["variable"],"name":[1],"type":["chr"],"align":["left"]},{"label":["label"],"name":[2],"type":["chr"],"align":["left"]}],"data":[{"1":"id_enfant","2":"Identifiant de l'enfant","_rn_":"1"},{"1":"id_femme","2":"Identifiant de la mère","_rn_":"2"},{"1":"date_naissance","2":"Date de naissance","_rn_":"3"},{"1":"sexe","2":"Sexe de l'enfant","_rn_":"4"},{"1":"survie","2":"L'enfant est-il toujours en vie ?","_rn_":"5"},{"1":"age_deces","2":"Age au décès (en mois)","_rn_":"6"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
</script>
</div>
</div>
<div id="preparation-des-donnees-avec-data.table" class="section level2">
<h2>Préparation des données avec data.table</h2>
<p>Tout d’abord, regardons sous quel format elles sont stockées.</p>
<div class="sourceCode" id="cb4"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb4-1" title="1"><span class="kw">class</span>(menages)</a></code></pre></div>
<pre><code>[1] "tbl_df" "tbl" "data.frame"</code></pre>
<div class="sourceCode" id="cb6"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb6-1" title="1"><span class="kw">describe</span>(menages)</a></code></pre></div>
<pre><code>[1814 obs. x 5 variables] tbl_df tbl data.frame
$id_menage: Identifiant du ménage
numeric: 1 2 3 4 5 6 7 8 9 10 ...
min: 1 - max: 1814 - NAs: 0 (0%) - 1814 unique values
$taille: Taille du ménage (nombre de membres)
numeric: 7 3 6 5 7 6 15 6 5 19 ...
min: 1 - max: 31 - NAs: 0 (0%) - 30 unique values
$sexe_chef: Sexe du chef de ménage
labelled double: 2 1 1 1 1 2 2 2 1 1 ...
min: 1 - max: 2 - NAs: 0 (0%) - 2 unique values
2 value labels: [1] homme [2] femme
$structure: Structure démographique du ménage
labelled double: 4 2 5 4 4 4 5 2 5 5 ...
min: 1 - max: 5 - NAs: 0 (0%) - 5 unique values
6 value labels: [0] pas d'adulte [1] un adulte [2] deux adultes de sexe opposé [3] deux adultes de même sexe [4] trois adultes ou plus avec lien de parenté [5] adultes sans lien de parenté
$richesse: Niveau de vie (quintiles)
labelled double: 1 2 2 1 1 3 2 5 4 3 ...
min: 1 - max: 5 - NAs: 0 (0%) - 5 unique values
5 value labels: [1] très pauvre [2] pauvre [3] moyen [4] riche [5] très riche</code></pre>
<p>Les tableaux de données sont au format <em>tibble</em> (c’est-à-dire sont de la classe <code>tbl_df</code>) et les variables catégorielles sont du type <code>haven_labelled</code> (voir le chapitre sur les <a href="facteurs-et-vecteurs-labellises.html#labelled">vecteurs labellisés</a>). Ce format correspond au format de données si on les avait importées depuis SPSS avec l’extension <code class="pkg">haven</code> (voir le chapitre sur l’<a href="import-de-donnees.html#spss">import de données</a>).</p>
<p>En premier lieu, il nous faut convertir les tableaux de données au format <code>data.table</code>, ce qui peut se faire avec la fonction <code data-pkg="data.table">setDT</code><a href="#fn1" class="footnote-ref" id="fnref1"><sup>1</sup></a>. Par ailleurs, nous allons également charger en mémoire l’extension <code class="pkg">labelled</code> pour la gestion des vecteurs labellisés.</p>
<div class="sourceCode" id="cb8"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb8-1" title="1"><span class="kw">library</span>(labelled)</a>
<a class="sourceLine" id="cb8-2" title="2"><span class="kw">library</span>(data.table)</a>
<a class="sourceLine" id="cb8-3" title="3"><span class="kw">setDT</span>(menages)</a>
<a class="sourceLine" id="cb8-4" title="4"><span class="kw">setDT</span>(femmes)</a>
<a class="sourceLine" id="cb8-5" title="5"><span class="kw">setDT</span>(enfants)</a></code></pre></div>
<p>En premier lieu, il nous faut calculer la durée d’observation des enfants, à savoir le temps passé entre la date de naissance (variable du fichier <code>enfants</code>) et la date de passation de l’entretien (fournie par le tableau de données <code>femmes</code>). Pour récupérer des variables du fichier <code>femmes</code> dans le fichier <code>enfants</code>, nous allons procéder à une fusion de table (voir le <a href="fusion-de-tables.html">chapitre dédié</a>). Pour le calcul de la durée d’observation, nous allons utiliser le package <code class="pkg">lubridate</code> (voir le chapitre <a href="calculer-un-age.html">calculer un âge</a> et celui sur la <a href="gestion-des-dates.html">gestion des dates</a>). Nous effectuerons l’analyse en mois (puisque l’âge au décès est connu en mois). Dès lors, la durée d’observation sera calculée en mois.</p>
<div class="sourceCode" id="cb9"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb9-1" title="1">enfants <-<span class="st"> </span><span class="kw">merge</span>(</a>
<a class="sourceLine" id="cb9-2" title="2"> enfants,</a>
<a class="sourceLine" id="cb9-3" title="3"> femmes[, .(id_femme, date_entretien)],</a>
<a class="sourceLine" id="cb9-4" title="4"> <span class="dt">by =</span> <span class="st">"id_femme"</span>,</a>
<a class="sourceLine" id="cb9-5" title="5"> <span class="dt">all.x =</span> <span class="ot">TRUE</span></a>
<a class="sourceLine" id="cb9-6" title="6">)</a>
<a class="sourceLine" id="cb9-7" title="7"></a>
<a class="sourceLine" id="cb9-8" title="8"><span class="co"># duree observation en mois</span></a>
<a class="sourceLine" id="cb9-9" title="9"><span class="kw">library</span>(lubridate, <span class="dt">quietly =</span> <span class="ot">TRUE</span>)</a>
<a class="sourceLine" id="cb9-10" title="10">enfants[, duree_observation <span class="op">:</span><span class="er">=</span><span class="st"> </span><span class="kw">time_length</span>(<span class="kw">interval</span>(date_naissance, date_entretien), <span class="dt">unit =</span> <span class="st">"months"</span>)]</a></code></pre></div>
<p>ATTENTION : il y 11 enfants soi-disant nés après la date d’enquête ! Quelle que soit l’enquête, il est rare de ne pas observer d’incohérences. Dans le cas présent, il est fort possible que la date d’entretien puisse parfois être erronnée (par exemple si l’enquêteur a inscrit une date sur le questionnaire papier le jour du recensement du ménage mais n’ai pu effectué le questionnaire individuel que plus tard). Nous décidons ici de procéder à une correction en ajoutant un mois aux dates d’entretien problématiques. D’autres approches auraient pu être envisagées, comme par exemple exclure ces observations problématiques. Cependant, cela aurait impacté le calcul du range de naissance pour les autres enfants issus de la même mère. Quoiqu’il en soit, il n’y a pas de réponse unique. À vous de vous adapter au contexte particulier de votre analyse.</p>
<div class="sourceCode" id="cb10"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb10-1" title="1">enfants[duree_observation <span class="op"><</span><span class="st"> </span><span class="dv">0</span>, date_entretien <span class="op">:</span><span class="er">=</span><span class="st"> </span>date_entretien <span class="op">%m+%</span><span class="st"> </span><span class="kw">months</span>(<span class="dv">1</span>)]</a>
<a class="sourceLine" id="cb10-2" title="2">enfants[, duree_observation <span class="op">:</span><span class="er">=</span><span class="st"> </span><span class="kw">time_length</span>(<span class="kw">interval</span>(date_naissance, date_entretien), <span class="dt">unit =</span> <span class="st">"months"</span>)]</a></code></pre></div>
<p>Regardons maintenant comment les âges au décès ont été collectés.</p>
<div class="sourceCode" id="cb11"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb11-1" title="1"><span class="kw">freq</span>(enfants<span class="op">$</span>age_deces)</a></code></pre></div>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":[""],"name":["_rn_"],"type":[""],"align":["left"]},{"label":["n"],"name":[1],"type":["dbl"],"align":["right"]},{"label":["%"],"name":[2],"type":["dbl"],"align":["right"]},{"label":["val%"],"name":[3],"type":["dbl"],"align":["right"]}],"data":[{"1":"62","2":"3.9","3":"43.7","_rn_":"0"},{"1":"5","2":"0.3","3":"3.5","_rn_":"1"},{"1":"6","2":"0.4","3":"4.2","_rn_":"2"},{"1":"5","2":"0.3","3":"3.5","_rn_":"3"},{"1":"4","2":"0.3","3":"2.8","_rn_":"4"},{"1":"5","2":"0.3","3":"3.5","_rn_":"5"},{"1":"5","2":"0.3","3":"3.5","_rn_":"6"},{"1":"4","2":"0.3","3":"2.8","_rn_":"7"},{"1":"3","2":"0.2","3":"2.1","_rn_":"8"},{"1":"6","2":"0.4","3":"4.2","_rn_":"9"},{"1":"1","2":"0.1","3":"0.7","_rn_":"10"},{"1":"5","2":"0.3","3":"3.5","_rn_":"11"},{"1":"10","2":"0.6","3":"7.0","_rn_":"12"},{"1":"3","2":"0.2","3":"2.1","_rn_":"13"},{"1":"1","2":"0.1","3":"0.7","_rn_":"14"},{"1":"1","2":"0.1","3":"0.7","_rn_":"16"},{"1":"2","2":"0.1","3":"1.4","_rn_":"19"},{"1":"1","2":"0.1","3":"0.7","_rn_":"21"},{"1":"10","2":"0.6","3":"7.0","_rn_":"24"},{"1":"2","2":"0.1","3":"1.4","_rn_":"36"},{"1":"1","2":"0.1","3":"0.7","_rn_":"48"},{"1":"1442","2":"91.0","3":"NA","_rn_":"NaN"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
</script>
</div>
<p>Les âges au décès sont ici exprimés en mois révolus. Les décès à un mois révolu correspondent à des décès entre 1 et 2 mois exacts. Par ailleurs, les durées d’observation que nous avons calculées avec <code data-pkg="lubridate">time_length</code> sont des durées exactes, c’est-à-dire avec la partie décimale. Pour une analyse de survie, on ne peut mélanger des durées exactes et des durées révolues. Trois approches peuvent être envisagées :</p>
<ol style="list-style-type: decimal">
<li>faire l’analyse en mois révolus, auquel cas on ne gardera que la partie entière des durées d’observations avec la fonction <code data-pkg="base" data-rdoc="Round">trunc</code> ;</li>
<li>considérer qu’un âge au décès de 3 mois révolus correspond en moyenne à 3,5 mois exacts et donc ajouter 0,5 à tous les âges révolus ;</li>
<li>imputer un âge au décès exact en distribuant aléatoirement les décès à 3 mois révolus entre 3 et 4 mois exacts, autrement dit en ajoutant aléatoirement une partie décimale aux âges révolus.</li>
</ol>
<p>Nous allons ici adopter la troisième approche en considérant que les décès se répartissent de manière uniforme au sein d’un même mois. Nous aurons donc recours à la fonction <code data-pkg="stats" data-rdoc="Uniform">runif</code> qui permets de générer des valeurs aléatoires entre 0 et 1 selon une distribustion uniforme.</p>
<div class="sourceCode" id="cb12"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb12-1" title="1">enfants[, age_deces_impute <span class="op">:</span><span class="er">=</span><span class="st"> </span>age_deces <span class="op">+</span><span class="st"> </span><span class="kw">runif</span>(.N)]</a></code></pre></div>
<p>Pour définir notre objet de survie, il nous faudra deux variables. Une première, temporelle, indiquant la durée à laquelle survient l’évènement étudié (ici le décès) pour ceux ayant vécu l’évènement et la durée d’observation pour ceux n’ayant pas vécu l’évènement (<dfn>censure à droite</dfn><dfn data-index="droite, censure"></dfn>). Par ailleurs, une seconde variable indiquant si les individus ont vécu l’évènement (0 pour non, 1 pour oui). Or, ici, la variable <var>survie</var> est codée 0 pour les décès et 1 pour ceux ayant survécu. Pour plus de détails, voir l’aide de la fonction <code data-pkg="survival">Surv</code>.</p>
<div class="sourceCode" id="cb13"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb13-1" title="1">enfants[, deces <span class="op">:</span><span class="er">=</span><span class="st"> </span><span class="dv">0</span>]</a>
<a class="sourceLine" id="cb13-2" title="2">enfants[survie <span class="op">==</span><span class="st"> </span><span class="dv">0</span>, deces <span class="op">:</span><span class="er">=</span><span class="st"> </span><span class="dv">1</span>]</a>
<a class="sourceLine" id="cb13-3" title="3"><span class="kw">var_label</span>(enfants<span class="op">$</span>deces) <-<span class="st"> "Est décédé ?"</span></a>
<a class="sourceLine" id="cb13-4" title="4"><span class="kw">val_labels</span>(enfants<span class="op">$</span>deces) <-<span class="st"> </span><span class="kw">c</span>(<span class="dt">non =</span> <span class="dv">0</span>, <span class="dt">oui =</span> <span class="dv">1</span>)</a>
<a class="sourceLine" id="cb13-5" title="5"></a>
<a class="sourceLine" id="cb13-6" title="6">enfants[, time <span class="op">:</span><span class="er">=</span><span class="st"> </span>duree_observation]</a>
<a class="sourceLine" id="cb13-7" title="7">enfants[deces <span class="op">==</span><span class="st"> </span><span class="dv">1</span>, time <span class="op">:</span><span class="er">=</span><span class="st"> </span>age_deces_impute]</a></code></pre></div>
<p>Occupons-nous maintenant des variables explicatives que nous allons inclure dans l’analyse. Tout d’abord, ajoutons à la table <code>enfants</code> les variables nécessaires des tables <code>femmes</code> et <code>menages</code>. Notons qu’il nous faudra importer <var>id_menage</var> de la table <code>femmes</code> pour pouvoir fusionner ensuite la table <code>enfants</code> avec la table <code>menages</code>. Par ailleurs, pour éviter une confusion sur la variable <var>date_naissance</var>, nous renommons à la volée cette variable de la table <code>femmes</code> en <var>date_naissance_mere</var>.</p>
<div class="sourceCode" id="cb14"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb14-1" title="1">enfants <-<span class="st"> </span><span class="kw">merge</span>(</a>
<a class="sourceLine" id="cb14-2" title="2"> enfants,</a>
<a class="sourceLine" id="cb14-3" title="3"> femmes[, .(</a>
<a class="sourceLine" id="cb14-4" title="4"> id_femme, id_menage, milieu, educ, </a>
<a class="sourceLine" id="cb14-5" title="5"> <span class="dt">date_naissance_mere =</span> date_naissance, nb_enf_ideal</a>
<a class="sourceLine" id="cb14-6" title="6"> )],</a>
<a class="sourceLine" id="cb14-7" title="7"> <span class="dt">by =</span> <span class="st">"id_femme"</span>,</a>
<a class="sourceLine" id="cb14-8" title="8"> <span class="dt">all.x =</span> <span class="ot">TRUE</span></a>
<a class="sourceLine" id="cb14-9" title="9">)</a>
<a class="sourceLine" id="cb14-10" title="10">enfants <-<span class="st"> </span><span class="kw">merge</span>(</a>
<a class="sourceLine" id="cb14-11" title="11"> enfants,</a>
<a class="sourceLine" id="cb14-12" title="12"> menages[, .(id_menage, structure, richesse)],</a>
<a class="sourceLine" id="cb14-13" title="13"> <span class="dt">by =</span> <span class="st">"id_menage"</span>,</a>
<a class="sourceLine" id="cb14-14" title="14"> <span class="dt">all.x =</span> <span class="ot">TRUE</span></a>
<a class="sourceLine" id="cb14-15" title="15">)</a></code></pre></div>
<p>Les variables catégorielles sont pour l’heure sous formes de vecteurs labellisés. Or, dans un modèle, il est impératif de les convertir en facteurs pour qu’elles soient bien traitées comme des variables catégorielles (autrement elles seraient traitées comme des variables continues). On aura donc recours à la fonction <code data-pkg="labelled">to_factor</code> de l’extension <code class="pkg">labelled</code>.</p>
<div class="sourceCode" id="cb15"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb15-1" title="1">enfants[, sexe <span class="op">:</span><span class="er">=</span><span class="st"> </span><span class="kw">to_factor</span>(sexe)]</a>
<a class="sourceLine" id="cb15-2" title="2">enfants[, richesse <span class="op">:</span><span class="er">=</span><span class="st"> </span><span class="kw">to_factor</span>(richesse)]</a></code></pre></div>
<p>Regardons plus attentivement, la variable <var>structure</var>.</p>
<div class="sourceCode" id="cb16"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb16-1" title="1"><span class="kw">freq</span>(enfants<span class="op">$</span>structure)</a></code></pre></div>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":[""],"name":["_rn_"],"type":[""],"align":["left"]},{"label":["n"],"name":[1],"type":["dbl"],"align":["right"]},{"label":["%"],"name":[2],"type":["dbl"],"align":["right"]},{"label":["val%"],"name":[3],"type":["dbl"],"align":["right"]}],"data":[{"1":"0","2":"0.0","3":"0.0","_rn_":"[0] pas d'adulte"},{"1":"45","2":"2.8","3":"2.8","_rn_":"[1] un adulte"},{"1":"505","2":"31.9","3":"31.9","_rn_":"[2] deux adultes de sexe opposé"},{"1":"71","2":"4.5","3":"4.5","_rn_":"[3] deux adultes de même sexe"},{"1":"764","2":"48.2","3":"48.2","_rn_":"[4] trois adultes ou plus avec lien de parenté"},{"1":"199","2":"12.6","3":"12.6","_rn_":"[5] adultes sans lien de parenté"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
</script>
</div>
<p>Tout d’abord, la modalité <q>pas d’adulte</q> n’est pas représentée dans l’échantillon. On aura donc recours à l’argument <code>drop_unused_labels</code> pour ne pas conserver cette modalité. Par ailleurs, nous considérons que la situation familiale à partir de laquelle nous voudrons comparer les autres dans notre modèle, donc celle qui doit être considérée comme la modalité de référence, est celle du ménage nucléaire. Cette modalité (<q>deux adultes de sexe opposé</q>) n’étant pas la première, nous aurons recours à la fonction <code data-pkg="stats">relevel</code>.</p>
<div class="sourceCode" id="cb17"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb17-1" title="1">enfants[, structure <span class="op">:</span><span class="er">=</span><span class="st"> </span><span class="kw">to_factor</span>(structure, <span class="dt">drop_unused_labels =</span> <span class="ot">TRUE</span>)]</a>
<a class="sourceLine" id="cb17-2" title="2">enfants[, structure <span class="op">:</span><span class="er">=</span><span class="st"> </span><span class="kw">relevel</span>(structure, <span class="st">"deux adultes de sexe opposé"</span>)]</a></code></pre></div>
<p>Regardons la variable <var>educ</var>.</p>
<div class="sourceCode" id="cb18"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb18-1" title="1"><span class="kw">freq</span>(enfants<span class="op">$</span>educ)</a></code></pre></div>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":[""],"name":["_rn_"],"type":[""],"align":["left"]},{"label":["n"],"name":[1],"type":["dbl"],"align":["right"]},{"label":["%"],"name":[2],"type":["dbl"],"align":["right"]},{"label":["val%"],"name":[3],"type":["dbl"],"align":["right"]}],"data":[{"1":"1084","2":"68.4","3":"68.4","_rn_":"[0] aucun"},{"1":"368","2":"23.2","3":"23.2","_rn_":"[1] primaire"},{"1":"115","2":"7.3","3":"7.3","_rn_":"[2] secondaire"},{"1":"17","2":"1.1","3":"1.1","_rn_":"[3] supérieur"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
</script>
</div>
<p>La modalité <q>supérieur</q> est peu représentée dans notre échantillon. Nous allons la fusionner avec la modalité <q>secondaire</q> (voir la section <a href="recodage.html#regrouper_modalites">Regrouper les modalités d’une variable</a> du chapitre <a href="recodage.html">Recodage</a>).</p>
<div class="sourceCode" id="cb19"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb19-1" title="1">enfants[, educ2 <span class="op">:</span><span class="er">=</span><span class="st"> </span>educ]</a>
<a class="sourceLine" id="cb19-2" title="2">enfants[educ <span class="op">==</span><span class="st"> </span><span class="dv">3</span>, educ2 <span class="op">:</span><span class="er">=</span><span class="st"> </span><span class="dv">2</span>]</a>
<a class="sourceLine" id="cb19-3" title="3"><span class="kw">val_label</span>(enfants<span class="op">$</span>educ2, <span class="dv">2</span>) <-<span class="st"> "secondaire ou plus"</span></a>
<a class="sourceLine" id="cb19-4" title="4"><span class="kw">val_label</span>(enfants<span class="op">$</span>educ2, <span class="dv">3</span>) <-<span class="st"> </span><span class="ot">NULL</span></a>
<a class="sourceLine" id="cb19-5" title="5">enfants[, educ2 <span class="op">:</span><span class="er">=</span><span class="st"> </span><span class="kw">to_factor</span>(educ2)]</a>
<a class="sourceLine" id="cb19-6" title="6"><span class="kw">freq</span>(enfants<span class="op">$</span>educ2)</a></code></pre></div>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":[""],"name":["_rn_"],"type":[""],"align":["left"]},{"label":["n"],"name":[1],"type":["dbl"],"align":["right"]},{"label":["%"],"name":[2],"type":["dbl"],"align":["right"]},{"label":["val%"],"name":[3],"type":["dbl"],"align":["right"]}],"data":[{"1":"1084","2":"68.4","3":"68.4","_rn_":"aucun"},{"1":"368","2":"23.2","3":"23.2","_rn_":"primaire"},{"1":"132","2":"8.3","3":"8.3","_rn_":"secondaire ou plus"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
</script>
</div>
<p>Calculons maintenant l’âge de la mère à la naissance de l’enfant (voir le chapitre <a href="calculer-un-age.html">Calculer un âge</a>) et découpons le en groupes d’âges (voir la section <a href="recodage.html#decouper_en_classes">Découper une variable numérique en classes</a> du chapitre <a href="recodage.html">Recodage</a>).</p>
<div class="sourceCode" id="cb20"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb20-1" title="1">enfants[, age_mere_naissance <span class="op">:</span><span class="er">=</span><span class="st"> </span><span class="kw">time_length</span>(</a>
<a class="sourceLine" id="cb20-2" title="2"> <span class="kw">interval</span>(date_naissance_mere, date_naissance), </a>
<a class="sourceLine" id="cb20-3" title="3"> <span class="dt">unit =</span> <span class="st">"years"</span></a>
<a class="sourceLine" id="cb20-4" title="4"> )]</a>
<a class="sourceLine" id="cb20-5" title="5"></a>
<a class="sourceLine" id="cb20-6" title="6">enfants<span class="op">$</span>gpage_mere_naissance <-<span class="st"> </span><span class="kw">cut</span>(</a>
<a class="sourceLine" id="cb20-7" title="7"> enfants<span class="op">$</span>age_mere_naissance, </a>
<a class="sourceLine" id="cb20-8" title="8"> <span class="dt">include.lowest =</span> <span class="ot">TRUE</span>, <span class="dt">right =</span> <span class="ot">FALSE</span>,</a>
<a class="sourceLine" id="cb20-9" title="9"> <span class="dt">breaks=</span><span class="kw">c</span>(<span class="dv">13</span>, <span class="dv">20</span>, <span class="dv">30</span>, <span class="dv">50</span>)</a>
<a class="sourceLine" id="cb20-10" title="10">)</a>
<a class="sourceLine" id="cb20-11" title="11"><span class="kw">levels</span>(enfants<span class="op">$</span>gpage_mere_naissance) <-<span class="st"> </span><span class="kw">c</span>(</a>
<a class="sourceLine" id="cb20-12" title="12"> <span class="st">"19 ou moins"</span>, <span class="st">"20-29"</span>, <span class="st">"30 et plus"</span></a>
<a class="sourceLine" id="cb20-13" title="13">)</a>
<a class="sourceLine" id="cb20-14" title="14">enfants<span class="op">$</span>gpage_mere_naissance <-<span class="st"> </span><span class="kw">relevel</span>(enfants<span class="op">$</span>gpage_mere_naissance, <span class="st">"20-29"</span>)</a>
<a class="sourceLine" id="cb20-15" title="15"><span class="kw">freq</span>(enfants<span class="op">$</span>gpage_mere_naissance)</a></code></pre></div>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":[""],"name":["_rn_"],"type":[""],"align":["left"]},{"label":["n"],"name":[1],"type":["dbl"],"align":["right"]},{"label":["%"],"name":[2],"type":["dbl"],"align":["right"]},{"label":["val%"],"name":[3],"type":["dbl"],"align":["right"]}],"data":[{"1":"888","2":"56.1","3":"56.1","_rn_":"20-29"},{"1":"257","2":"16.2","3":"16.2","_rn_":"19 ou moins"},{"1":"439","2":"27.7","3":"27.7","_rn_":"30 et plus"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
</script>
</div>
<p>Reste à calculer si le rang de naissance de l’enfant est supérieur au nombre idéal d’enfants tel que défini par la mère. On aura recours à la fonction <code data-pkg="base">rank</code> appliquée par groupe (ici calculé séparément pour chaque mère). L’argument <code>ties.method</code> permet d’indiquer comment gérer les égalités (ici les naissances multiples, e.g. les jumeaux). Comme nous voulons comparer le rang de l’enfant au nombre idéal d’enfants, nous allons retenir la méthode <code>"max"</code> pour obtenir, dans le cas présent, le nombre total d’enfants déjà nés<a href="#fn2" class="footnote-ref" id="fnref2"><sup>2</sup></a>. Avant de calculer un rang, il est impératif de trier préalablement le tableau (voir le chapitre <a href="tris.html">Tris</a>).</p>
<div class="sourceCode" id="cb21"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb21-1" title="1"><span class="kw">setorder</span>(enfants, id_femme, date_naissance)</a>
<a class="sourceLine" id="cb21-2" title="2">enfants[, rang <span class="op">:</span><span class="er">=</span><span class="st"> </span><span class="kw">rank</span>(date_naissance, <span class="dt">ties.method =</span> <span class="st">"max"</span>), by =<span class="st"> </span>id_femme]</a>
<a class="sourceLine" id="cb21-3" title="3">enfants[, rang_apres_ideal <span class="op">:</span><span class="er">=</span><span class="st"> "non"</span>]</a>
<a class="sourceLine" id="cb21-4" title="4">enfants[rang <span class="op">></span><span class="st"> </span>nb_enf_ideal, rang_apres_ideal <span class="op">:</span><span class="er">=</span><span class="st"> "oui"</span>]</a>
<a class="sourceLine" id="cb21-5" title="5">enfants[, rang_apres_ideal <span class="op">:</span><span class="er">=</span><span class="st"> </span><span class="kw">factor</span>(rang_apres_ideal)]</a>
<a class="sourceLine" id="cb21-6" title="6">enfants[, rang_apres_ideal <span class="op">:</span><span class="er">=</span><span class="st"> </span><span class="kw">relevel</span>(rang_apres_ideal, <span class="st">"non"</span>)]</a></code></pre></div>
</div>
<div id="preparation-des-donnees-avec-dplyr" class="section level2">
<h2>Préparation des données avec dplyr</h2>
<p>Tout d’abord, regardons sous quel format elles sont stockées.</p>
<div class="sourceCode" id="cb22"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb22-1" title="1"><span class="kw">data</span>(fecondite)</a>
<a class="sourceLine" id="cb22-2" title="2"><span class="kw">class</span>(menages)</a></code></pre></div>
<pre><code>[1] "tbl_df" "tbl" "data.frame"</code></pre>
<div class="sourceCode" id="cb24"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb24-1" title="1"><span class="kw">describe</span>(menages)</a></code></pre></div>
<pre><code>[1814 obs. x 5 variables] tbl_df tbl data.frame
$id_menage: Identifiant du ménage
numeric: 1 2 3 4 5 6 7 8 9 10 ...
min: 1 - max: 1814 - NAs: 0 (0%) - 1814 unique values
$taille: Taille du ménage (nombre de membres)
numeric: 7 3 6 5 7 6 15 6 5 19 ...
min: 1 - max: 31 - NAs: 0 (0%) - 30 unique values
$sexe_chef: Sexe du chef de ménage
labelled double: 2 1 1 1 1 2 2 2 1 1 ...
min: 1 - max: 2 - NAs: 0 (0%) - 2 unique values
2 value labels: [1] homme [2] femme
$structure: Structure démographique du ménage
labelled double: 4 2 5 4 4 4 5 2 5 5 ...
min: 1 - max: 5 - NAs: 0 (0%) - 5 unique values
6 value labels: [0] pas d'adulte [1] un adulte [2] deux adultes de sexe opposé [3] deux adultes de même sexe [4] trois adultes ou plus avec lien de parenté [5] adultes sans lien de parenté
$richesse: Niveau de vie (quintiles)
labelled double: 1 2 2 1 1 3 2 5 4 3 ...
min: 1 - max: 5 - NAs: 0 (0%) - 5 unique values
5 value labels: [1] très pauvre [2] pauvre [3] moyen [4] riche [5] très riche</code></pre>
<p>Les tableaux de données sont déjà au format <em>tibble</em> (c’est-à-dire sont de la classe <code>tbl_df</code>)<a href="#fn3" class="footnote-ref" id="fnref3"><sup>3</sup></a> et les variables catégorielles sont du type <code>labelled</code> (voir le chapitre sur les <a href="facteurs-et-vecteurs-labellises.html#labelled">vecteurs labellisés</a>). Ce format correspond au format de données si on les avait importées depuis SPSS avec l’extension <code class="pkg">haven</code> (voir le chapitre sur l’<a href="import-de-donnees.html#spss">import de données</a>).</p>
<p>Nous allons charger en mémoire l’extension <code class="pkg">labelled</code> pour la gestion des vecteurs labellisés en plus de <code class="pkg">dplyr</code>.</p>
<div class="sourceCode" id="cb26"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb26-1" title="1"><span class="kw">library</span>(dplyr)</a>
<a class="sourceLine" id="cb26-2" title="2"><span class="kw">library</span>(labelled)</a></code></pre></div>
<p>En premier lieu, il nous faut calculer la durée d’observation des enfants, à savoir le temps passé entre la date de naissance (variable du fichier <code>enfants</code>) et la date de passation de l’entretien (fournie par le tableau de données <code>femmes</code>). Pour récupérer des variables du fichier <code>femmes</code> dans le fichier <code>enfants</code>, nous allons procéder à une fusion de table (voir le <a href="fusion-de-tables.html">chapitre dédié</a>). Pour le calcul de la durée d’observation, nous allons utiliser le package <code class="pkg">lubridate</code> (voir le chapitre <a href="calculer-un-age.html">calculer un âge</a> et celui sur la <a href="gestion-des-dates.html">gestion des dates</a>). Nous effectuerons l’analyse en mois (puisque l’âge au décès est connu en mois). Dès lors, la durée d’observation sera calculée en mois.</p>
<div class="sourceCode" id="cb27"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb27-1" title="1"><span class="kw">library</span>(lubridate)</a>
<a class="sourceLine" id="cb27-2" title="2">enfants <-<span class="st"> </span>enfants <span class="op">%>%</span></a>
<a class="sourceLine" id="cb27-3" title="3"><span class="st"> </span><span class="kw">left_join</span>(</a>
<a class="sourceLine" id="cb27-4" title="4"> femmes <span class="op">%>%</span><span class="st"> </span><span class="kw">select</span>(id_femme, date_entretien),</a>
<a class="sourceLine" id="cb27-5" title="5"> <span class="dt">by =</span> <span class="st">"id_femme"</span></a>
<a class="sourceLine" id="cb27-6" title="6"> ) <span class="op">%>%</span></a>
<a class="sourceLine" id="cb27-7" title="7"><span class="st"> </span><span class="kw">mutate</span>(<span class="dt">duree_observation =</span> <span class="kw">time_length</span>(</a>
<a class="sourceLine" id="cb27-8" title="8"> <span class="kw">interval</span>(date_naissance, date_entretien), </a>
<a class="sourceLine" id="cb27-9" title="9"> <span class="dt">unit =</span> <span class="st">"months"</span></a>
<a class="sourceLine" id="cb27-10" title="10"> ))</a></code></pre></div>
<pre><code>Warning: Column `id_femme` has different attributes on LHS
and RHS of join</code></pre>
<p>ATTENTION : il y 11 enfants soi-disant nés après la date d’enquête ! Quelle que soit l’enquête, il est rare de ne pas observer d’incohérences. Dans le cas présent, il est fort possible que la date d’entretien puisse parfois être erronnée (par exemple si l’enquêteur a inscrit une date sur le questionnaire papier le jour du recensement du ménage mais n’ai pu effectué le questionnaire individuel que plus tard). Nous décidons ici de procéder à une correction en ajoutant un mois aux dates d’entretien problématiques. D’autres approches auraient pu être envisagées, comme par exemple exclure ces observations problématiques. Cependant, cela aurait impacté le calcul du range de naissance pour les autres enfants issus de la même mère. Quoiqu’il en soit, il n’y a pas de réponse unique. À vous de vous adapter au contexte particulier de votre analyse.</p>
<div class="sourceCode" id="cb29"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb29-1" title="1">enfants<span class="op">$</span>date_entretien[enfants<span class="op">$</span>duree_observation <span class="op"><</span><span class="st"> </span><span class="dv">0</span>] <-</a>
<a class="sourceLine" id="cb29-2" title="2"><span class="st"> </span>enfants<span class="op">$</span>date_entretien[enfants<span class="op">$</span>duree_observation <span class="op"><</span><span class="st"> </span><span class="dv">0</span>] <span class="op">%m+%</span><span class="st"> </span><span class="kw">months</span>(<span class="dv">1</span>)</a>
<a class="sourceLine" id="cb29-3" title="3">enfants <-<span class="st"> </span>enfants <span class="op">%>%</span></a>
<a class="sourceLine" id="cb29-4" title="4"><span class="st"> </span><span class="kw">mutate</span>(<span class="dt">duree_observation =</span> <span class="kw">time_length</span>(</a>
<a class="sourceLine" id="cb29-5" title="5"> <span class="kw">interval</span>(date_naissance, date_entretien), </a>
<a class="sourceLine" id="cb29-6" title="6"> <span class="dt">unit =</span> <span class="st">"months"</span></a>
<a class="sourceLine" id="cb29-7" title="7"> ))</a></code></pre></div>
<p>Regardons maintenant comment les âges au décès ont été collectés.</p>
<div class="sourceCode" id="cb30"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb30-1" title="1"><span class="kw">freq</span>(enfants<span class="op">$</span>age_deces)</a></code></pre></div>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":[""],"name":["_rn_"],"type":[""],"align":["left"]},{"label":["n"],"name":[1],"type":["dbl"],"align":["right"]},{"label":["%"],"name":[2],"type":["dbl"],"align":["right"]},{"label":["val%"],"name":[3],"type":["dbl"],"align":["right"]}],"data":[{"1":"62","2":"3.9","3":"43.7","_rn_":"0"},{"1":"5","2":"0.3","3":"3.5","_rn_":"1"},{"1":"6","2":"0.4","3":"4.2","_rn_":"2"},{"1":"5","2":"0.3","3":"3.5","_rn_":"3"},{"1":"4","2":"0.3","3":"2.8","_rn_":"4"},{"1":"5","2":"0.3","3":"3.5","_rn_":"5"},{"1":"5","2":"0.3","3":"3.5","_rn_":"6"},{"1":"4","2":"0.3","3":"2.8","_rn_":"7"},{"1":"3","2":"0.2","3":"2.1","_rn_":"8"},{"1":"6","2":"0.4","3":"4.2","_rn_":"9"},{"1":"1","2":"0.1","3":"0.7","_rn_":"10"},{"1":"5","2":"0.3","3":"3.5","_rn_":"11"},{"1":"10","2":"0.6","3":"7.0","_rn_":"12"},{"1":"3","2":"0.2","3":"2.1","_rn_":"13"},{"1":"1","2":"0.1","3":"0.7","_rn_":"14"},{"1":"1","2":"0.1","3":"0.7","_rn_":"16"},{"1":"2","2":"0.1","3":"1.4","_rn_":"19"},{"1":"1","2":"0.1","3":"0.7","_rn_":"21"},{"1":"10","2":"0.6","3":"7.0","_rn_":"24"},{"1":"2","2":"0.1","3":"1.4","_rn_":"36"},{"1":"1","2":"0.1","3":"0.7","_rn_":"48"},{"1":"1442","2":"91.0","3":"NA","_rn_":"NaN"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
</script>
</div>
<p>Les âges au décès sont ici exprimés en mois révolus. Les décès à un mois révolu correspondent à des décès entre 1 et 2 mois exacts. Par ailleurs, les durées d’observation que nous avons calculées avec <code data-pkg="lubridate">time_length</code> sont des durées exactes, c’est-à-dire avec la partie décimale. Pour une analyse de survie, on ne peut mélanger des durées exactes et des durées révolues. Trois approches peuvent être envisagées :</p>
<ol style="list-style-type: decimal">
<li>faire l’analyse en mois révolus, auquel cas on ne gardera que la partie entière des durées d’observations avec la fonction <code data-pkg="base" data-rdoc="Round">trunc</code> ;</li>
<li>considérer qu’un âge au décès de 3 mois révolus correspond en moyenne à 3,5 mois exacts et donc ajouter 0,5 à tous les âges révolus ;</li>
<li>imputer un âge au décès exact en distribuant aléatoirement les décès à 3 mois révolus entre 3 et 4 mois exacts, autrement dit en ajoutant aléatoirement une partie décimale aux âges révolus.</li>
</ol>
<p>Nous allons ici adopter la troisième approche en considérant que les décès se répartissent de manière uniforme au sein d’un même mois. Nous aurons donc recours à la fonction <code data-pkg="stats" data-rdoc="Uniform">runif</code> qui permets de générer des valeurs aléatoires entre 0 et 1 selon une distribustion uniforme.</p>
<div class="sourceCode" id="cb31"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb31-1" title="1">enfants <-<span class="st"> </span>enfants <span class="op">%>%</span></a>
<a class="sourceLine" id="cb31-2" title="2"><span class="st"> </span>dplyr<span class="op">::</span><span class="kw">mutate</span>(<span class="dt">age_deces_impute =</span> age_deces <span class="op">+</span><span class="st"> </span><span class="kw">runif</span>(<span class="kw">n</span>()))</a></code></pre></div>
<p>Pour définir notre objet de survie, il nous faudra deux variables. Une première, temporelle, indiquant la durée à laquelle survient l’évènement étudié (ici le décès) pour ceux ayant vécu l’évènement et la durée d’observation pour ceux n’ayant pas vécu l’évènement (<dfn>censure à droite</dfn><dfn data-index="droite, censure"></dfn>). Par ailleurs, une seconde variable indiquant si les individus ont vécu l’évènement (0 pour non, 1 pour oui). Or, ici, la variable <var>survie</var> est codée 0 pour les décès et 1 pour ceux ayant survécu. Pour plus de détails, voir l’aide de la fonction <code data-pkg="survival">Surv</code>.</p>
<div class="sourceCode" id="cb32"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb32-1" title="1">enfants <-<span class="st"> </span>enfants <span class="op">%>%</span></a>
<a class="sourceLine" id="cb32-2" title="2"><span class="st"> </span><span class="kw">mutate</span>(<span class="dt">deces =</span> <span class="kw">if_else</span>(survie <span class="op">==</span><span class="st"> </span><span class="dv">0</span>, <span class="dv">1</span>, <span class="dv">0</span>)) <span class="op">%>%</span></a>
<a class="sourceLine" id="cb32-3" title="3"><span class="st"> </span><span class="kw">set_variable_labels</span>(<span class="dt">deces =</span> <span class="st">"Est décédé ?"</span>) <span class="op">%>%</span></a>
<a class="sourceLine" id="cb32-4" title="4"><span class="st"> </span><span class="kw">set_value_labels</span>(<span class="dt">deces =</span> <span class="kw">c</span>(<span class="dt">non =</span> <span class="dv">0</span>, <span class="dt">oui =</span> <span class="dv">1</span>)) <span class="op">%>%</span></a>
<a class="sourceLine" id="cb32-5" title="5"><span class="st"> </span><span class="kw">mutate</span>(<span class="dt">time =</span> <span class="kw">if_else</span>(deces <span class="op">==</span><span class="st"> </span><span class="dv">1</span>, age_deces_impute, duree_observation))</a></code></pre></div>
<p>Occupons-nous maintenant des variables explicatives que nous allons inclure dans l’analyse. Tout d’abord, ajoutons à la table <code>enfants</code> les variables nécessaires des tables <code>femmes</code> et <code>menages</code>. Notons qu’il nous faudra importer <var>id_menage</var> de la table <code>femmes</code> pour pouvoir fusionner ensuite la table <code>enfants</code> avec la table <code>menages</code>. Par ailleurs, pour éviter une confusion sur la variable <var>date_naissance</var>, nous renommons à la volée cette variable de la table <code>femmes</code> en <var>date_naissance_mere</var>.</p>
<div class="sourceCode" id="cb33"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb33-1" title="1">enfants <-<span class="st"> </span>enfants <span class="op">%>%</span></a>
<a class="sourceLine" id="cb33-2" title="2"><span class="st"> </span><span class="kw">left_join</span>(</a>
<a class="sourceLine" id="cb33-3" title="3"> <span class="kw">select</span>(femmes,</a>
<a class="sourceLine" id="cb33-4" title="4"> id_femme, id_menage, milieu, educ, </a>
<a class="sourceLine" id="cb33-5" title="5"> <span class="dt">date_naissance_mere =</span> date_naissance, nb_enf_ideal</a>
<a class="sourceLine" id="cb33-6" title="6"> ),</a>
<a class="sourceLine" id="cb33-7" title="7"> <span class="dt">by =</span> <span class="st">"id_femme"</span></a>
<a class="sourceLine" id="cb33-8" title="8"> ) <span class="op">%>%</span></a>
<a class="sourceLine" id="cb33-9" title="9"><span class="st"> </span><span class="kw">left_join</span>(</a>
<a class="sourceLine" id="cb33-10" title="10"> <span class="kw">select</span>(menages, id_menage, structure, richesse),</a>
<a class="sourceLine" id="cb33-11" title="11"> <span class="dt">by =</span> <span class="st">"id_menage"</span></a>
<a class="sourceLine" id="cb33-12" title="12"> )</a></code></pre></div>
<pre><code>Warning: Column `id_femme` has different attributes on LHS
and RHS of join</code></pre>
<p>Les variables catégorielles sont pour l’heure sous formes de vecteurs labellisés. Or, dans un modèle, il est impératif de les convertir en facteurs pour qu’elles soient bien traitées comme des variables catégorielles (autrement elles seraient traitées comme des variables continues). On aura donc recours à la fonction <code data-pkg="labelled">to_factor</code> de l’extension <code class="pkg">labelled</code>.</p>
<div class="sourceCode" id="cb35"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb35-1" title="1">enfants <-<span class="st"> </span>enfants <span class="op">%>%</span></a>
<a class="sourceLine" id="cb35-2" title="2"><span class="st"> </span><span class="kw">mutate</span>(<span class="dt">sexe =</span> <span class="kw">to_factor</span>(sexe), <span class="dt">richesse =</span> <span class="kw">to_factor</span>(richesse))</a></code></pre></div>
<p>Regardons plus attentivement, la variable <var>structure</var>.</p>
<div class="sourceCode" id="cb36"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb36-1" title="1"><span class="kw">freq</span>(enfants<span class="op">$</span>structure)</a></code></pre></div>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":[""],"name":["_rn_"],"type":[""],"align":["left"]},{"label":["n"],"name":[1],"type":["dbl"],"align":["right"]},{"label":["%"],"name":[2],"type":["dbl"],"align":["right"]},{"label":["val%"],"name":[3],"type":["dbl"],"align":["right"]}],"data":[{"1":"0","2":"0.0","3":"0.0","_rn_":"[0] pas d'adulte"},{"1":"45","2":"2.8","3":"2.8","_rn_":"[1] un adulte"},{"1":"505","2":"31.9","3":"31.9","_rn_":"[2] deux adultes de sexe opposé"},{"1":"71","2":"4.5","3":"4.5","_rn_":"[3] deux adultes de même sexe"},{"1":"764","2":"48.2","3":"48.2","_rn_":"[4] trois adultes ou plus avec lien de parenté"},{"1":"199","2":"12.6","3":"12.6","_rn_":"[5] adultes sans lien de parenté"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
</script>
</div>
<p>Tout d’abord, la modalité <q>pas d’adulte</q> n’est pas représentée dans l’échantillon. On aura donc recours à l’argument <code>drop_unused_labels</code> pour ne pas conserver cette modalité. Par ailleurs, nous considérons que la situation familiale à partir de laquelle nous voudrons comparer les autres dans notre modèle, donc celle qui doit être considérée comme la modalité de référence, est celle du ménage nucléaire. Cette modalité (<q>deux adultes de sexe opposé</q>) n’étant pas la première, nous aurons recours à la fonction <code>relevel</code>{data-pkg = “stats”}.</p>
<div class="sourceCode" id="cb37"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb37-1" title="1">enfants <-<span class="st"> </span>enfants <span class="op">%>%</span></a>
<a class="sourceLine" id="cb37-2" title="2"><span class="st"> </span><span class="kw">mutate</span>(<span class="dt">structure =</span> <span class="kw">relevel</span>(</a>
<a class="sourceLine" id="cb37-3" title="3"> <span class="kw">to_factor</span>(structure, <span class="dt">drop_unused_labels =</span> <span class="ot">TRUE</span>),</a>
<a class="sourceLine" id="cb37-4" title="4"> <span class="st">"deux adultes de sexe opposé"</span></a>
<a class="sourceLine" id="cb37-5" title="5"> ))</a></code></pre></div>
<p>Regardons la variable <var>educ</var>.</p>
<div class="sourceCode" id="cb38"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb38-1" title="1"><span class="kw">freq</span>(enfants<span class="op">$</span>educ)</a></code></pre></div>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":[""],"name":["_rn_"],"type":[""],"align":["left"]},{"label":["n"],"name":[1],"type":["dbl"],"align":["right"]},{"label":["%"],"name":[2],"type":["dbl"],"align":["right"]},{"label":["val%"],"name":[3],"type":["dbl"],"align":["right"]}],"data":[{"1":"1084","2":"68.4","3":"68.4","_rn_":"[0] aucun"},{"1":"368","2":"23.2","3":"23.2","_rn_":"[1] primaire"},{"1":"115","2":"7.3","3":"7.3","_rn_":"[2] secondaire"},{"1":"17","2":"1.1","3":"1.1","_rn_":"[3] supérieur"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
</script>
</div>
<p>La modalité <q>supérieur</q> est peu représentée dans notre échantillon. Nous allons la fusionner avec la modalité <q>secondaire</q> (voir la section <a href="recodage.html#regrouper_modalites">Regrouper les modalités d’une variable</a> du chapitre <a href="recodage.html">Recodage</a>).</p>
<div class="sourceCode" id="cb39"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb39-1" title="1">enfants <-<span class="st"> </span>enfants <span class="op">%>%</span></a>
<a class="sourceLine" id="cb39-2" title="2"><span class="st"> </span><span class="kw">mutate</span>(<span class="dt">educ2 =</span> <span class="kw">ifelse</span>(educ <span class="op">==</span><span class="st"> </span><span class="dv">3</span>, <span class="dv">2</span>, educ)) <span class="op">%>%</span></a>
<a class="sourceLine" id="cb39-3" title="3"><span class="st"> </span><span class="kw">set_value_labels</span>(<span class="dt">educ2 =</span> <span class="kw">c</span>(</a>
<a class="sourceLine" id="cb39-4" title="4"> <span class="dt">aucun =</span> <span class="dv">0</span>,</a>
<a class="sourceLine" id="cb39-5" title="5"> <span class="dt">primaire =</span> <span class="dv">1</span>,</a>
<a class="sourceLine" id="cb39-6" title="6"> <span class="st">"secondaire ou plus"</span> =<span class="st"> </span><span class="dv">2</span></a>
<a class="sourceLine" id="cb39-7" title="7"> )) <span class="op">%>%</span></a>
<a class="sourceLine" id="cb39-8" title="8"><span class="st"> </span><span class="kw">mutate</span>(<span class="dt">educ2 =</span> <span class="kw">to_factor</span>(educ2))</a>
<a class="sourceLine" id="cb39-9" title="9"><span class="kw">freq</span>(enfants<span class="op">$</span>educ2)</a></code></pre></div>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":[""],"name":["_rn_"],"type":[""],"align":["left"]},{"label":["n"],"name":[1],"type":["dbl"],"align":["right"]},{"label":["%"],"name":[2],"type":["dbl"],"align":["right"]},{"label":["val%"],"name":[3],"type":["dbl"],"align":["right"]}],"data":[{"1":"1084","2":"68.4","3":"68.4","_rn_":"aucun"},{"1":"368","2":"23.2","3":"23.2","_rn_":"primaire"},{"1":"132","2":"8.3","3":"8.3","_rn_":"secondaire ou plus"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
</script>
</div>
<p>Calculons maintenant l’âge de la mère à la naissance de l’enfant (voir le chapitre <a href="calculer-un-age.html">Caluler un âge</a>) et découpons le en groupes d’âges (voir la section <a href="recodage.html#decouper_en_classes">Découper une variable numérique en classes</a> du chapitre <a href="recodage.html">Recodage</a>).</p>
<div class="sourceCode" id="cb40"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb40-1" title="1">enfants <-<span class="st"> </span>enfants <span class="op">%>%</span></a>
<a class="sourceLine" id="cb40-2" title="2"><span class="st"> </span><span class="kw">mutate</span>(</a>
<a class="sourceLine" id="cb40-3" title="3"> <span class="dt">age_mere_naissance =</span> <span class="kw">time_length</span>(</a>
<a class="sourceLine" id="cb40-4" title="4"> <span class="kw">interval</span>(date_naissance_mere, date_naissance), </a>
<a class="sourceLine" id="cb40-5" title="5"> <span class="dt">unit =</span> <span class="st">"years"</span></a>
<a class="sourceLine" id="cb40-6" title="6"> ),</a>
<a class="sourceLine" id="cb40-7" title="7"> <span class="dt">gpage_mere_naissance =</span> <span class="kw">cut</span>(</a>
<a class="sourceLine" id="cb40-8" title="8"> age_mere_naissance, </a>
<a class="sourceLine" id="cb40-9" title="9"> <span class="dt">include.lowest =</span> <span class="ot">TRUE</span>, <span class="dt">right =</span> <span class="ot">FALSE</span>,</a>
<a class="sourceLine" id="cb40-10" title="10"> <span class="dt">breaks=</span><span class="kw">c</span>(<span class="dv">13</span>, <span class="dv">20</span>, <span class="dv">30</span>, <span class="dv">50</span>)</a>
<a class="sourceLine" id="cb40-11" title="11"> )</a>
<a class="sourceLine" id="cb40-12" title="12"> )</a>
<a class="sourceLine" id="cb40-13" title="13"> </a>
<a class="sourceLine" id="cb40-14" title="14"><span class="kw">levels</span>(enfants<span class="op">$</span>gpage_mere_naissance) <-<span class="st"> </span><span class="kw">c</span>(</a>
<a class="sourceLine" id="cb40-15" title="15"> <span class="st">"19 ou moins"</span>, <span class="st">"20-29"</span>, <span class="st">"30 et plus"</span></a>
<a class="sourceLine" id="cb40-16" title="16">)</a>
<a class="sourceLine" id="cb40-17" title="17">enfants<span class="op">$</span>gpage_mere_naissance <-<span class="st"> </span><span class="kw">relevel</span>(enfants<span class="op">$</span>gpage_mere_naissance, <span class="st">"20-29"</span>)</a>
<a class="sourceLine" id="cb40-18" title="18"><span class="kw">freq</span>(enfants<span class="op">$</span>gpage_mere_naissance)</a></code></pre></div>
<div data-pagedtable="false">
<script data-pagedtable-source type="application/json">
{"columns":[{"label":[""],"name":["_rn_"],"type":[""],"align":["left"]},{"label":["n"],"name":[1],"type":["dbl"],"align":["right"]},{"label":["%"],"name":[2],"type":["dbl"],"align":["right"]},{"label":["val%"],"name":[3],"type":["dbl"],"align":["right"]}],"data":[{"1":"888","2":"56.1","3":"56.1","_rn_":"20-29"},{"1":"257","2":"16.2","3":"16.2","_rn_":"19 ou moins"},{"1":"439","2":"27.7","3":"27.7","_rn_":"30 et plus"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
</script>
</div>
<p>Reste à calculer si le rang de naissance de l’enfant est supérieur au nombre idéal d’enfants tel que défini par la mère. On aura recours à la fonction <code data-pkg="base">rank</code> appliquée par groupe (ici calculé séparément pour chaque mère). L’argument <code>ties.method</code> permet d’indiquer comment gérer les égalités (ici les naissances multiples, e.g. les jumeaux). Comme nous voulons comparer le rang de l’enfant au nombre idéal d’enfants, nous allons retenir la méthode <code>"max"</code> pour obtenir, dans le cas présent, le nombre total d’enfants déjà nés<a href="#fn4" class="footnote-ref" id="fnref4"><sup>4</sup></a>. Avant de calculer un rang, il est impératif de trier préalablement le tableau (voir le chapitre <a href="tris.html">Tris</a>).</p>
<div class="sourceCode" id="cb41"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb41-1" title="1">enfants <-<span class="st"> </span>enfants <span class="op">%>%</span></a>
<a class="sourceLine" id="cb41-2" title="2"><span class="st"> </span><span class="kw">arrange</span>(id_femme, date_naissance) <span class="op">%>%</span></a>
<a class="sourceLine" id="cb41-3" title="3"><span class="st"> </span><span class="kw">group_by</span>(id_femme) <span class="op">%>%</span></a>
<a class="sourceLine" id="cb41-4" title="4"><span class="st"> </span><span class="kw">mutate</span>(</a>
<a class="sourceLine" id="cb41-5" title="5"> <span class="dt">rang =</span> <span class="kw">rank</span>(date_naissance, <span class="dt">ties.method =</span> <span class="st">"max"</span>),</a>
<a class="sourceLine" id="cb41-6" title="6"> <span class="dt">rang_apres_ideal =</span> <span class="kw">ifelse</span>(rang <span class="op">></span><span class="st"> </span>nb_enf_ideal, <span class="st">"oui"</span>, <span class="st">"non"</span>),</a>
<a class="sourceLine" id="cb41-7" title="7"> <span class="dt">rang_apres_ideal =</span> <span class="kw">factor</span>(rang_apres_ideal, <span class="dt">levels =</span> <span class="kw">c</span>(<span class="st">"non"</span>, <span class="st">"oui"</span>))</a>
<a class="sourceLine" id="cb41-8" title="8"> )</a></code></pre></div>
</div>
<div id="kaplan-meier" class="section level2">
<h2>Kaplan-Meier</h2>
<p>La courbe de survie de <dfn>Kaplan-Meier</dfn> s’obtient avec la fonction <code data-pkg="survival">survfit</code> de l’extension <code class="pkg">survival</code>.</p>
<div class="sourceCode" id="cb42"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb42-1" title="1"><span class="kw">library</span>(survival)</a>
<a class="sourceLine" id="cb42-2" title="2">km_global <-<span class="st"> </span><span class="kw">survfit</span>(<span class="kw">Surv</span>(time, deces) <span class="op">~</span><span class="st"> </span><span class="dv">1</span>, <span class="dt">data =</span> enfants)</a>
<a class="sourceLine" id="cb42-3" title="3">km_global</a></code></pre></div>
<pre><code>Call: survfit(formula = Surv(time, deces) ~ 1, data = enfants)
n events median 0.95LCL 0.95UCL
1584 142 NA NA NA </code></pre>
<p>Pour la représenter, on pourra avoir recours à la fonction <code data-pkg="survminer">ggsurvplot</code> de l’extension <code>survminer</code>.</p>
<figure>
<div class="sourceCode" id="cb44"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb44-1" title="1"><span class="kw">library</span>(survminer, <span class="dt">quietly =</span> <span class="ot">TRUE</span>)</a></code></pre></div>
<pre><code>
Attaching package: 'ggpubr'</code></pre>
<pre><code>The following object is masked from 'package:JLutils':
get_legend</code></pre>
<pre><code>The following object is masked from 'package:plyr':
mutate</code></pre>
<div class="sourceCode" id="cb48"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb48-1" title="1"><span class="kw">ggsurvplot</span>(km_global)</a></code></pre></div>
<img src="graphs/analyse-de-survie/unnamed-chunk-33-1.png" width="1050" />
<figcaption>
Courbe de survie de Kaplan-Meier
</figcaption>
</figure>
<p>On peut facilement représenter à la place la courbe cumulée des évènements (l’inverse de la courbe de survie) et la table des effectifs en fonction du temps.</p>
<figure>
<div class="sourceCode" id="cb49"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb49-1" title="1"><span class="kw">ggsurvplot</span>(km_global, <span class="dt">fun =</span> <span class="st">"event"</span>, <span class="dt">risk.table =</span> <span class="ot">TRUE</span>, <span class="dt">surv.scale =</span> <span class="st">"percent"</span>)</a></code></pre></div>
<img src="graphs/analyse-de-survie/unnamed-chunk-34-1.png" width="1050" />
<figcaption>
Courbe cumulée des évènements et table des effectifs
</figcaption>
</figure>
<p>Pour comparer deux groupes (ici les filles et les garçons), il suffit d’indiquer la variable de comparaison à <code data-pkg="survival">survfit</code>.</p>
<div class="sourceCode" id="cb50"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb50-1" title="1">km_sexe <-<span class="st"> </span><span class="kw">survfit</span>(<span class="kw">Surv</span>(time, deces) <span class="op">~</span><span class="st"> </span>sexe, <span class="dt">data =</span> enfants)</a>
<a class="sourceLine" id="cb50-2" title="2">km_sexe</a></code></pre></div>
<pre><code>Call: survfit(formula = Surv(time, deces) ~ sexe, data = enfants)
n events median 0.95LCL 0.95UCL
sexe=masculin 762 94 NA NA NA
sexe=féminin 822 48 NA NA NA</code></pre>
<p>La fonction <code data-pkg="survival">survdiff</code> permets de calculer le <dfn data-index="test du logrank (comparaison de courbes de survie)">test du logrank</dfn><dfn data-index="logrank, test (comparaison de courbes de survie)"></dfn><dfn data-index="comparaison de courbes de survie (test du logrank)"></dfn> afin de comparer des courbes de survie. La mortalité infanto-juvénile diffère-t-elle significativement selon le sexe de l’enfant ?</p>
<div class="sourceCode" id="cb52"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb52-1" title="1"><span class="kw">survdiff</span>(<span class="kw">Surv</span>(time, deces) <span class="op">~</span><span class="st"> </span>sexe, <span class="dt">data =</span> enfants)</a></code></pre></div>
<pre><code>Call:
survdiff(formula = Surv(time, deces) ~ sexe, data = enfants)
N Observed Expected (O-E)^2/E (O-E)^2/V
sexe=masculin 762 94 66.2 11.6 21.8
sexe=féminin 822 48 75.8 10.2 21.8
Chisq= 21.8 on 1 degrees of freedom, p= 3e-06 </code></pre>
<p>Une fois encore, on aura recours à <code data-pkg="survminer">ggsurvplot</code> pour représenter les courbes de survie.</p>
<figure>
<div class="sourceCode" id="cb54"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb54-1" title="1"><span class="kw">ggsurvplot</span>(km_sexe, <span class="dt">conf.int =</span> <span class="ot">TRUE</span>, <span class="dt">risk.table =</span> <span class="ot">TRUE</span>, <span class="dt">pval =</span> <span class="ot">TRUE</span>, <span class="dt">data =</span> enfants)</a></code></pre></div>
<img src="graphs/analyse-de-survie/unnamed-chunk-37-1.png" width="1050" />
<figcaption>
Courbes de Kaplan-Meier selon le sexe
</figcaption>
</figure>
</div>
<div id="modele-de-cox" class="section level2">
<h2>Modèle de Cox</h2>
<p>Un <dfn>modèle de Cox</dfn><dfn data-index="Cox, modèle"></dfn> se calcule aisément avec <code>coxph</code>{survival}.</p>
<div class="sourceCode" id="cb55"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb55-1" title="1">mod1 <-<span class="st"> </span><span class="kw">coxph</span>(</a>
<a class="sourceLine" id="cb55-2" title="2"> <span class="kw">Surv</span>(time, deces) <span class="op">~</span><span class="st"> </span>sexe <span class="op">+</span><span class="st"> </span>milieu <span class="op">+</span><span class="st"> </span>richesse <span class="op">+</span><span class="st"> </span></a>
<a class="sourceLine" id="cb55-3" title="3"><span class="st"> </span>structure <span class="op">+</span><span class="st"> </span>educ2 <span class="op">+</span><span class="st"> </span>gpage_mere_naissance <span class="op">+</span><span class="st"> </span>rang_apres_ideal, </a>
<a class="sourceLine" id="cb55-4" title="4"> <span class="dt">data =</span> enfants</a>
<a class="sourceLine" id="cb55-5" title="5">)</a>
<a class="sourceLine" id="cb55-6" title="6">mod1</a></code></pre></div>
<pre><code>Call:
coxph(formula = Surv(time, deces) ~ sexe + milieu + richesse +
structure + educ2 + gpage_mere_naissance + rang_apres_ideal,
data = enfants)
coef
sexeféminin -0.809568
milieu 0.656241
richessepauvre -0.082223
richessemoyen 0.318645
richesseriche 0.353483
richessetrès riche 0.464590
structureun adulte -0.150231
structuredeux adultes de même sexe 0.604592
structuretrois adultes ou plus avec lien de parenté 0.049430
structureadultes sans lien de parenté -0.131369
educ2primaire -0.030251
educ2secondaire ou plus -0.203903
gpage_mere_naissance19 ou moins -0.310248
gpage_mere_naissance30 et plus -0.002586
rang_apres_idealoui 1.355106
exp(coef)
sexeféminin 0.445050
milieu 1.927533
richessepauvre 0.921066
richessemoyen 1.375263
richesseriche 1.424019
richessetrès riche 1.591361
structureun adulte 0.860509
structuredeux adultes de même sexe 1.830506
structuretrois adultes ou plus avec lien de parenté 1.050672
structureadultes sans lien de parenté 0.876895
educ2primaire 0.970202
educ2secondaire ou plus 0.815541
gpage_mere_naissance19 ou moins 0.733265
gpage_mere_naissance30 et plus 0.997417
rang_apres_idealoui 3.877173
se(coef)
sexeféminin 0.177806
milieu 0.269928
richessepauvre 0.250417
richessemoyen 0.247868
richesseriche 0.298425
richessetrès riche 0.428583
structureun adulte 0.600329
structuredeux adultes de même sexe 0.376445
structuretrois adultes ou plus avec lien de parenté 0.196666
structureadultes sans lien de parenté 0.305478
educ2primaire 0.205751
educ2secondaire ou plus 0.366889
gpage_mere_naissance19 ou moins 0.268062
gpage_mere_naissance30 et plus 0.191557
rang_apres_idealoui 0.602401
z
sexeféminin -4.553
milieu 2.431
richessepauvre -0.328
richessemoyen 1.286
richesseriche 1.184
richessetrès riche 1.084
structureun adulte -0.250
structuredeux adultes de même sexe 1.606
structuretrois adultes ou plus avec lien de parenté 0.251
structureadultes sans lien de parenté -0.430
educ2primaire -0.147
educ2secondaire ou plus -0.556
gpage_mere_naissance19 ou moins -1.157
gpage_mere_naissance30 et plus -0.014
rang_apres_idealoui 2.250
p
sexeféminin 5.29e-06
milieu 0.0151
richessepauvre 0.7427
richessemoyen 0.1986
richesseriche 0.2362
richessetrès riche 0.2784
structureun adulte 0.8024
structuredeux adultes de même sexe 0.1083
structuretrois adultes ou plus avec lien de parenté 0.8016
structureadultes sans lien de parenté 0.6672
educ2primaire 0.8831