STATISTISK ANALYS AV KOMPLEXA DATA LONGITUDINELLA DATA Mattias Villani Statistik Institutionen för Datavetenskap Linköpings Universitet MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 1 / 44 TVÄRSNITTSDATA (CROSS-SECTIONAL DATA) En mätning per individ/subjekt (blodtryck för individ i) Mätningen kan vara fler-dimensionell (blodtryck och kroppstemperatur för individ i) De olika mätvariablerna (blocktryck och temp) kan vara beroende/korrelerade Ingen tidsdimension Kan jämföra olika delpopulationer som råkar ha skilda åldrar, men ingen info om hur en given individ utvecklas över tiden Mellan-individ effekter, men inga inom-individ effekter Oparat t-test Vanlig modell: regression MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 3 / 44 MOMENTETS INNEHÅLL Introduktion till longitudinella data Modeller för väntevärdesprofiler Modeller för kovariansmatriser Modeller med fixed och random effects R-paket för analys av longitudinella data MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA / 44 EXEMPEL LUNGFUNKTION MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 4 / 44
TIDSSERIEDATA En mätvariabel som observeras över tid Oftast många mätningar över tiden (lång tidsserie med > 100 observationer) Beroende mellan mätningar vid olika tidpunkter Starkast beroende mellan närliggande tidpunkter Mätvariabeln kan vara fler-dimensionell Vanlig modell: ARIMA eller state-space modeller MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 5 / 44 LONGITUDINELLA DATA Samma individer observeras vid flera olika tidpunkter Ger information om en individs förändring över tiden Tänk parat t-test Kombo av tvärsnitts- och tidsseriedata Ofta få mätningar per individ (5-0 st) Longitudinella data är i princip korta tidsserier, men har egna modeller och metoder Mätningar mellan olika individer antas ofta vara oberoende Mätningarna för en individ tenderar att vara beroende Autokorrelation MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 7 / 44 EXEMPEL LUNGFUNKTION MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 6 / 44 EXEMPEL LUNGFUNKTION MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 8 / 44
VARFÖR ÄR DEN LONGITUDINELLA ASPEKTEN VIKTIG? MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 9 / 44 VARFÖR ÄR DEN LONGITUDINELLA ASPEKTEN VIKTIG? MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 11 / 44 VARFÖR ÄR DEN LONGITUDINELLA ASPEKTEN VIKTIG? MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 10 / 44 LONGITUDINELLA DATA, FORTS Egenskaper för autokorrelation i longitudinella data: Positiv Minskar med tidsavståndet mellan två observationer Korrelation mellan mycket långa tidsavstånd är ofta skild från noll Korrelation mellan mycket korta tidsavstånd är sällan nära ett Vanligt med missing data: Saknade mättillfällen Drop-outs Överlevare Besläktade datatyper: hierarkiska data (skolor med skolklasser med elever) spatiala (rumsliga) data (huspriser i olika städer, miljödata) tempo-spatiala data (månatliga mätningar av huspriser i olika städer) MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 1 / 44
HUR MAN ORGANISERAR LONGITUDINELLA DATA fev <- readtable("/data/lungfunctiongrowthdat", header = TRUE) fev[1:18, ] ID Height Age InitialHeight InitialAge LogFEV1 1 1 10 9341 10 9341 0151 1 18 10393 10 9341 03716 3 1 133 1145 10 9341 04886 4 1 14 1460 10 9341 07514 5 1 148 13418 10 9341 0839 6 1 150 15474 10 9341 0890 7 1 15 1637 10 9341 08713 8 113 6587 113 6587 03075 9 119 7650 113 6587 03507 10 149 1739 113 6587 07561 11 153 13774 113 6587 08671 1 155 14694 113 6587 10473 13 156 158 113 6587 11537 14 157 16668 113 6587 0943 15 157 1763 113 6587 11346 16 3 118 6913 118 6913 04318 17 3 13 7975 118 6913 03853 18 3 130 8966 118 6913 05988 MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 13 / 44 BLYMÄNGDER HOS SMÅ BARN - BEHANDLINGSGRUPP MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 15 / 44 BLYMÄNGDER HOS SMÅ BARN - KONTROLLGRUPP MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 14 / 44 LONGITUDINELLA DATA ÄR MULTIVARIATA DATA Yi ni 1 = Yi1 Yi, i = 1,,, N Yini Kan modelleras med multivariate normalfördelning, och multivariat regression Blymängder, kontrollgrupp: Corr(Y ) = 1 089 0839 0755 1 0860 0759 1 0869 1 MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 16 / 44
LONGITUDINELLA DATA ÄR MULTIVARIATA DATA MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 17 / 44 AUTOKORRELERADE MÄTNINGAR ÄR BRA Intresse: förändringen mellan två tidpunkter θ = µ µ1 Modell för tidpunkt 1 och Y1 N(µ1, σ 1 ) Y N(µ, σ ) Notera: E (Y Y1) = µ µ1 Var(Y Y1) = σ 1 + σ ρ1σ1σ Estimator av förändringen mellan tidpunkterna: ˆθ = 1 N N (Yi Yi1) i=1 Samplingvarians för ˆθ Var( ˆθ) = σ 1 + σ ρ 1σ1σ N MATTIAS vilken VILLANI är (STATISTIK, liten vid LIU) stark positiv LONGITUDINELLA (auto)korrelation DATA 19 / 44 PROBLEM MED DIREKT MULTIVARIAT ANALYS Cov(Y ) innehåller T (T + 1)/ fria parametrar, dvs många parametrar när T är stort Missing data och drop-outs Y1 = Y11 Y1 Y13 Y14, Y = Y1 NA NA NA, Y3 = Y31 Y3 NA Y34 Olika individer kan observeras vid olika tidpunkter MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 18 / 44 MODELL FÖR VÄNTEVÄRDESPROFILER Väntevärdesprofilen, mean response profile, över tiden för individ i: E (Yij) = β0 + β1 tij + β t ij, i = 1,, N och j = 1,, ni Andra parametriska kurvor går också bra, t ex splines Vi kan även ha en annan förklarande variabel X1som är konstant över tiden (tidsinvariant): E (Yij Xi ) = β0 + β1 tij + β t ij + β3 Xi,1 Och vi kan ha en förklarande variabel som varierar över tid (tidsvariant) E (Yij Xi ) = β0 + β1 tij + β t ij + β3 Xi,1 + β4 Xij, MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 0 / 44
HUR MAN ORGANISERAR LONGITUDINELLA DATA fev <- readtable("/data/lungfunctiongrowthdat", header = TRUE) fev[1:18, ] ID Height Age InitialHeight InitialAge LogFEV1 1 1 10 9341 10 9341 0151 1 18 10393 10 9341 03716 3 1 133 1145 10 9341 04886 4 1 14 1460 10 9341 07514 5 1 148 13418 10 9341 0839 6 1 150 15474 10 9341 0890 7 1 15 1637 10 9341 08713 8 113 6587 113 6587 03075 9 119 7650 113 6587 03507 10 149 1739 113 6587 07561 11 153 13774 113 6587 08671 1 155 14694 113 6587 10473 13 156 158 113 6587 11537 14 157 16668 113 6587 0943 15 157 1763 113 6587 11346 16 3 118 6913 118 6913 04318 17 3 13 7975 118 6913 03853 18 3 130 8966 118 6913 05988 MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 1 / 44 VÄNTEVÄRDESPROFILER MED TVÅ GRUPPER Kontrollgruppens väntevärdesprofil E (yij xi ) = β0 + β1 t + β t Behandlingsgruppens väntevärdesprofil: E (yij xi ) = (β0 + β3) + (β1 + β4) t + (β + β5) t Testa om behandlingen har någon som helst effekt: H0: β3 = β4 = β5 = 0 Vanligt F-test MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 3 / 44 MODELLER FÖR VÄNTEVÄRDESPROFILER, FORTS Vi kan skriva modellen in matrisform för Yi = (Yi1, Yi,, Yin) E (Yi Xi ) = µi = Xi β Exempel: för modellen E (yij x) = β0 + β1 t + β t + β3 x1,i + β4 x,ij har vi Xi = 1 ti1 t i1 x1,i x,i1 1 ti t i x1,i x,i1 1 tini t ini x1,i x,ini Notera: multivariat regression (multivariat respons) = Multipel regression (en respons, flera förklarande variabler) MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA / 44 VÄNTEVÄRDESPROFILER MED TVÅ GRUPPER, FORTS Datamatris Första personen kontroll, andra personen behandlad 1 t11 t 11 0 0 0 1 t1 t 1 0 0 0 Xi = 1 t1n1 t i1n1 0 0 0 1 t1 t 1 1 t1 t 1 1 t t 1 t t 1 tn t 1 n tn t n MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 4 / 44
VÄNTEVÄRDESPROFILER MED TVÅ GRUPPER, FORTS R sätter upp Xi åt oss utifrån följande datamatris 1 Y11 t11 T 1 Y1 t1 T Data = 1 Y1n1 t1n1 T Y1 t1 C Y t C Yn tn C där den första kolumnen indikerar individ och sista kolumnen är en faktor-variabel som indikerar behandling (T) eller kontroll (C) MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 5 / 44 FUNKTIONEN GLS I R-PAKETET NLME - ALLMÄN # Fitting quadratic mean response profiles with GLS model using different # covariance structures Child lead data - GLS library(nlme) # Reading data from file leaddata <- readtable("/data/leaddatapp") # General symmetric covariance structure modelsym <- gls(lead ~ 1 + time * group + I(time^) * group, data = leaddata, correlation = corsymm(form = ~1 id)) summary(modelsym) Generalized least squares fit by REML Model: lead ~ 1 + time * group + I(time^) * group Data: leaddata AIC BIC loglik 56 614-168 Correlation Structure: General Formula: ~1 id Parameter estimate(s): Correlation: 1 3 036 3 059 0615 4 047 059 056 Coefficients: Value StdError t-value p-value (Intercept) 458 07831 8677 00000 time -6194 05610-11040 00000 groupp 3333 11075 3009 0008 MATTIAS I(time^) VILLANI (STATISTIK, 1017 00965 LIU) 10536 00000 LONGITUDINELLA DATA 7 / 44 time:groupp 5435 07934 6850 00000 groupp:i(time^) -0946 01365-6933 00000 ESTIMATION Modell Yi ni 1 = Xi ni p β p 1 + ɛi ni 1 där ɛi iid N(0, R i ) Antag att Ri är kända Generalized Least Squares (GLS) ˆβ = [ N i=1 X i R i 1 Xi ] 1 N i=1 (X i R i 1 yi ) Notera: att ni kan variera över individerna X i R 1 i Xi är alltid en p p matris ocjh X i R 1 i yi är en p dimensional vektor När Ri är okänd kan den ersättas med en skattning Fortfarande konsistent skattning av β Vi kan faktiskt sätta Ri = σ I och ändå få konsistenta skattningar Men standardfelen för ˆβ blir inte rätt Sandwich MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 6 / 44 FUNKTIONEN GLS I R-PAKETET NLME - EQUI # Fitting quadratic mean response profiles with GLS model using different # covariance structures Child lead data - GLS library(nlme) # Reading data from file leaddata <- readtable("/data/leaddatapp") # General symmetric covariance structure modelsym <- gls(lead ~ 1 + time * group + I(time^) * group, data = leaddata, correlation = corcompsymm(form = ~1 id)) summary(modelsym) Generalized least squares fit by REML Model: lead ~ 1 + time * group + I(time^) * group Data: leaddata AIC BIC loglik 573 605-179 Correlation Structure: Compound symmetry Formula: ~1 id Parameter estimate(s): Rho 05196 Coefficients: Value StdError t-value p-value (Intercept) 3973 0967 5870 00000 time -7541 06066-143 00000 groupp 1996 13105 153 0185 I(time^) 1196 0099 1059 00000 time:groupp 664 08578 77 00000 groupp:i(time^) -1104 01403-7873 00000 MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 8 / 44 Correlation: (Intr) time groupp I(t^) tm:grp
FUNKTIONEN GLS I R-PAKETET NLME - AR1 # Fitting quadratic mean response profiles with GLS model using different # covariance structures Child lead data - GLS library(nlme) # Reading data from file leaddata <- readtable("/data/leaddatapp") # General symmetric covariance structure modelsym <- gls(lead ~ 1 + time * group + I(time^) * group, data = leaddata, correlation = corar1(form = ~1 id)) summary(modelsym) Generalized least squares fit by REML Model: lead ~ 1 + time * group + I(time^) * group Data: leaddata AIC BIC loglik 61 643-198 Correlation Structure: AR(1) Formula: ~1 id Parameter estimate(s): Phi 04914 Coefficients: Value StdError t-value p-value (Intercept) 3911 0997 5718 00000 time -6878 06746-10195 00000 groupp 051 13149 1560 01196 I(time^) 1090 0106 1066 00000 time:groupp 6039 09540 6330 00000 groupp:i(time^) -1011 0150-673 00000 MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 9 / 44 Correlation: (Intr) time groupp I(t^) tm:grp time -0443 groupp -0707 0313 I(time^) 068-0953 -0189 time:groupp 0313-0707 -0443 0674 groupp:i(time^) -0189 0674 068-0707 -0953 BLYMÄNGDER HOS SMÅ BARN - KONTROLLGRUPP Standardized residuals: Min Q1 Med Q3 Max -5848-0683 -01368 05550 60995 Residual standard error: 6886 Degrees of freedom: 400 total; 394 residual MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 31 / 44 BLYMÄNGDER - FITTED VALUES FRÅN GLS EQUICORR MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 30 / 44 BLYMÄNGDER HOS SMÅ BARN - BEHANDLINGSGRUPP MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 3 / 44
MODELLER FÖR KOVARIANSMATRISEN Ri = σ i I n Oberoende observationer med olika varians för varje individ Specialfall: σi = σ för alla i Equikorrelationsmodell R = σ 1 ρσ1σ ρσ1σn σ ρσ1σ ρσσn ρσ1σn ρσσn σ n med korrelationsmatris P = 1 ρ ρ ρ 1 ρ ρ ρ 1 MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 33 / 44 VARIOGRAM Variogram beskriver det temporala beroendet för en stokastisk process med oregelbundna observationstider γ(u) = 1 E {[Y (t) Y (t u)] }, u 0 Om processen är stationär gäller följande relation mellan variogram och autokorrelationsfunktion γ(u) = σ [1 ρ(u)], där σ är variansen för Y (t) Sample variogram anpassar en mjuk kurva genom punkterna vijk = 1 (e ij eik) där eij är residualen vid tidpunkt tij och uijk = tij tik Funktionen Variogram i R-paketet nlme beräknar variogrammet på gls-objekt och lme-objekt MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 35 / 44 MODELLER FÖR KOVARIANSMATRISEN, FORTS Autoregressiv struktur P = ρ 1 1 ρ n 1 ρ 1 ρ n 1 ρ n 1 ρ n 1 där autokorrelationen avtar med tidsavståndet, t ex Corr(Yi1, Yi4) = ρ 3 Autoregressiv struktur för data med olika tid mellan observationstillfällen: Corr(Yij, Yik) = ρ t ij t ik MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 34 / 44 FIXED EFFECTS OCH RANDOM EFFECTS Den vanliga linjära modellen (Fixed effects) Yij = β0 + β1xij + ɛij Random intercept model: Yij = (β0 + bi ) + β1xij + ɛij där bi N(0, σ b ) är den individ-specifika delen av interceptet Slumpmässigt Marginell väntevärdesprofil E (Yij Xij) = β0 + β1xij Betingad väntevärdesprofil E (Yij Xij, bi ) = (β0 + bi ) + β1xij MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 36 / 44
KOVARIANSSTRUKTUR FRÅN RANDOM INTERCEPT Kovariansen för en random intercept modell är Cov(Yi ) = σ σ σ b σ b b σ b b σ b σ b σ b σ b + Ri Om Ri = σ In ger detta en ekvi-korrelationsmatris med korrelationskoefficienten ρ = σ b σ +σ b Ett slumpmässigt intercept ger varje individ dess eget intercept innebär: observationerna är oberoende kring den betingade väntevärdesprofilen (β0 + b i ) + β1x ij observationerna för en individ är beroende kring det marginella väntevärdet β0 + β1x ij Autokorrelation genom random intercept MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 37 / 44 VÄNTEVÄRDE OCH COVARIANS - GLMM Marginell väntevärdesprofil E (Yi Xij) = Xi β Betingad väntevärdesprofil E (Yi Xi, bi ) = Xi β + Zibi Kovariansmatris Σ 1 = Cov(Yi ) = ZiGZ i + Ri Notera 1: Cov(Yi ) visar tydligt att variationen i data kan delas upp i mellan-individsvariation (Z i GZ i ) och inom-individsvariation (R i ) Notera : varianser och kovarianser för Yi kan nu bero på förklarande variabler (Zi) Linjär tidstrend i Zi ger kvadratisk tidstrend i variansen Notera 3: variablerna i Zi bör även ingå i Xi Notera 4: Ri kan parametriseras som tidigare, t ex via equi-korrelationmatris eller autoregressive struktur MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 39 / 44 FIXED EFFECTS OCH RANDOM EFFECTS Random slope Yij = (β0 + b0i ) + (β1 + b1i )Xij + ɛij där (b0i, b1i ) N(0, D) är den individ-specifika delen Slumpmässigt General Linear Mixed Model (GLMM) Yi = Xi β + Zibi + ɛi bi iid N q(0, D) εi iid N p(0, Ri ) MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 38 / 44 KRYMPNING - LÅNA STYRKA GLMM modellen: Yi = Xi β + Zibi + ɛi Responsprofilen för den ite individen är Ŷi = Wi (Xi ˆβ) + (I Wi ) Yi där ˆβ är GLS skattning på populationsnivå och viktmatrisen Wi är Wi p p = ˆRi (ZiĜZ i + ˆRi ) 1 Intuition: Ŷi = Vikt Populationsprofil + (1-Vikt) Observerad profil Variation inom individ Vikt = Variation mellan individer + Variation inom individ Individer med svaga observationer (stort Ri) lånar styrka från populationen MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 40 / 44
MODELLVAL Hur väljer man bland modeller? vilken modell för vänteväntevärdesprofilen? vilken struktur på kovariansmatrisen? Fixed eller random effects? Vilka förklarande variabler? etc etc Strategi: välj den modell som minimerar ett informationskriterium AIC: MaxLogLik + (#antal parametrar i modellen) BIC MaxLogLik + ln N (#antal parametrar i modellen) där MaxLogLik är log-likelihoodfunktionens maximum (ln L( ˆθ)) MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 41 / 44 EXEMPEL - LONGITUDINELL ANALYS MED NLME # installpackages('nlme') # install package uncomment if not installed library(nlme) # load package fev <- readtable("/data/lungfunctiongrowthdat", header = TRUE) modelrandomslopear1 <- lme(fixed = LogFEV1 ~ 1 + Age + log(height) + InitialAge + log(initialheight), random = ~1 + Age ID, data = fev, correlation = corar1()) summary(modelrandomslopear1) Linear mixed-effects model fit by REML Data: fev AIC BIC loglik -4588-453 304 Random effects: Formula: ~1 + Age ID Structure: General positive-definite, Log-Cholesky parametrization StdDev Corr (Intercept) 010919 (Intr) Age 0004731-094 Residual 0067148 Correlation Structure: AR(1) Formula: ~1 ID Parameter estimate(s): Phi 03473 Fixed effects: LogFEV1 ~ 1 + Age + log(height) + InitialAge + log(initialheight) Value StdError DF t-value p-value (Intercept) -0719 00448 169-640 00000 Age 005 000164 169 1371 00000 log(height) 546 00538 169 431 00000 InitialAge -0017 000819 97-66 00083 log(initialheight) 03350 016040 97 09 00376 MATTIAS Correlation: VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 43 / 44 (Intr) Age lg(hg) IntlAg Age 0041 LONGITUDINELL ANALYS I R Flera paket att välja på, framförallt: nlme och lme4 nlme kan skatta linear mixed models med normalfördelade störningar (ɛ) och normalfördelade random effects (bi) Många options, t ex olika strukturer på Ri = Cov(ɛij) och D = Cov(bi ) T o m heteroscedastiska modeller för variansen är möjliga lme4 liknar nlme, men har inte lika många kovarianstrukturer att välja på Men lme4 kan skatta linear mixed models för data där responsen t ex är räknedata eller binär lme4 kan alltså skatta en logistisk regression med fixed och random effects SAS har PROC MIXED Se Lindas föreläsningar om hierarkiska data MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 4 / 44 BLYMÄNGD - RANDOM INTERCEPT MODELL # installpackages('nlme') # install package uncomment if not installed library(nlme) # load package leaddata <- readtable("/data/leaddatapp") # Fitting a random intercept model modelrandomintercept <- lme(fixed = lead ~ 1 + time * group + I(time^) * group, random = ~1 id, data = leaddata, correlation = NULL) modelrandomintercept$coef$fixed (Intercept) time groupp I(time^) 3973-7541 1996 1196 time:groupp groupp:i(time^) 664-1104 var(modelrandomintercept$coef$random[[1]]) (Intercept) (Intercept) 1997 MATTIAS VILLANI (STATISTIK, LIU) LONGITUDINELLA DATA 44 / 44