La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Temporalité dans les données de santé

Présentations similaires


Présentation au sujet: "Temporalité dans les données de santé"— Transcription de la présentation:

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


Télécharger ppt "Temporalité dans les données de santé"

Présentations similaires


Annonces Google