Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Temporalité dans les données de santé
Maxime Wack Camille Nevoret 9 janvier 2018
2
Introduction Notion de temporalité est primordiale
Données rarement ponctuelles Techniques statistiques variées Problématiques soulevées par les entrepôts de données cliniques Temporalité dans les données de santé
3
Types de temporalité 1 temps 2 temps n temps n états ∞ temps
Temporalité dans les données de santé
4
1 temps Temporalité dans les données de santé
5
1 temps — Contexte Études épidémiologiques Transversales Descriptives
Comparatives Entre deux ou plusieurs groupes Temporalité dans les données de santé
6
Rappel test statistique
Temporalité dans les données de santé
7
1 temps — Techniques Bivarié
Statistiques descriptives Statistiques fréquentistes classiques t-test, ANOVA, Chi², etc. tests de comparaison entre groupes Temporalité dans les données de santé
8
1 temps — Techniques Multivarié
Régression linéaire Régression logistique Y = β₀1 + β₁x₁ + β₂x₂ + … + βnxn + ε Y = βX + ε Temporalité dans les données de santé
9
1 temps — Problématiques
Choix du test statistique Valeurs manquantes Temporalité dans les données de santé
10
1 temps — Exemples Variables numériques : comparaison âge
Variables catégorielles : comparaison CSP Temporalité dans les données de santé
11
Exemples — Prérequis install.packages("tidyverse") library(tidyverse) library(lme4) library(lmerTest) library(TraMineR) library(TSA) library(astsa) library(zoo) library(Rssa) library(survival) Temporalité dans les données de santé
12
Ceci n’est pas un pipe. %>%
Provenant des packages magrittr et dplyr « sucre syntaxique » Permet de chaîner les instructions en un pipeline x %>% f f(x) > data %>% select(var1, var3) %>% filter(var1 > 5) %>% summary Temporalité dans les données de santé
13
1 temps — Exemples # Data data(iris) data(mtcars) mtcars %>% mutate_at(vars(am, cyl, vs, gear), factor) -> mtcars Temporalité dans les données de santé
14
1 temps — Exemples boxplot(mpg ~ am, data = mtcars)
Temporalité dans les données de santé
15
1 temps — Exemples ggplot(mtcars) + aes(x = am, y = mpg) +
geom_boxplot() + geom_point(alpha = .5) Temporalité dans les données de santé
16
1 temps — Exemples # Paramétrique
t.test(mpg ~ am, data = mtcars, var.equal = T) oneway.test(mpg ~ am, data = mtcars, var.equal = T) # Non-paramétrique wilcox.test(mpg ~ am, data = mtcars) Temporalité dans les données de santé
17
1 temps — Exemples iris %>% ggplot() +
aes(x = Species, y = Sepal.Width) + geom_violin() + geom_point(position = "jitter", alpha = .5) Temporalité dans les données de santé
18
1 temps — Exemples iris %>% ggplot() + aes(x = Petal.Length) +
geom_histogram(data = iris %>% select(-Species)) + geom_histogram(aes(fill = Species)) + facet_grid(~Species) Temporalité dans les données de santé
19
1 temps — Exemples # Paramétrique
oneway.test(Sepal.Width ~ Species, data = iris) # Non-paramétrique kruskal.test(Sepal.Width ~ Species, data = iris) Temporalité dans les données de santé
20
1 temps — Exemples plot(mtcars) Temporalité dans les données de santé
21
1 temps — Exemples # Régression linéaire
fit <- lm(mpg ~ am, data = mtcars) summary(fit) plot(fit) fit <- lm(mpg ~ cyl + disp + hp + drat + wt + vs + am, data = mtcars) # Régression logistique fit <- glm(am ~ mpg + drat + wt, data = mtcars, family = "binomial") Temporalité dans les données de santé
22
2 temps Temporalité dans les données de santé
23
2 temps — Contexte Études longitudinales : État initial – état final
cas-témoin cohorte exposé-non exposé essai randomisé État initial – état final 2 mesures du même paramètre chez les mêmes patients Temporalité dans les données de santé
24
2 temps — Techniques Bivarié
Statistiques descriptives tests appariés étude de l’évolution (différence pour valeurs numériques) Temporalité dans les données de santé
25
2 temps — Techniques Multivarié
Régression linéaire Régression logistique Temps comme co-facteur Y modélisant l’évolution Temporalité dans les données de santé
26
2 temps — Problématiques
Variable d’intérêt non numérique Perdus de vue Calibration de la mesure Temporalité dans les données de santé
27
2 temps — Exemples Variables numériques : évolution cholestérolémie avant et après traitement Variables catégorielles : évolution statut tabagique avant et après campagne de communication Temporalité dans les données de santé
28
2 temps — Exemples # Data data(ChickWeight)
Temporalité dans les données de santé
29
2 temps — Exemples ChickWeight %>% filter(Time %in% c(0, 2)) %>% ggplot() + aes(x = Time, y = weight, group = Chick, color = Diet) + geom_point() + geom_line() Temporalité dans les données de santé
30
2 temps — Exemples t.test(ChickWeight$weight[ChickWeight$Time == 0],
paired = T) ChickWeight %>% filter(Time %in% c(0, 2)) %>% group_by(Chick) %>% summarise(weightDiff = last(weight) - first(weight), Diet = first(Diet)) -> deuxTemps Temporalité dans les données de santé
31
2 temps — Exemples deuxTemps %>% ggplot() + aes(x = weightDiff, fill = Diet) + geom_density(alpha = .25) #, position = "fill") # position = "stack" "fill" Temporalité dans les données de santé
32
2 temps — Exemples oneway.test(weightDiff ~ Diet, data = deuxTemps) kruskal.test(weightDiff ~ Diet, data = deuxTemps) Temporalité dans les données de santé
33
2 temps variables — Contexte
Études dites de survie État initial – survenue d’un évènement Données censurées Temporalité dans les données de santé
34
2 temps variables — Techniques Bivarié
Log-rank Courbe de Kaplan-Meier Temporalité dans les données de santé
35
2 temps variables — Techniques Multivarié
Modèle de régression à risque proportionnel Modèle de Cox λ(t|Xi) = λ0(t) exp(Xi·β) Temporalité dans les données de santé
36
2 temps variables — Problématiques
Perdus de vue Caractérisation de l’évènement Temporalité dans les données de santé
37
2 temps variables — Exemples
Survie après diagnostic de cancer du poumon «Survie» avant récidive de tachycardie ventriculaire Temporalité dans les données de santé
38
2 temps variables — Exemples
# Data data(lung) lung$Surv <- Surv(lung$time, lung$status) Temporalité dans les données de santé
39
2 temps variables — Exemples
survfit(Surv ~ 1, data = lung) -> fit plot(fit) Temporalité dans les données de santé
40
2 temps variables — Exemples
survfit(Surv ~ sex, data = lung) -> fit plot(fit, conf.int = T, col = c("blue", "red")) legend("topright", legend = c("Hommes", "Femmes"), col = c("blue", "red"), lty = 1) Temporalité dans les données de santé
41
2 temps variables — Exemples
survdiff(Surv ~ sex, data = lung) coxph(Surv ~ sex + age + ph.ecog + ph.karno + meal.cal + wt.loss, data = lung) -> fit cox.zph(fit) plot(cox.zph(fit)) Temporalité dans les données de santé
42
n temps Temporalité dans les données de santé
43
n temps — Contexte Études longitudinales prospectives :
cohorte essai randomisé État initial – états intermédiaires – état final n mesures du même paramètre chez les mêmes patients Temporalité dans les données de santé
44
n temps — Techniques ANOVA à mesures répétées Modèle mixte
associe effets fixes et effets aléatoires Y = βX + uZ + ε Variable aléatoire = variable dont on ne connaît pas toutes les valeurs possibles Temporalité dans les données de santé
45
n temps — Problématiques
Temps de mesures fixes Mesure à chaque point Temporalité dans les données de santé
46
n temps — Exemples Évolution du poids/triglycérides au cours d’un régime alimentaire Évolution des notes au cours d’un cursus universitaire Temporalité dans les données de santé
47
n temps — Exemples ChickWeight %>% ggplot() + aes(x = Time, y = weight, group = Chick, color = Diet) %>% geom_line(alpha = .5) + geom_smooth(aes(x = Time, y = weight, color = Diet)) Temporalité dans les données de santé
48
n temps — Exemples ChickWeight %>% ggplot() + aes(x = Time, y = weight, group = Chick, color = Diet) %>% geom_line(alpha = .5) + geom_smooth(aes(x = Time, y = weight, color = Diet)) Temporalité dans les données de santé
49
n temps — Exemples lmer(weight ~ Diet + (1|Time) + (1|Chick), data = ChickWeight) -> fit summary(fit) plot(fit) Temporalité dans les données de santé
50
n états Temporalité dans les données de santé
51
n états — Contexte Données collectées en continu
Entrepôts de données cliniques Données du SNDS (Système National de Données de Santé) Temporalité dans les données de santé
52
n états — Techniques Modèle de survie avec multi-états et risques compétitifs Réseaux bayésiens Étude de trajectoires Temporalité dans les données de santé
53
n états — Problématiques
États doivent être catégoriels Temporalité dans les données de santé
54
n états — Exemples Trajectoires de soin
États successifs dans une maladie chronique Temporalité dans les données de santé
55
n états — Exemples library(TraMineR) library(cluster) ## Data data(mvad) Temporalité dans les données de santé
56
n états — Exemples ## Description mvad.seq <- seqdef(mvad, 17:86, xtstep = 12) plot(mvad.seq, 1:20) seqdplot(mvad.seq) Temporalité dans les données de santé
57
n états — Exemples ## Clustering mvad.om <- seqdist(mvad.seq, method = "OM", sm = "TRATE") clusterward <- agnes(mvad.om, diss = T, method = "ward") mvad.cl <- cutree(clusterward, k = 4) cl.lab <- factor(mvad.cl, labels = paste("Cluster", 1:4)) Temporalité dans les données de santé
58
n états — Exemples seqdplot(mvad.seq, group = cl.lab)
Temporalité dans les données de santé
59
n états — Exemples seqfplot(mvad.seq, group = cl.lab)
Temporalité dans les données de santé
60
n états — Exemples seqmsplot(mvad.seq, group = cl.lab)
Temporalité dans les données de santé
61
n états — Exemples ## Analyse mvad.ent <- seqient(mvad.seq) lm.ent <- lm(mvad.ent ~ male + funemp + gcse5eq, data = mvad) summary(lm.ent) Temporalité dans les données de santé
62
∞ temps Temporalité dans les données de santé
63
∞ temps — Contexte Mesures biologiques : Données de moniteurs : ECG
Température corporelle Sécrétion hormonale … Données de moniteurs : ECG EEG Temporalité dans les données de santé
64
∞ temps — Contexte Suivi du nombre de cas d’une pathologie
Données de l’Institut de Veille Sanitaire Temporalité dans les données de santé
65
∞ temps — Contexte Analyse d’un signal Prévision Comparaison de série
Aide au diagnostic Temporalité dans les données de santé
66
∞ temps — Contexte Evènement : Mortalité cardiovalculaire
Période de 10 ans 508 points de mesures 1 point de mesure correspond à une moyenne sur 6 jours Données libres d’accès, R package astsa Temporalité dans les données de santé
67
∞ temps — Contexte Etude préliminaire des données (fenêtre temporelle, nombre d’observation, visualisation des données ….) # Data data(cmort) is.ts(cmort) #On vérifie qu'il s'agit bien d'un objet série temporelle start(cmort) #Première observation end(cmort) #Dernière observation frequency(cmort) #Fréquence des observations deltat(cmort) #Intervalle de temps entre deux observations length(cmort) #Nombre de points head(cmort) #Visualisation des premier éléments de l'objet cmort tsplot(cmort) #Visualisation graphique de la série Temporalité dans les données de santé
68
∞ temps — Techniques Méthode de décomposition
Principe : Une série temporelle peut être décomposé suivant 3 composantes : Tendance 𝑚 𝑡 Saisonnalité 𝑠 𝑡 Bruit 𝜀 𝑡 Tendance : Suite déterministe, Modélise l’évolution moyenne « à long terme » Saisonnalité : Suite déterministe et périodique, Modélise les fluctuations déterministes à court terme et récurrent Bruit : Suite aléatoire, Modélise les fluctuations aléatoire Temporalité dans les données de santé
69
∞ temps — Techniques Méthode de décomposition
Différents modèles à partir de cette décomposition Modèle additif 𝑌 𝑡 = 𝑚 𝑡 + 𝜀 𝑡 𝑌 𝑡 = 𝑚 𝑡 + 𝑠 𝑡 + 𝜀 𝑡 Modèle multiplicatif 𝑌 𝑡 = 𝑚 𝑡 𝜀 𝑡 𝑌 𝑡 = 𝑠 𝑡 𝜀 𝑡 Modèle hybride 𝑌 𝑡 = 𝑚 𝑡 𝑠 𝑡 + 𝜀 𝑡 Temporalité dans les données de santé
70
∞ temps — Techniques Méthode de décomposition
Temporalité dans les données de santé
71
∞ temps — Techniques Méthode de décomposition
Test de tendance de Mann-Kendall : H0 : « il n'y a pas de tendance » Test de stationnarité : Teste si la série est stationnaire ie la série à le même comportement au temps t ou au temps t+k Test de blancheur : Teste si la série est un bruit blanc ie Moyenne nulle Variance σ² Covariance nulle Temporalité dans les données de santé
72
∞ temps — Exemple Méthode de décomposition
Tester l’existence d’une tendance sur les données cmort Décomposer les données selon un modèle additif (puis multiplicatif) MannKendall(cmort) #test de tendance : significatif donc il existe bien une tendance D_additif1 = decompose(cmort, "additive") plot(D_additif1) D_additif2 = stl(cmort, "periodic") plot(D_additif2) D_multiplicatif = decompose(cmort, "multiplicative") plot(D_multiplicatif) Temporalité dans les données de santé
73
∞ temps — Exemple Méthode de décomposition
Recomposer le signal avec et sans bruit #Fonction permettant d’avoir le graphique graph = function(var){ plot(var, lwd = 2, col = "#FFC000", main = substitute(var)) lines(cmort,lty = 2) } cmort_ad1 = D_additif1$trend + D_additif1$seasonal + D_additif1$random graph(cmort_ad1) cmort_ad1_ssrandom = D_additif1$trend + D_additif1$seasonal graph(cmort_ad1_ssrandom) Temporalité dans les données de santé
74
∞ temps — Technique Autocorrélation et Modélisation
Autocorrélation partielle : Corrélation de la série entre 𝑌 𝑡 et 𝑌 𝑡−𝑘 en retirant l’influence des variables ( 𝑌 𝑡−1 , 𝑌 𝑡−2 ,… 𝑌 𝑡−𝑘+1 ) Autocorrélation : Corrélation de la série avec elle-même décalé de k périodes (Corr( 𝑌 𝑡 , 𝑌 𝑡−𝑘 )) acf(cmort) pacf(cmort) Temporalité dans les données de santé
75
∞ temps — Technique Autocorrélation et Modélisation
Pour pouvoir faire une prévision, il est nécessaire de modéliser une série temporelle. Différentes modélisations sont possibles. Pour déterminer le modèle adéquate on se repose sur les propriétés de la série et sur les autocorrélogrammes Processus AR Processus MA Processus ARMA (stationnaire, sans saisonnalité) Processus SARMA (stationnaire, avec saisonnalité) Processus ARIMA (non stationnaire, sans saisonnalité) Processus SARIMA (non stationnaire, avec saisonnalité) Processus ARCH …. Temporalité dans les données de santé
76
∞ temps — Exemple Autocorrélation et Modélisation
Temporalité dans les données de santé
77
∞ temps — Technique Analyse spectrale
Détermination de la période : autocorrélation ou périodogramme de Fourrier Fréquence = Période Période Temporalité dans les données de santé
78
∞ temps — Technique Analyse spectrale
Lissage par moyenne glissante Lissage par noyaux Temporalité dans les données de santé
79
∞ temps — Exemple Analyse spectrale
Déterminer la période de la série cmort Tracer le lissage par moyenne mobile p = periodogram(cmort) Periode = 1/p$freq[which.max(p$spec)] plot(cmort, ylab = "cmort", main = "Lissage par moyenne glissante") lines(filter(cmort, rep(1/20, 20), side = 1), col = "#FFC000", lwd = 2) lines(filter(cmort, rep(1/12, 12), side = 1), col = "red", lwd = 2) lines(filter(cmort, rep(1/50, 50), side = 1), col = "indianred4", lwd = 2) legend("topright", col = c("red", "#FFC000", "indianred4"), legend = c("1/12", "1/20", "1/100"), lwd = c(2,2,2)) Temporalité dans les données de santé
80
∞ temps — Exemple Analyse spectrale
Tracer les lissages par noyau k1 <- kernel("daniell", 10) k2 <- kernel("daniell", 5) k3 <- kernel("daniell", 30) x1 <- kernapply(cmort, k1) x2 <- kernapply(cmort, k2) x3 <- kernapply(cmort, k3) plot(cmort, main = "Lissage par noyaux") lines(x1, col = "#FFC000", lwd = 2) lines(x2, col = "red", lwd = 2) lines(x3, col = "indianred4", lwd = 2) legend("topright", col = c("red", "#FFC000", "indianred4"), legend = c("5", "10", "30"), lwd = c(2,2,2)) Temporalité dans les données de santé
81
∞ temps — Technique Série temporelle multiple
Test de Granger : Causalité au sens de Granger On veux savoir si la variable Y1 cause la variable Y2 ie si la connaissance des valeurs passées de Y1 peut améliorer la prévision de Y2. Temporalité dans les données de santé
82
∞ temps — Exemple Analyse spectrale
Tester la causalité entre les données cmort et des données environnementales grangertest(cmort ~ lap[,4]) #Température grangertest(cmort ~ lap[,5]) #Humidité relative grangertest(cmort ~ lap[,6]) #Monoxyde de carbone grangertest(cmort ~ lap[,7]) #Dioxyde de soufre grangertest(cmort ~ lap[,8]) #Dioxyde d'azote grangertest(cmort ~ lap[,9]) #Hydrocarbure grangertest(cmort ~ lap[,10]) #Ozone grangertest(cmort ~ lap[,11]) #Particule Temporalité dans les données de santé
83
Merci de votre attention !
@wack_maxime
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.