##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 = 211
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%)
1 Median [Range]; n (%)
## motifs d'arret ipi_nivo----

tbl_summary(
  ipinivol2et3 , include = c("motif_arret", "ev_sstox"),
  digits=all_categorical()~ c(0,1)
)
Characteristic N = 211
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%)
1 n (%)
#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 HR1 95% CI1 p-value
patient réfractaire à immuno précédente 2.02 0.67, 6.12 0.2
1 HR = Hazard Ratio, CI = Confidence Interval
###ligne_meta
modsurv<-coxph(Surv(pfsipinivo, evtpfsipinivo)~ligne_meta, data=ipinivol2et3)
modsurv%>%tbl_regression(exponentiate = TRUE)
Characteristic HR1 95% CI1 p-value
ligne métastatique d'ipi_nivo 1.27 0.42, 3.84 0.7
1 HR = Hazard Ratio, CI = Confidence Interval
###méta cérébrale
modsurv<-coxph(Surv(pfsipinivo, evtpfsipinivo)~snc, data=ipinivol2et3)
modsurv%>%tbl_regression(exponentiate = TRUE)
Characteristic HR1 95% CI1 p-value
patient avec métas cérébrale 2.42 0.76, 7.75 0.14
1 HR = Hazard Ratio, CI = Confidence Interval
##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 HR1 95% CI1 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
1 HR = Hazard Ratio, CI = Confidence Interval
##cox univarié OS
#modele de cox os selon ligne 
modsurv<-coxph(Surv(os, evtos)~ligne_meta, data=ipinivol2et3)
modsurv%>%tbl_regression(exponentiate = TRUE)
Characteristic HR1 95% CI1 p-value
ligne métastatique d'ipi_nivo 1.76 0.51, 6.11 0.4
1 HR = Hazard Ratio, CI = Confidence Interval
#modele de cox os selon t refractaire
modsurv<-coxph(Surv(os, evtos)~refractaire_immuno, data=ipinivol2et3)
modsurv%>%tbl_regression(exponentiate = TRUE)
Characteristic HR1 95% CI1 p-value
patient réfractaire à immuno précédente 1.26 0.35, 4.51 0.7
1 HR = Hazard Ratio, CI = Confidence Interval
#modele de cox os selon metas cerebrale
modsurv<-coxph(Surv(os, evtos)~snc, data=ipinivol2et3)
modsurv%>%tbl_regression(exponentiate = TRUE)
Characteristic HR1 95% CI1 p-value
patient avec métas cérébrale 1.52 0.43, 5.42 0.5
1 HR = Hazard Ratio, CI = Confidence Interval
#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 HR1 95% CI1 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
1 HR = Hazard Ratio, CI = Confidence Interval
#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 HR1 95% CI1 p-value
patient avec antécédent de toxicité cliniquement pertinente sous immuno précédente 1.78 0.62, 5.08 0.3
1 HR = Hazard Ratio, CI = Confidence Interval
##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 OR1 95% CI1 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
1 OR = Odds Ratio, CI = Confidence Interval