##chargement des packages----
library(questionr)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.1 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(tableone)
library(labelled)
library(gtsummary)
## #BlackLivesMatter
library(GGally)
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
library(readxl)
library(effects)
## Le chargement a nécessité le package : carData
## lattice theme set by effectsTheme()
## See ?effectsTheme for details.
library(survival)
library(survminer)
## Le chargement a nécessité le package : ggpubr
##
## Attachement du package : 'survminer'
##
## L'objet suivant est masqué depuis 'package:survival':
##
## myeloma
library(ggplot2)
library(dplyr)
library(knitr)
library(cowplot)
##
## Attachement du package : 'cowplot'
##
## L'objet suivant est masqué depuis 'package:ggpubr':
##
## get_legend
##
## L'objet suivant est masqué depuis 'package:lubridate':
##
## stamp
##chargement des données
data_ipi_nivo <- read_excel("C:/datar/data_ipi_nivo.xlsx")
## New names:
## • `CAT` -> `CAT...27`
## • `Le cas échéant date de tox` -> `Le cas échéant date de tox...42`
## • `le cas échéant type de Tox de la dernière` -> `le cas échéant type de Tox de
## la dernière...43`
## • `evttt` -> `evttt...56`
## • `evttt` -> `evttt...59`
## • `CAT` -> `CAT...69`
## • `Le cas échéant date de tox` -> `Le cas échéant date de tox...107`
## • `le cas échéant type de Tox de la dernière` -> `le cas échéant type de Tox de
## la dernière...108`
##recodage des variables et bases de données le cas échéant----
##restriction aux patients 2ème ligne et 3ème ligne
ipinivol2etplus<-filter(data_ipi_nivo, c(ligne_meta>1))
ipinivol2et3<-filter(ipinivol2etplus, c(ligne_meta<4))
##renommer des variables pour présentation dans les tableaux de résultats
library(labelled)
var_label(ipinivol2et3$ev_sstox) <- "patient avec toxicité cliniquement pertinente"
var_label(ipinivol2et3$age_calc) <- "age (années)"
var_label(ipinivol2et3$ligne_meta) <- "ligne métastatique d'ipi_nivo"
var_label(ipinivol2et3$snc) <- "patient avec métas cérébrale"
var_label(ipinivol2et3$braf) <- "patient avec mutation braf"
var_label(ipinivol2et3$prett_ipi) <- "patient pré-traité par ipilimumab"
var_label(ipinivol2et3$prett_pembro) <- "patient pré-traité par pembrolizumab"
var_label(ipinivol2et3$prett_nivo) <- "patient pré-traité par nivolumab"
var_label(ipinivol2et3$refractaire_immuno) <- "patient réfractaire à immuno précédente"
var_label(ipinivol2et3$atcd_stop_tox) <- "patient avec antédent d'arret pour toxicité sous immuno"
var_label(ipinivol2et3$atcd_tox) <- "patient avec antécédent de toxicité cliniquement pertinente sous immuno précédente"
##création de variables à plusieurs catégorie selon valeurs variable continue
##
##tableau descriptif population globales ----
tbl_summary(
ipinivol2et3 , include = c("age_calc", "ligne_meta", "sexe", "oms","braf", "snc", "prett_nivo", "prett_pembro", "prett_ipi","refractaire_immuno", "atcd_stop_tox", "atcd_tox"),
statistic = all_continuous() ~ "{median} [{min} - {max}]",
digits=all_categorical()~ c(0,1)
)
Characteristic |
N = 21 |
age (années) |
70 [42 - 80] |
ligne métastatique d'ipi_nivo |
|
2 |
13 (61.9%) |
3 |
8 (38.1%) |
sexe |
|
F |
9 (42.9%) |
H |
12 (57.1%) |
oms |
|
0 |
11 (52.4%) |
1 |
8 (38.1%) |
2 |
1 (4.8%) |
3 |
1 (4.8%) |
patient avec mutation braf |
8 (38.1%) |
patient avec métas cérébrale |
11 (52.4%) |
patient pré-traité par nivolumab |
9 (42.9%) |
patient pré-traité par pembrolizumab |
12 (57.1%) |
patient pré-traité par ipilimumab |
1 (4.8%) |
patient réfractaire à immuno précédente |
7 (33.3%) |
patient avec antédent d'arret pour toxicité sous immuno |
2 (9.5%) |
patient avec antécédent de toxicité cliniquement pertinente sous immuno précédente |
6 (28.6%) |
## motifs d'arret ipi_nivo----
tbl_summary(
ipinivol2et3 , include = c("motif_arret", "ev_sstox"),
digits=all_categorical()~ c(0,1)
)
Characteristic |
N = 21 |
motif_arret |
|
changement de ligne avant progression |
1 (6.2%) |
Progression |
6 (37.5%) |
Progression +
Toxicité |
1 (6.2%) |
Refus traitement par la patient pour douleur post radio |
1 (6.2%) |
Toxicité |
7 (43.8%) |
Unknown |
5 |
patient avec toxicité cliniquement pertinente |
15 (71.4%) |
#Courbe de Kaplan Meier PFS ppulation globale----
km_pfs_ipinivo<-survfit(Surv(ipinivol2et3$pfsipinivo, ipinivol2et3$evtpfsipinivo)~1)
km_pfs_ipinivo
## Call: survfit(formula = Surv(ipinivol2et3$pfsipinivo, ipinivol2et3$evtpfsipinivo) ~
## 1)
##
## n events median 0.95LCL 0.95UCL
## [1,] 21 14 6.4 4.43 NA
ggsurvplot(km_pfs_ipinivo, data = ipinivol2et3,
risk.table=TRUE,
surv.scale="percent",
break.time.by=3,
surv.median.line = "hv"
)

#Courbe de Kaplan Meier PFS selon ligne----
km_pfsligne<-survfit(Surv(pfsipinivo, evtpfsipinivo)~ligne_meta, data=ipinivol2et3)
ggsurvplot(km_pfsligne, data = ipinivol2et3,
risk.table=TRUE,
surv.scale="percent",
break.time.by=3,
surv.median.line = "hv"
)

#Courbe de Kaplan Meier PFS selon refractaire derniere immuno----
km_pfsrefractaire<-survfit(Surv(pfsipinivo, evtpfsipinivo)~refractaire_immuno, data=ipinivol2et3)
ggsurvplot(km_pfsrefractaire, data = ipinivol2et3,
risk.table=TRUE,
surv.scale="percent",
break.time.by=3,
surv.median.line = "hv"
)

#Courbe de Kaplan Meier PFS selon méta cérébrale----
km_pfssnc<-survfit(Surv(pfsipinivo, evtpfsipinivo)~snc, data=ipinivol2et3)
ggsurvplot(km_pfssnc, data = ipinivol2et3,
risk.table=TRUE,
surv.scale="percent",
break.time.by=3,
surv.median.line = "hv"
)

##cox univarié PFS
### refractaire
modsurv<-coxph(Surv(pfsipinivo, evtpfsipinivo)~refractaire_immuno, data=ipinivol2et3)
modsurv%>%tbl_regression(exponentiate = TRUE)
Characteristic |
HR |
95% CI |
p-value |
patient réfractaire à immuno précédente |
2.02 |
0.67, 6.12 |
0.2 |
###ligne_meta
modsurv<-coxph(Surv(pfsipinivo, evtpfsipinivo)~ligne_meta, data=ipinivol2et3)
modsurv%>%tbl_regression(exponentiate = TRUE)
Characteristic |
HR |
95% CI |
p-value |
ligne métastatique d'ipi_nivo |
1.27 |
0.42, 3.84 |
0.7 |
###méta cérébrale
modsurv<-coxph(Surv(pfsipinivo, evtpfsipinivo)~snc, data=ipinivol2et3)
modsurv%>%tbl_regression(exponentiate = TRUE)
Characteristic |
HR |
95% CI |
p-value |
patient avec métas cérébrale |
2.42 |
0.76, 7.75 |
0.14 |
##cox mutlivarié PFS
#modele de cox pfs selon métas snc et refractaire
modsurv<-coxph(Surv(pfsipinivo, evtpfsipinivo)~refractaire_immuno+snc, data=ipinivol2et3)
modsurv%>%tbl_regression(exponentiate = TRUE)
Characteristic |
HR |
95% CI |
p-value |
patient réfractaire à immuno précédente |
2.66 |
0.84, 8.42 |
0.10 |
patient avec métas cérébrale |
3.01 |
0.91, 10.0 |
0.072 |
##cox univarié OS
#modele de cox os selon ligne
modsurv<-coxph(Surv(os, evtos)~ligne_meta, data=ipinivol2et3)
modsurv%>%tbl_regression(exponentiate = TRUE)
Characteristic |
HR |
95% CI |
p-value |
ligne métastatique d'ipi_nivo |
1.76 |
0.51, 6.11 |
0.4 |
#modele de cox os selon t refractaire
modsurv<-coxph(Surv(os, evtos)~refractaire_immuno, data=ipinivol2et3)
modsurv%>%tbl_regression(exponentiate = TRUE)
Characteristic |
HR |
95% CI |
p-value |
patient réfractaire à immuno précédente |
1.26 |
0.35, 4.51 |
0.7 |
#modele de cox os selon metas cerebrale
modsurv<-coxph(Surv(os, evtos)~snc, data=ipinivol2et3)
modsurv%>%tbl_regression(exponentiate = TRUE)
Characteristic |
HR |
95% CI |
p-value |
patient avec métas cérébrale |
1.52 |
0.43, 5.42 |
0.5 |
#modele de cox os selon ligne et refractaire et metas snc
modsurv<-coxph(Surv(os, evtos)~refractaire_immuno+ligne_meta+snc, data=ipinivol2et3)
modsurv%>%tbl_regression(exponentiate = TRUE)
Characteristic |
HR |
95% CI |
p-value |
patient réfractaire à immuno précédente |
1.48 |
0.41, 5.35 |
0.6 |
ligne métastatique d'ipi_nivo |
1.84 |
0.53, 6.42 |
0.3 |
patient avec métas cérébrale |
1.60 |
0.45, 5.70 |
0.5 |
#Courbe de Kaplan Meier OS population globale----
km_os_ipinivo<-survfit(Surv(ipinivol2et3$os, ipinivol2et3$evtos)~1)
km_os_ipinivo
## Call: survfit(formula = Surv(ipinivol2et3$os, ipinivol2et3$evtos) ~
## 1)
##
## n events median 0.95LCL 0.95UCL
## [1,] 21 10 16.2 7.9 NA
ggsurvplot(km_os_ipinivo, data = ipinivol2et3,
risk.table=TRUE,
surv.scale="percent",
break.time.by=3,
surv.median.line = "hv"
)

#Courbe de Kaplan Meier OS selon ligne----
km_osligne<-survfit(Surv(os, evtos)~ligne_meta, data=ipinivol2et3)
ggsurvplot(km_osligne, data = ipinivol2et3,
risk.table=TRUE,
surv.scale="percent",
break.time.by=3,
surv.median.line = "hv"
)

#Courbe de Kaplan Meier OS selon refractaire----
km_osrefractaire<-survfit(Surv(os, evtos)~refractaire_immuno, data=ipinivol2et3)
ggsurvplot(km_osrefractaire, data = ipinivol2et3,
risk.table=TRUE,
surv.scale="percent",
break.time.by=3,
surv.median.line = "hv"
)

##Survie sans tox sous ipi-nivo---
km_survie_sans_tox<-survfit(Surv(ipinivol2et3$survie_sanstox, ipinivol2et3$ev_sstox)~1)
km_survie_sans_tox
## Call: survfit(formula = Surv(ipinivol2et3$survie_sanstox, ipinivol2et3$ev_sstox) ~
## 1)
##
## n events median 0.95LCL 0.95UCL
## [1,] 21 15 2.83 1.97 NA
ggsurvplot(km_survie_sans_tox, data = ipinivol2et3,
risk.table=TRUE,
surv.scale="percent",
break.time.by=3,
surv.median.line = "hv"
)

##survie sans tox selon antécédent de tox---
km_survie_sans_tox_atcd<-survfit(Surv(survie_sanstox, ev_sstox)~atcd_tox, data=ipinivol2et3)
ggsurvplot(km_survie_sans_tox_atcd, data = ipinivol2et3,
risk.table=TRUE,
surv.scale="percent",
break.time.by=3,
surv.median.line = "hv"
)

##survie sans tox selon antécédent d'arret pour tox---
km_survie_sans_tox_atcd_stop<-survfit(Surv(survie_sanstox, ev_sstox)~atcd_stop_tox, data=ipinivol2et3)
ggsurvplot(km_survie_sans_tox_atcd_stop, data = ipinivol2et3,
risk.table=TRUE,
surv.scale="percent",
break.time.by=3,
surv.median.line = "hv"
)

##survie sans tox selon ligne---
km_survie_sans_tox_ligne<-survfit(Surv(survie_sanstox, ev_sstox)~ligne_meta, data=ipinivol2et3)
ggsurvplot(km_survie_sans_tox_ligne, data = ipinivol2et3,
risk.table=TRUE,
surv.scale="percent",
break.time.by=3,
surv.median.line = "hv"
)

#modele de cox survie sans tox selon atcd de tox
modsurv<-coxph(Surv(survie_sanstox, ev_sstox)~atcd_tox, data=ipinivol2et3)
modsurv%>%tbl_regression(exponentiate = TRUE)
Characteristic |
HR |
95% CI |
p-value |
patient avec antécédent de toxicité cliniquement pertinente sous immuno précédente |
1.78 |
0.62, 5.08 |
0.3 |
##regression logisitique incidence toxicité selon atcd-
mod<-glm( ev_sstox ~ atcd_tox, data=ipinivol2et3, family="binomial")
summary(mod)
##
## Call:
## glm(formula = ev_sstox ~ atcd_tox, family = "binomial", data = ipinivol2et3)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.35373 -1.35373 0.00013 1.01077 1.01077
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.4055 0.5270 0.769 0.442
## atcd_tox 18.1606 2662.8561 0.007 0.995
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 25.127 on 20 degrees of freedom
## Residual deviance: 20.190 on 19 degrees of freedom
## AIC: 24.19
##
## Number of Fisher Scoring iterations: 17
exp(coefficients(mod))
## (Intercept) atcd_tox
## 1.5 77099195.2
exp(confint(mod, level=0.95))
## Attente de la réalisation du profilage...
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## 2.5 % 97.5 %
## (Intercept) 5.409143e-01 4.474684
## atcd_tox 4.148097e-106 NA
mod%>%tbl_regression(intercept = TRUE, exponentiate = TRUE)
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
Characteristic |
OR |
95% CI |
p-value |
(Intercept) |
1.50 |
0.54, 4.47 |
0.4 |
patient avec antécédent de toxicité cliniquement pertinente sous immuno précédente |
77,099,195 |
0.00, NA |
>0.9 |