DUREE DE SURVIE : Tentative de correction des exercices 1 et 2 page 29-30 du support de cours
EXERCICE 1
On s’intéresse au temps de survie de patients atteints de leucemie myélode aigue. Pour faire cette étude, on utilisera le jeu de donnée aml contenu dans le package Survival. le package Survival est le package de reference sur R pour faire une analyse sur des données de survie car il contient l’implémentation des methodes principales ( estimateur de Kaplan-Meier, courbes de survie,…).
le jeu de donnée aml contient les informations suivantes:
variables | Descriptions |
---|---|
time | Temps de survie |
status | 0 pour une observation censuré et 1 sinon |
x | Maintien d’un traitement par chimiothérapie |
En vue de commnencer a repondre qaux differentes question de l’exercice, chargeons tous les packages que nous allons utilisés
1. Apercu du jeu de données
Nous recuperons le jeu de données aml du package Survival ensuite nous l’attachons à l’aide de la fonction attach . il est imporant de noter que La fonction attach permet de ne pas à avoir à préciser à chaque fois le jeu de donnée sur lequel on travaille pour acceder a une de ses colonnes
time | status | x |
---|---|---|
9 | 1 | Maintained |
13 | 1 | Maintained |
13 | 0 | Maintained |
18 | 1 | Maintained |
23 | 1 | Maintained |
28 | 0 | Maintained |
31 | 1 | Maintained |
34 | 1 | Maintained |
45 | 0 | Maintained |
48 | 1 | Maintained |
161 | 0 | Maintained |
5 | 1 | Nonmaintained |
5 | 1 | Nonmaintained |
8 | 1 | Nonmaintained |
8 | 1 | Nonmaintained |
12 | 1 | Nonmaintained |
16 | 0 | Nonmaintained |
23 | 1 | Nonmaintained |
27 | 1 | Nonmaintained |
30 | 1 | Nonmaintained |
33 | 1 | Nonmaintained |
43 | 1 | Nonmaintained |
45 | 1 | Nonmaintained |
Il est important de faire un peu de statistque descriptive sur les données
time | status | x | |
---|---|---|---|
Min. : 5.00 | Min. :0.0000 | Maintained :11 | |
1st Qu.: 12.50 | 1st Qu.:1.0000 | Nonmaintained:12 | |
Median : 23.00 | Median :1.0000 | NA | |
Mean : 29.48 | Mean :0.7826 | NA | |
3rd Qu.: 33.50 | 3rd Qu.:1.0000 | NA | |
Max. :161.00 | Max. :1.0000 | NA |
n=nrow(data)
nb_cens=sum(status==0) #nombre d'observations censurées
nb_noncens=n-nb_cens#nombre d'observations non censurées
Nb_main=sum(x=='Maintained') #maintained
Nb_nonmain=sum(x=='Nonmaintained')# nonmaintained
L’etude porte dur 23 patients. Nous remarquons que le maximum des temps de survie est de 161 et le minimum est de 5, nous avons aussi 5observations censurées et 18 observations non censurées.De plus il ya 11 patient dont le traitement par chimiothérapie est maintenu , pour les 12 , le traitement n’est pas maintenu.
2. Création d’un objet de type survie
Nous allons crées un objet de type survie: ce objet nous permettra d’utiliser les fonctions du package survival. Pour cela , on utilise la fonction Surv.
## [1] 9 13 13+ 18 23 28+ 31 34 45+ 48 161+ 5 5 8 8
## [16] 12 16+ 23 27 30 33 43 45
Les données censurés sont marqués par un +. on a comme remarqué dans la question précédente, 5 observations censurées.
3. Estimateur de Kapla-Meier
Nous allons calculé l’estimateur de kapla-Meir de la survie globale c’est a dire utilisant le jeu de données en entie, puis calculer l’estimateur pour les 2 groupes formés à partir de la variable x (Maintained et Nonmaintained).
rappelons la formule de l’estimateur de kapla-Meier: \(\widehat{S}(t)=\prod_j^{ t^{*}_j < t }\left(1-\frac{d_j}{Y^{*}_j}\right)\)
avec \(t^{*}_j\) les temps de survie de l’évenement étudié, d_j le nombre de mort en \(t^{*}_j\) et \(Y^{*}_j\) le nombre d’individus à risque.
Pour calculer cet estimateur, on utilise la fonction survit du package survival R.
Fonction de survie globale
## Call: survfit(formula = base ~ 1)
##
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 5 23 2 0.9130 0.0588 0.8049 1.000
## 8 21 2 0.8261 0.0790 0.6848 0.996
## 9 19 1 0.7826 0.0860 0.6310 0.971
## 12 18 1 0.7391 0.0916 0.5798 0.942
## 13 17 1 0.6957 0.0959 0.5309 0.912
## 18 14 1 0.6460 0.1011 0.4753 0.878
## 23 13 2 0.5466 0.1073 0.3721 0.803
## 27 11 1 0.4969 0.1084 0.3240 0.762
## 30 9 1 0.4417 0.1095 0.2717 0.718
## 31 8 1 0.3865 0.1089 0.2225 0.671
## 33 7 1 0.3313 0.1064 0.1765 0.622
## 34 6 1 0.2761 0.1020 0.1338 0.569
## 43 5 1 0.2208 0.0954 0.0947 0.515
## 45 4 1 0.1656 0.0860 0.0598 0.458
## 48 2 1 0.0828 0.0727 0.0148 0.462
Fonction de survie groupe 1 (chimiothérapie maintenue)
## Call: survfit(formula = base ~ x, data = data, subset = x == "Maintained")
##
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 9 11 1 0.909 0.0867 0.7541 1.000
## 13 10 1 0.818 0.1163 0.6192 1.000
## 18 8 1 0.716 0.1397 0.4884 1.000
## 23 7 1 0.614 0.1526 0.3769 0.999
## 31 5 1 0.491 0.1642 0.2549 0.946
## 34 4 1 0.368 0.1627 0.1549 0.875
## 48 2 1 0.184 0.1535 0.0359 0.944
Fonction de survie groupe 2 (chimiothérapie non maintenue)
## Call: survfit(formula = base ~ x, data = data, subset = x == "Nonmaintained")
##
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 5 12 2 0.8333 0.1076 0.6470 1.000
## 8 10 2 0.6667 0.1361 0.4468 0.995
## 12 8 1 0.5833 0.1423 0.3616 0.941
## 23 6 1 0.4861 0.1481 0.2675 0.883
## 27 5 1 0.3889 0.1470 0.1854 0.816
## 30 4 1 0.2917 0.1387 0.1148 0.741
## 33 3 1 0.1944 0.1219 0.0569 0.664
## 43 2 1 0.0972 0.0919 0.0153 0.620
## 45 1 1 0.0000 NaN NA NA
4.Courbes de survie des deux groupes sur un meme graphique
kpm3=survfit(Surv(time,status)~ x,data=data)
plot(kpm3,col=c('red','black'),mark=4,cex=2, main =' Courbes de survie des deux groupes')
legend("topright", legend=c("Maintained", "Nonmaintained"),
col=c("red", "blue"), lty=c(1,1))
5. Moyenne, médiane, quartiles de survie
Nous allons calculé la moyenne, médiane, quartiles de survie dans les deux groupes et dans la pouplation globale Rappelons la formule de la moyenne et de la fonction quantile:
\(E(T)=\int_{0}^{\infty} S(T) \, \mathrm{d}t\) , on estime donc l’esperance en remplacant \(S(T)\) par l’estimateur de Kapkan-meier \(\widehat{S}(t)\) , ce qui est simple pusique \(\widehat{S}(t)\) est une fonction en escalier, il suffit donc d’additionner des aires de rectangles.
Mais il est impératif de noter qu’on a un problème si la dernière observation est censurée ! Le dernier rectangle a une aire infinie. Selon où on “coupe”, on obtient une moyenne différente. on chosit la zone de coupure avec le parametre ( rmean )
\(Q(p)=\inf(t: S(t)\leq p)\) , on estime donc la fonction quantile en remplacant \(S(T)\) par l’estimateur de Kapkan-meier \(\widehat{S}(t)\).
on choisit \(t=50\) pour la zone de coupe.
# moyenne, mediane et quantile de survie ( 2 groupe)
model<- survfit(Surv(time,status) ~ x)
a=quantile(model)
#moyenne groupe 1
print(model, print.rmean=TRUE,rmean=50)
## Call: survfit(formula = Surv(time, status) ~ x)
##
## n events *rmean *se(rmean) median 0.95LCL 0.95UCL
## x=Maintained 11 7 32.2 4.68 31 18 NA
## x=Nonmaintained 12 11 22.7 4.18 23 8 NA
## * restricted mean with upper limit = 50
#moyenne groupe 2
moy_nonmain=mean(mean(data[which(x=='Nonmaintained'),1]))
#moyenne, mediane et quantile de survie ( global)
model1<- survfit(Surv(time,status) ~ 1, data = data)
#moyenne de survi
print(model1, print.rmean=TRUE,rmean=50)
## Call: survfit(formula = Surv(time, status) ~ 1, data = data)
##
## n events *rmean *se(rmean) median 0.95LCL 0.95UCL
## 23.00 18.00 27.17 3.26 27.00 18.00 45.00
## * restricted mean with upper limit = 50
#quantile
b=quantile(model1)
#tableau recapitulatif
tab=data.frame(moyenne=c(32.2,22.7,27.17),mediane=c(a$quantile[,2],b$quantile[2]),fisrt_quant=c(a$quantile[,1],b$quantile[1]),third_quant=c(a$quantile[,3],b$quantile[3]))
rownames(tab)=c('maintenue','non-maintenue','globale')
kable(tab)
moyenne | mediane | fisrt_quant | third_quant | |
---|---|---|---|---|
maintenue | 32.20 | 31 | 18 | 48 |
non-maintenue | 22.70 | 23 | 8 | 33 |
globale | 27.17 | 27 | 12 | 43 |
Comparaison des parametres de chaque groupe avec ceux de la pouplation globale
rappelons l’interpretation des differents parametres
Parametres | Descriptions |
---|---|
Mediane de survie | c’est le temps auquel pour 50% des observations l’évenement étudié est survenue et pour les autres 50% des observations, l’évenement étudié n’est pas survenue |
Moyenne de survie | c’est le temps moyen de survie pour un individu |
1ier quartile de survie | c’est le temps auquel pour 75% des observations l’évenement étudié est survenue et pour les autres 25% des observations, l’évenement étudié n’est pas survenue |
3ieme quartile de survie | c’est le temps auquel pour 25% des observations l’évenement étudié est survenue et pour les autres 75% des observations, l’évenement étudié n’est pas survenue |
Dans notre cas, on remarque la médiane, le 1er quartile et le 3ieme quartile du groupe des patients dont la chimiotherapie a été maintenu sont supérieur à ceux de la population globale , ceux qui veut dire que la chimiotherapie permet d’augmenter la durée de recidive de certains patients.
la moyenne du groupe des patients dont la chimiotherapie a été maintenu est aussi supérieur à celle de la population globale, ce qui traduit le fait que les patients qui suivent une chimiotherapie ont une plus grande chance de ne pas recidiver c’est à dire que le cancer ne revienne pas à nouveau.
En définitive, on peut retenir que le traitement de chimiothérapie augmente la durée de vie de chaque patient.
6. Comparaison des deux courbes de survie
Si l’on compare les deux courbes de survie, on constate que les patients du groupe dont le traitement de chimiothérapie a été maintenu présentent une probabilité de survie plus grande que ceux du groupe dont le traitement de chimiothérapie n’a pas été maintenu car la courbe des patients “Maintained” se situe toujours en-dessous de celle des patients “Nonmaintained”.
ce graphique recèle quelques hypothèses potentiellement difficiles à prouver qui peut entacher d’erreur l’interpretation précédente. par exemple on est pas sur que la date de survenu de l’evenement soit effectivement la bonne . En effet Si l’événement étudié etait par exemple «la mort», il n’y aurait pas de doute mais dans notre cas l’événement considéré est «l’apparition d’une récidive» dans une étude sur le cancer (leucémie mylione), si on suppose la recidive a été observé lors d’un examen de routine, alors on ne connaît pas le moment précis de la récidive, mais seulement l’intervalle de temps pendant lequel elle a eu lieu. nous nous trouvons donc face à un biais, notamment une surestimation du délai effectif de survenue de la récidive et par conséquent de la probabilité de survie sans récidive.
Dans la question suivante on utilisera un test statisque approprié ( test de log- Rank) pour comparer les deux courbes de survie.
7. Mise en place un test de comparaison des deux courbes de survie.
Test de log-Rank
Dans les fonctions de survie, le test convenant le mieux est le test du log-rank, qui fonctionne comme un test d’adéquation et compare le nombre de décès observés et le nombre de décès attendus dans chaque tranche temporelle, sous l’hypothèse nulle qu’il n’y ait pas de différence entre les deux courbes. De plus c’est le plus performant des tests quand les deux courbes de survies ne se croise pas ce qui est le cas dans cette étude.
la statistique de test est \(T_n=\frac{U^{2}}{V}\)
avec $U= {k=0}^{n}w_i (d{B,i}-e_{B,i}) $ et $V=_{k=0}^{n} $
*wi une pondération dependant du choix du test
\(d_{A,i}\) , \(d_{B,i}\) le nombre d’évenements observés au temps \(t_i^{*}\) dans les groupes A et B. ( \(d_i=d_{A,i} +d_{B,i}\))
\(e_{A,i}\),\(e_{B,i}\) le nombre d’évenements attendus au temps \(t_i^{*}\) dans les groupes A et B sous H0
\(R_{A,i}\) , \(R_{B,i}\) le nombre d’individus a risque juste avant \(t_i^{*}\) dans les groupes A et B avec \(R_i=R_{A,i}+R_{B,i}\)
sous (H0), \(T_n \hookrightarrow \chi^2 (1)\)
et la region critique du test est telle que \(R_{\alpha} =\{T_n ≥ c\alpha\}\) où \(c\alpha\) est le quantile d’ordre \(1 − \alpha\) de la loi de \(\chi^2 (1)\).
Pour implementer le test de log-rank sur R , on utilise la fonction _survdiff du package survival.
## Call:
## survdiff(formula = Surv(time, status) ~ x)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## x=Maintained 11 7 10.69 1.27 3.4
## x=Nonmaintained 12 11 7.31 1.86 3.4
##
## Chisq= 3.4 on 1 degrees of freedom, p= 0.07
La valeur p du test de log-rank est égale à 0,07 qui est superieur à 0,05, ce qui signifie que l’on a prouvé qu’il n’ existe une différence statistiquement significative entre les probabilités de survie des deux groupes.Mais ce test peut etre ilusoire pour tirer des conclusions car nous avons un faible effectif de chaque groupe.
8. Deux estimateurs du risque cumulé pour la population globale.
Pour commencer, rappelons la formule du risque cumulé \(H(t)=\int_{0}^{t} h(u) \, \mathrm{d}u\) C’est une version cumulée du risque instantané.
pour son estimation nous allons utilisé l’estimateur de Nelson-Alen puis l’estimateur de Breslow
Estimateur de Nelson-Alen
Nelson-Alen estime le risque cumulé par une fonction en escalier:
\(\widehat{S}(t)= \sum_{t^{*}_j < t}\frac{d_j}{Y^{*}_j}\)
library(survival)
fit=survfit(base~1)
a=summary(fit)
p=cumsum(a$n.event/a$n.risk)
plot(a$time,p, type="s", main= "Estimateur de Nelson-Alen du risque cumulé")
Estimateur de Breslow
on sait que la formule (1) peut se réecrire de la maniere suivante :
\(H(u)=-ln(S(u))\)
Breslow estime donc la fonction de risque cumulé par :
\(H(u)=-ln(\widehat{S}(u))\)
## Call: survfit(formula = Surv(time, status) ~ 1, type = "fh")
##
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 5 23 2 0.915 0.0575 0.8088 1.000
## 8 21 2 0.830 0.0775 0.6910 0.997
## 9 19 1 0.787 0.0844 0.6381 0.971
## 12 18 1 0.745 0.0899 0.5878 0.944
## 13 17 1 0.702 0.0943 0.5397 0.914
## 18 14 1 0.654 0.0995 0.4852 0.881
## 23 13 2 0.557 0.1057 0.3840 0.808
## 27 11 1 0.509 0.1070 0.3367 0.768
## 30 9 1 0.455 0.1083 0.2855 0.725
## 31 8 1 0.402 0.1079 0.2372 0.680
## 33 7 1 0.348 0.1060 0.1917 0.632
## 34 6 1 0.295 0.1023 0.1493 0.582
## 43 5 1 0.241 0.0966 0.1101 0.529
## 45 4 1 0.188 0.0887 0.0745 0.474
## 48 2 1 0.114 0.0784 0.0296 0.439
plot(fit$time,-log(fit$surv),type="s",col="red",xlab='time',,main="Estimateur de Breslow du risque cumulé")
On remarque que les estimateurs de Nelson-Aalen et Breslow sont quasiment égaux.
9. Estimateur du risque cumulé pour chaque groupe
Nous utilisons l’estimateur de breslow pour estimer le risque cumulé.
model1<- survfit(Surv(time,status) ~ x,data=data, subset=x=="Maintained")
model2<- survfit(Surv(time,status) ~ x,data=data, subset=x=="Nonmaintained")
plot(model1$time,-log(model1$surv),type="s",col="red",main="Estimateur de Breslow du risque cumulé des deux groupes")
lines(model2$time,-log(model2$surv),type="s",col="blue")
legend("topright", legend=c("Maintained", "Nonmaintained"),
col=c("red", "blue"), lty=c(1,1))
EXERCICE2
Le tableau suivant (fctif) donne pour 202 personnes le temps entre le début et la fin du chomage, en distinguant entre celles qui retrouvent un emploi salarié et celles qui quittent le chomage pour d’autres raisons.
1. complètons le tableau de survie pour chaque k.
l=c(0,2,4,6,8,15)
Tempsenmois=cut(l,l)
Tempsenmois=Tempsenmois[-1]
Tempsenmois=as.data.frame(Tempsenmois)
Nouvelemploi=c(77,16,11,5,0)
Autresraisons=c(30,28,14,6,15)
chomage=cbind(Tempsenmois,Nouvelemploi,Autresraisons)
kable(chomage)
Tempsenmois | Nouvelemploi | Autresraisons |
---|---|---|
(0,2] | 77 | 30 |
(2,4] | 16 | 28 |
(4,6] | 11 | 14 |
(6,8] | 5 | 6 |
(8,15] | 0 | 15 |
Determination de nk,Rk,fk,Sk,pk
- Détermination de \(n_k\)
\(n_k\):nombre de cas exposés au risque après une durée correspondant à la borne inférieure de la classe k.
\(N_{k}=N_{k-1}-nouvelemploi_{k-1}-Autresraisons_{k-1}\)
nk=rep(0,length(l)-1)
nk[1]=202
for (i in 2:length(nk)){
nk[i]=nk[i-1]-Nouvelemploi[i-1]-Autresraisons[i-1]
}
- Détermination de \(R_{k}\)
\(R_{k}\):nombre de cas exposés utilisé pour l’estimation du risque. \(R_{k}=n_{k}-\frac{Autres raisons_{k}}{2}\)
- Détermination de \(S_{k}\)
\(S_{k}\):estimation de la probabilité de rester au chômage pour une durée égale ou supérieure à celle de la classe k. \(S_{k}= \prod_{a_{i} \geq a_{j}}(1-\frac{nouvelemploi_{i-1}}{R_{i-1}})\)
lk=rep(0,length(l)-1)
lk[1]=1
for (i in 2:length(lk)){
lk[i]=1-Nouvelemploi[i-1]/Rk[i-1]
}
Sk=rep(0,length(lk))
Sk=lk[1]
for(i in 2:length(lk)){
for(j in 2:i){
Sk[i]=Sk[j-1]*lk[i]
}
}
- Détermination de \(p_{k}\)
\(p_{k}\):estimation de la probabilité de rester au chômage au moins jusqu’au début et au plus tard jusqu’à la fin de la classe k. \(p_{k}= \frac{S_{k}*\frac{nouvelemploi_{k}}{R_{k}}}{amplitude_{k}}\)
pk=rep(0,length(l))
amplitude=c(2,2,2,2,7)
for (i in 1:length(pk)){
pk[i]=Sk[i]*(Nouvelemploi[i]/Rk[i])/amplitude[i]
}
pk=pk[-5]
- Détermination de \(h_{k}\)
\(h_{k}\) :estimation du risque instantané par intervalle. \(h_{k}=\frac{\frac{nouvelemploi_{k}}{R_{k}}}{amplitude_{k}(1-\frac{\frac{nouvelemploi_{k}}{R_{k}}}{2})}\)
Tableau complèté
Tempsenmois | Nouvelemploi | Autresraisons | nk | Rk | hk | Sk | pk |
---|---|---|---|---|---|---|---|
(0,2] | 77 | 30 | 202 | 187.0 | 0.2592593 | 1.0000000 | 0.2058824 |
(2,4] | 16 | 28 | 95 | 81.0 | 0.1095890 | 0.5882353 | 0.0580973 |
(4,6] | 11 | 14 | 51 | 44.0 | 0.1428571 | 0.4720407 | 0.0590051 |
(6,8] | 5 | 6 | 26 | 23.0 | 0.1219512 | 0.3540305 | 0.0384816 |
(8,15] | 0 | 15 | 15 | 7.5 | NA | 0.2770673 | NA |
2.Construction de la table de survie avec lifetab
Chargement des données
Construction des variables neccesaires pour utiliser lifetab
tableau=Dataset
Tempsenmois=cut(tableau$temps,l)
tableau1=table(Tempsenmois)
tableau1=as.data.frame(tableau1)
nouveauemploi=rep(0,nrow(tableau1)-1)
for(i in 1:(length(l)-1)){
nouveauemploi[i]=nrow(tableau[(tableau$temps<l[i+1] & tableau$temps>=l[i]) & tableau$statut=="evenement",])
}
autresraisons=tableau1$Freq-nouveauemploi
tableau1=cbind(tableau1,nouveauemploi,autresraisons)
kable(tableau1)
Tempsenmois | Freq | nouveauemploi | autresraisons |
---|---|---|---|
(0,2] | 107 | 77 | 30 |
(2,4] | 44 | 16 | 28 |
(4,6] | 25 | 11 | 14 |
(6,8] | 11 | 5 | 6 |
(8,15] | 15 | 9 | 6 |
Construction de la table de survie avec lifetab
nsubs | nlost | nrisk | nevent | surv | hazard | se.surv | se.pdf | se.hazard | ||
---|---|---|---|---|---|---|---|---|---|---|
0-2 | 202 | 30 | 187 | 77 | 1.0000000 | 0.2058824 | 0.2592593 | 0.0000000 | 0.0179949 | 0.0285351 |
2-4 | 95 | 28 | 81 | 16 | 0.5882353 | 0.0580973 | 0.1095890 | 0.0359898 | 0.0134878 | 0.0272322 |
4-6 | 51 | 14 | 44 | 11 | 0.4720407 | 0.0590051 | 0.1428571 | 0.0388746 | 0.0161553 | 0.0426313 |
6-8 | 26 | 6 | 23 | 5 | 0.3540305 | 0.0384816 | 0.1219512 | 0.0424217 | 0.0159074 | 0.0541312 |
8-15 | 15 | 6 | 12 | 9 | 0.2770673 | NA | NA | 0.0450482 | NA | NA |
Representation de la fonction de survie**
x=rep(l,each=2)
x=x[-c(1,12)]
y=rep(surv$surv,each=2)
plot(x,y,type="l",col="red",xlab="intervalle de temps",ylab="fonction survie")
title(main = "Courbe de survie globale", cex=.6)
Comparaison des résultats avec ceux obtenus précédemment et commentaire.
les résultats sont presque identique , il existe une légère différence au niveau l’intervalle [8,15]. cette différence est due au faite que les informations sur l’intervalle [8,15] du jeu du données et du tableau ne concorde pas.
3. Intervalle de confiance pour la courbe de survie
La formule de l’intervalle de confiance est la suivante : \(IC_{\alpha}=[\widehat{S}(t)- q_{1-\alpha/2}\sqrt(\widehat{Var}(\widehat{S}(t)),\widehat{S}(t)+ q_{1-\alpha/2}\sqrt(\widehat{Var}(\widehat{S}(t))]\)
l=c(0,2,4,6,8,15)
Tempsenmois=cut(l,l)
Tempsenmois=Tempsenmois[-1]
Tempsenmois=as.data.frame(Tempsenmois)
borneinf=rep(0,5)
bornesup=rep(0,5)
alpha=0.05
for(i in 1:5){
borneinf[i]=surv$surv[i]-qnorm(1-alpha/2,0,1)*surv$se.surv[i]
bornesup[i]=surv$surv[i]+qnorm(1-alpha/2,0,1)*surv$se.surv[i]
}
intervalle=as.data.frame(cbind(Tempsenmois,borneinf,bornesup))
kable(intervalle)
Tempsenmois | borneinf | bornesup |
---|---|---|
(0,2] | 1.0000000 | 1.0000000 |
(2,4] | 0.5176966 | 0.6587740 |
(4,6] | 0.3958478 | 0.5482336 |
(6,8] | 0.2708855 | 0.4371755 |
(8,15] | 0.1887745 | 0.3653602 |
4. Construction de deux courbes de survie pour les femmes et les hommes
Table de survie pour les hommes
tableau=Dataset
tableau=tableau[tableau$genre=="H",]
Tempsenmois=cut(tableau$temps,l)
tableau1=table(Tempsenmois)
tableau1=as.data.frame(tableau1)
nouveauemploi=rep(0,nrow(tableau1)-1)
for(i in 1:(length(l)-1)){
nouveauemploi[i]=nrow(tableau[(tableau$temps<l[i+1] & tableau$temps>=l[i]) & tableau$statut=="evenement",])
}
autresraisons=tableau1$Freq-nouveauemploi
tableau1=cbind(tableau1,nouveauemploi,autresraisons)
kable(tableau1)
Tempsenmois | Freq | nouveauemploi | autresraisons |
---|---|---|---|
(0,2] | 31 | 23 | 8 |
(2,4] | 25 | 7 | 18 |
(4,6] | 20 | 9 | 11 |
(6,8] | 10 | 4 | 6 |
(8,15] | 15 | 9 | 6 |
nsubs | nlost | nrisk | nevent | surv | hazard | se.surv | se.pdf | se.hazard | ||
---|---|---|---|---|---|---|---|---|---|---|
0-2 | 101 | 8 | 97.0 | 23 | 1.0000000 | 0.1185567 | 0.1345029 | 0.0000000 | 0.0215920 | 0.0277910 |
2-4 | 70 | 18 | 61.0 | 7 | 0.7628866 | 0.0437722 | 0.0608696 | 0.0431839 | 0.0157621 | 0.0229639 |
4-6 | 45 | 11 | 39.5 | 9 | 0.6753422 | 0.0769377 | 0.1285714 | 0.0493014 | 0.0232250 | 0.0425014 |
6-8 | 25 | 6 | 22.0 | 4 | 0.5214668 | 0.0474061 | 0.1000000 | 0.0589966 | 0.0221009 | 0.0497494 |
8-15 | 15 | 6 | 12.0 | 9 | 0.4266546 | NA | NA | 0.0645656 | NA | NA |
Table de survie pour les femmes
tableau=Dataset
tableau=tableau[tableau$genre=="F",]
Tempsenmois=cut(tableau$temps,l)
tableau1=table(Tempsenmois)
tableau1=as.data.frame(tableau1)
nouveauemploi=rep(0,nrow(tableau1)-1)
for(i in 1:(length(l)-1)){
nouveauemploi[i]=nrow(tableau[(tableau$temps<l[i+1] & tableau$temps>=l[i]) & tableau$statut=="evenement",])
}
autresraisons=tableau1$Freq-nouveauemploi
tableau1=cbind(tableau1,nouveauemploi,autresraisons)
kable(tableau1)
Tempsenmois | Freq | nouveauemploi | autresraisons |
---|---|---|---|
(0,2] | 76 | 54 | 22 |
(2,4] | 19 | 9 | 10 |
(4,6] | 5 | 2 | 3 |
(6,8] | 1 | 1 | 0 |
(8,15] | 0 | 0 | 0 |
nsubs | nlost | nrisk | nevent | surv | hazard | se.surv | se.pdf | se.hazard | ||
---|---|---|---|---|---|---|---|---|---|---|
0-2 | 101 | 22 | 90.0 | 54 | 1.0000000 | 0.3000000 | 0.4285714 | 0.0000000 | 0.0258199 | 0.0526937 |
2-4 | 25 | 10 | 20.0 | 9 | 0.4000000 | 0.0900000 | 0.2903226 | 0.0516398 | 0.0250998 | 0.0926060 |
4-6 | 6 | 3 | 4.5 | 2 | 0.2200000 | 0.0488889 | 0.2857143 | 0.0527889 | 0.0283114 | 0.1936088 |
6-8 | 1 | 0 | 1.0 | 1 | 0.1222222 | 0.0611111 | 1.0000000 | 0.0592940 | 0.0296470 | 0.0000000 |
8-15 | 0 | 0 | 0.0 | 0 | 0.0000000 | NA | NA | NaN | NA | NA |
construction des deux courbes de survie
x=rep(l,each=2)
x=x[-c(1,12)]
yH=rep(survH$surv,each=2)
plot(x,yH,type="l",col="red",xlab="intervalle de temps",ylab="fonction survie",ylim=seq(0,1,1))
x=rep(l,each=2)
x=x[-c(1,12)]
yF=rep(survF$surv,each=2)
lines(x,yF,type="l",col="blue",xlab="intervalle de temps",ylab="fonction survie")
title(main = "Courbe de survie (Homme vs femme)", cex=.6)
legend("topright", legend=c("Homme ", "Femmme"),
col=c("red", "blue"), lty=c(1,1))
la courbe de survie des hommes est au dessus de la courbe de survie des femmes ce qui veut dire que les hommes retrouvent plus rapidement du travail que les femmes.