Modelli longitudinali lineari - Dipartimento di Matematica e Informatica

` degli Studi di Trieste
Universita
Analisi Multivariata dei Dati Sperimentali
Corso di Laurea Magistrale in Biotecnologie Mediche
Corso di Laurea Magistrale in Nanotecnologie
Modelli longitudinali lineari con R
0 2 4 6 8 1012
PaO2 FiO2
hfpv
400
300
200
100
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
control
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
0 2 4 6 8 1012
time (hour)
Autore
Massimo Borelli, Ph.D.
27 marzo 2014
Indice
1 Introduzione ai modelli misti
1.1 Cosa impareremo nelle pagine seguenti? . . . . . . . . . . . . . . . . . . .
2 il dataset percussive
2.1 il modello lineare sbagliato . . . .
2.2 il primo modello misto . . . . . . .
2.3 il secondo modello misto . . . . . .
2.4 il terzo modello misto . . . . . . .
2.5 diagnostica del terzo modello misto
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
4
5
7
8
9
10
11
3 Interpretazione dei risultati
12
Bibliografia
13
1
1
Introduzione ai modelli misti
Abbiamo imparato che in un semplice modello lineare come la retta di regressione vi
sono due componenti:
y = q + mx + 1. la componente degli effetti fissi, ovvero il predittore lineare q + mx, che specifica
quali covariate del dataset siano dei predittori significativi del modello statistico. Il software R in tal caso ci fornisce le loro stime puntuali (estimates) e le
loro affidabilit`
a (standard errors), come nell’esempio della statura e del peso degli
studenti:
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -83.89056
16.67708
-5.03 4.34e-06 ***
statura
0.85392
0.09649
8.85 1.18e-12 ***
2. la componente degli effetti casuali, ovvero - nel caso della retta di regressione e
dei modelli lineari in generale - il residuo , che descrive quanto ciascun dato della
risposta si discosti dal modello statistico, interpretando tali scostamenti come un
numero casuale distribuito normalmente con media nulla e deviazione standard σ
stimata dal software R:
Residual standard error: 6.459 on 63 degrees of freedom
Il modello lineare `e particolarmente adeguato a descrivere esperimenti realizzati in
un design cross-section, nel quale ogni unit`a statistica `e caratterizzata da un unico
dato, in termini di risposta. Ci`
o evidentemente non accade nei seguenti casi tipici delle
biotecnologie e delle nanotecnologie:
• esperimenti con misure ripetute, nei quali la variabile dipendente `e misurata
pi`
u volte sulla medesima unit`a statistica (esempio: esperimenti in duplicato, in
triplicato, ...)
• esperimenti longitudinali, nei quali la variabile dipendente `e misurata ripetutamente in tempi diversi sulla medesima unit`a statistica (esempio: curve di crescita)
2
• esperimenti longitudinali in cluster , nei quali distinte unit`a statistiche appartengono a diversi cluster e delle quali si hanno misure raccolte nel tempo (esempio:
curve di crescita di topi appartenenti a nidiate distinte; follow-up nelle lesioni tumorali mammarie appartenenti a sedi diverse -destra o sinistra- nella medesima
paziente; evoluzione delle infiammazioni gengivali in diversi denti del medesimo
paziente; ...)
Da un punto di vista matematico, in questi tipi di studi osservazionali con misure
ripetute e/o dati in cluster i residui non sono indipendenti tra loro (almeno a livello
del singolo soggetto), ovvero potrebbero non avere varianza costante. I modelli pi`
u
adeguati dal punto di vista statistico per trattare questi studi sono i modelli ad effetti
misti (si veda ad esempio [9]) nei quali la parte del modello relativa agli effetti casuali
presenta pi`
u di un termine, oltre al residuo :
y = β0 + β1 x1 + .. + b1 z1 + .. + dove ad esempio β0 e β1 sono la quota e la pendenza della retta di regressione, mentre
b1 ad esempio `e un numero casuale, che non `e una costante del modello (come lo sono la
quota e la pendenza), che proviene da una variabile aleatoria gaussiana (non osservata)
della quale il software riporta la deviazione standard.
3
1.1
Cosa impareremo nelle pagine seguenti?
Il nostro obiettivo `e condurre un’analisi simile ad una ’Ancova’, come quando ci siamo
occupati della statura, del genere e del peso degli studenti. Vedremo che anche in
questo caso il dataset riguarda due gruppi di soggetti, ma sui quali abbiamo fatto delle
osservazioni ad intervalli di tempo consecutivi. Vedremo che il primo gruppo, hfpv, ha
una risposta che si pu`
o modellare con una retta ’crescente’:
y = 6.9 · x + 177.0
mentre il secondo gruppo di pazienti, control, ha una risposta ’orizzontale’ (e quindi
inefficace dal punto di vista della fisiologia respiratoria)
y = 0.1 · x + 157.6
Queste due rette di regressione saranno le rette che modellano il comportamento
delle due popolazioni (gruppi), di cui noi stiamo esaminando due campioni casualmente
giunti alla nostra osservazione. Ciascun soggetto in realt`a avr`a una propria retta di
regressione, e per gli appartenenti al primo gruppo sar`a del tipo:
y = (6.9 + b1 ) · x + (177.0 + b2 ) + mentre per quella del secondo gruppo sar`a del tipo:
y = (0.1 + b3 ) · x + (157.6 + b2 ) + essendo b1 , b2 , b3 ed delle perturbazioni casuali che potremo stimare in ogni singolo caso
e di cui conosceremo i parametri generali (ovvero le medie -uguali a zero- e le deviazioni
standard σ1 , σ2 , σ3 e σ.
0 2 4 6 8 1012
PaO2 FiO2
hfpv
400
300
200
100
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
control
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
0 2 4 6 8 1012
time (hour)
4
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
2
il dataset percussive
Il dataset percussive riporta i dati di uno studio condotto dal professor Umberto Lucangelo, in cui un gruppo di 35 pazienti caratterizzati da grave compromissione respiratoria
vengono trattati con un ventilatore ad alta frequenza (hfpv, high frequency percussive
ventilation) per 12 ore consecutive, e gli effetti di tale ventilazione si devono comparare
con un gruppo di 35 pazienti ventilati in maniera convenzionale. Si tratta quindi di
uno studio di tipo longitudinale caratterizzato da misure ripetute sull’unit`a statistica subject; ossia, le misure di ossigenazione (P aO2 /F iO2 ) sono raccolte - in maniera
bilanciata - con il passare del tempo.
www <- "http://www.dmi.units.it/~borelli/dataset/percussive.txt"
percussive <- read.table(www, header = TRUE)
attach(percussive)
time <- time - 12
treatment <- factor(treatment)
treatment1 <- treatment[1:70]
levels(treatment)[1] <- "hfpv"
levels(treatment)[2] <- "control"
str(percussive)
head(percussive)
La Figura della pagina precedente visualizza l’evoluzione temporale della P aO2 /F iO2
nei 35+35 pazienti, ed `e stata realizzata con questi comandi:
xyplot(pafi ~ time | treatment, type = "b",
groups = subject, xlab = "time (hour)",
ylab = expression(PaO[2] / FiO[2]))
Cerchiamo di indagare sul profilo temporale di ciascun paziente utilizzando una tecnica nota con il nome di Response feature analysis [4]. Per esempio, vediamo quale
andamento hanno il primo ed il trentacinquesimo dei pazienti del gruppo trattato con
hfpv:
modellolineare1 <- lm(pafi ~ time, subset = (subject==1))
coef(modellolineare1)
La Figura della pagina successiva mette in evidenza in colore arancione la retta di
regressione determinata su tutti i 35 pazienti del trattamento hfpv, mentre in colore
5
400
●
100
●
300
PaO2 FiO2
●
0
4
8
12
●
200
●
300
200
subject 35
100
PaO2 FiO2
400
subject 1
●
4
8
●
0
time (h)
●
12
time (h)
verde e in blu i modelli lineari (ossia le consuete rette di regressione) del primo e del
trentacinquesimo paziente. Il codice per generare la figura `e il seguente:
modellolineare35 <- lm(pafi ~ time, subset=(subject==35))
modellolinearetutti <- lm(pafi ~ time, subset=(subject==1:35))
par(mfrow=c(1, 2))
plot(NA, xlim=c(0, 12), ylim=c(100, 400), xlab="time(h)",
ylab=expression(PaO[2]/FiO[2]), main="subject1")
points(pafi ~ time, subset=(subject==1), pch=19, col="darkgreen")
abline(modellolineare1, col="darkgreen", lty=2)
abline(modellolinearetutti, col="orange", lty=3)
plot(NA, xlim=c(0, 12), ylim=c(100, 400), xlab="time(h)",
ylab=expression(PaO[2]/FiO[2]), main="subject35")
points(pafi ~ time, subset=(subject==35), pch=19, col="darkblue")
abline(modellolineare35, col="darkblue", lty=2)
abline(modellolinearetutti, col="orange", lty=3)
L’idea della Response feature analysis dunque `e quella di andare a considerare tutte
le 70 quote e le 70 pendenze delle rette di regressione della pafi rispetto al time di
ciascuno dei 70 subject, ed investigare se vi siano differenze nei due treatment.
pendenza <- numeric(70)
6
quota <- numeric(70)
for(i in 1:70) {
modellolineare <- lm(pafi ~ time, subset = (subject == i))
pendenza[i] <- coef(modellolineare)[2]
quota[i] <- coef(modellolineare)[1]
}
plot(pendenza, quota, xlab = "pendenza", ylab = "quota")
points(pendenza[36:70], quota[36:70], col = "blue", pch = 19)
points(pendenza[1:35], quota[1:35], col = "red", pch = 19)
Il grafico sottostante ci mostra due nuvole di punti, ed il fatto che la nube blu sia
confinata pi`
u a sinistra della rossa sta a significare che le pendenze dei profili temporali
del gruppo control sono sensibilmente minori di quelle dei ventilati hfpv.
150
100
quote
200
250
rosso hfpv, blu control
0
5
10
15
20
pendenze
Volendo, possiamo eseguire anche dei test formali:
t.test(pendenza ~ treatment1)
t.test(quota ~ treatment1)
Otteniamo nel primo caso, come ci aspettavamo, un p-value altamente significativo.
Nel secondo caso invece rimaniamo un po’ dubbiosi, visto che il p-value vale 0.0436.
7
2.1
il modello lineare sbagliato
Per continuare a farci un’idea iniziale consideriamo un modello Ancova, teneno ben presente che questo tipo di analisi ci fa commettere due gravi errori. Il primo, ci chiede di
fare finta che i nostri 35+35 pazienti non siano un campione casuale tratto da una popolazione, ma tutta la nostra popolazione. Il secondo errore sta ad esempio nell’illudersi
che il valore che registriamo alla 12 ora sia del tutto indipendente dai dati che avevamo
rilvato nelle tre occasioni precendenti, i.e. a 0, 4 ed 8 ore. Dunque, proviamo a vedere
cosa succede:
modellolineare <- lm(pafi ~ time*treatment)
summary(modellolineare)
(Intercept)
time
treatmentcontrol
time:treatmentcontrol
Estimate
Std.Error
t value
Pr(> | t |)
177.0394
6.9227
-19.3949
-6.8405
7.4645
0.9975
10.5563
1.4106
23.718
6.940
-1.837
-4.849
< 2e-16
2.79e-11
0.0672
2.07e-06
***
***
.
***
In pratica, i pazienti trattati con hfpv sarebbero descritti da un’unica retta di regressione di equazione y = 6.9 · (t − 12) + 177.0, mentre per i pazienti control il modello
lineare sarebbe y = (6.9−6.8)·(t−12)+(177.0−19.4) ≡ 0.1·(t−12)+157.6. Riguardando
la Figura di pagina 7 siamo ancor pi`
u convinti che la retta arancione non sia sufficiente a
modellare in maniera adeguata la retta verde e la retta blu (e tutte le rimanenti rette per
gli altri 33 pazienti ventilati in alta frequenza). E non dimentichiamoci che il modello
afferma di ammettere 276 gradi di libert`a nei residui (e noi abbiamo un campione di soli
70 pazienti).
2.2
il primo modello misto
Vediamo di confrontare il modellolineare Ancova ad effetti fissi della Tabella ?? con
un mixed model massimale. Massimale nel senso che in esso includiamo l’interazione ’*’
tra tempo e trattamento; ossia supponiamo che vi siano due pendenze diverse, in senso
statistico, tra i due gruppi. Inoltre, assumiamo che vi siano due perturbazioni casuali, b
e b0 , sulla quota e sull’intercetta, legate alle peculiarit`a del singolo subject:
y = (m + b) · x + (q + b0 ) + 8
Linear mixed model fit by REML
Formula: pafi ∼ time*treatment+(time — subject)
AIC
2769
Random effects:
Groups
subject
BIC
2798
logLik
-1376
Name
(Intercept)
time
Variance
1232.118
14.243
Residual
433.320
Number of obs: 280, groups: subject, 70
deviance
2766
REMLdev
2753
Std.Dev.
35.102
3.774
20.816
Cor
0.225
Fixed effects:
(Intercept)
time
treatmentcontrol
time:treatmentcontrol
Estimate
177.0394
6.9227
-19.3949
-6.8405
Std. Error
6.6234
0.7495
9.3669
1.0599
t value
26.729
9.237
-2.071
-6.454
library(lme4)
mixedpafi1 <- lmer(pafi ~ time*treatment+(time | subject))
summary(mixedpafi1)
Come vediamo, non c’`e alcuna differenza tra i fixed effect del mixed model e i coefficienti dell’Ancova. Al contrario, l’incertezza delle stime si `e ridotta, nel senso che gli
standard error del mixed model sono pi`
u contenuti, e conseguentemente i consuntivi t value sono pi`
u discosti dallo zero. Buon segno. Invece la cosa che ci lascia un po’ perplessi
riguarda i random effect. La prima cosa che preoccupa, dal punto di vista dell’analisi
numerica, `e che ci sono due ordini di grandezza che separano la varianza delle quote
(1232.118) e delle pendenze (14.243). Questo fatto potrebbe creare problemi di mal
condizionamento di matrici. La cosa per`o `e facilmente risolubile con il comando scale
della library MASS, come vedremo fra qualche pagina. Il secondo dubbio invece riguarda la scelta della struttura dei random effect: considerando il fatto che il coefficiente
di correlazione dei due random effects, 0.225, potrebbe essere un valore di correlazione
’piccolo’, ci chiediamo se non sia il caso di eliminarlo dalla struttura del nostro modello
e risparmiare un parametro ridondante.
9
2.3
il secondo modello misto
Per fare ci`
o, abbiamo a disposizione due sintassi tra loro equivalenti, time-1, oppure
time+0:
mixedpafi2 <- lmer( pafi ~ time * treatment + ( 1 | subject )
+ ( time + 0 | subject ) )
summary(mixedpafi2)
Random effects:
Groups
subject
subject
Residual
Name
Variance
Std.Dev.
(Intercept)
time
1325.603
15.479
422.451
36.4088
3.9343
20.5536
Estimate
Std. Error
t value
177.0394
6.9227
-19.3949
-6.8405
6.8061
0.7701
9.6253
1.0891
26.012
8.990
-2.015
-6.281
Fixed effects:
(Intercept)
time
treatmentcontrol
time:treatmentcontrol
Si potrebbe verificare se i due modelli siano statisticamente equivalenti. Si tratta di
un argomento che non possiamo qui affrontare per mancanza di tempo e vi rimandiamo
a [1].
2.4
il terzo modello misto
Cosa vogliamo vedere in conclusione? Vogliamo vedere se convenga invece considerare
un modello in cui gli effetti casuali per la pendenza del gruppo hfpv siano diversi da quelli
del gruppo di controllo, introducendo quindi un ulteriore parametro rispetto al modello
due. A fronte di questo ’aumento di costo’ del modello ci aspettiamo un miglioramento
in termini di riduzione della eterogeneit`a. Un modo per condurre questa analisi `e quello
di creare due variabili indicatrici del gruppo:
Hind = as.numeric(treatment == "hfpv")
Cind = as.numeric(treatment == "control")
ed utilizzarle per separare le perturbazioni casuali delle pendenze:
10
mixedpafi3 <- lmer(pafi ~ time*treatment + (1 | subject)
+ ( 0 + time + Cind | subject) + ( 0 + time + Hind | subject) )
summary(mixedpafi3)
11
Random effects:
Groups
subject
subject
subject
Residual
Name
Variance
Std.Dev.
(Intercept)
time Cind
time Hind
197.8053
6.5152
7.7281
433.3194
14.0643
2.5525
2.7800
20.8163
Estimate
Std. Error
t value
177.0394
6.9227
-19.3949
-6.8405
8.3477
0.7495
9.5544
1.0599
21.208
9.237
-2.030
-6.454
Fixed effects:
(Intercept)
time
treatmentcontrol
time:treatmentcontrol
Per rendersi conto ’alla buona’ del fatto che il terzo modello sia migliore del secondo
`e sufficiente confrontare tra loro i due criteri di informazione, AIC o BIC, anche se in
letteratura si sa che questo approccio non `e adeguato ed `e preferibile utilizzare delle
tecniche di bootstrapping [4, 5]. Ad esempio, mentre nei primi due modelli il criterio di
Akaike si attestava attorno a 2769 e 2768, nel terzo modello si `e ridotto a 2755, come si
desiderava (’small is beautiful ’).
2.5
diagnostica del terzo modello misto
Concludiamo l’analisi con la diagnostica del modello, ricordando che i linear mixed
models si basano sul fatto che i residui siano gaussiani. Eseguendo il codice sottostante
si noter`a che i residui nei due trattamenti sono distribuiti secondo una variabile aleatoria
normale e che non balzano agli occhi evidenti segni di eteroschedasticit`a:
library(lattice)
qqmath(~resid(mixedpafi3) | treatment)
xyplot ( resid(mixedpafi3) ~ fitted(mixedpafi3) | treatment)
12
3
Interpretazione dei risultati
Innanizitutto, dal punto di vista terapeutico, i trattamenti ad alta frequenza vs. convenzionale hanno comportamenti significativamente diversi, in termini di pendenza, ossia di
variazione nel tempo dell’indice P aO2 /F iO2 :
Fixed effects:
...
time:treatmentcontrol
Estimate
Std. Error
t value
...
-6.8405
...
1.0599
...
-6.454
Nel gruppo dei ventilati ad alta frequenza, la risposta temporale di ciascun soggetto
`e caratterizzata da una retta di regressione del tipo:
y = (6.9 + b1 ) · x + (177.0 + b2 ) + dove b1 e b2 sono due perturbazioni normali di media nulla e deviazione standard σ1 =
2.55 e σ2 = 14.6, mentre per il secondo gruppo:
y = (0.1 + b3 ) · x + (157.6 + b2 ) + essendo b3 caratterizzata da σ3 = 2.78 e b2 come nel gruppo precedente. La variabilit`a
dei residui `e caratterizzata da σ = 20.82.
Volendo conoscere, paziente per paziente, la pendenza e la quota del proprio modello
lineare, utilizziamo il comando:
ranef(mixedpafi3)
1
...
35
...
70
(Intercept)
time
Cind
time
Hind
3.48
...
-5.78
...
-3.19
2.38
...
2.29
...
0.95
-13.35
...
-12.85
...
-6.12
3.69
...
1.27
...
0.43
52.13
-39.31
2.72
e ritornando alla figura di pagina 6, deduciamo che la retta blu del paziente numero 35
ha equazione
13
y = (6.9 + 1.27) · x + (177.0 − 5.78)
in accordo col fatto che la pendenza della retta blu `e maggiore della retta arancione, ma
la sua quota `e minore.
Riferimenti bibliografici
[1] Borelli M. (2011). Misure ripetute e dati in cluster: metodi di analisi statistica con R. Quaderno Didattico 56 del Dipartimento di Matematica e Geoscienze,
http://www.dmi.units.it/?q=node/635/d/2011
[2] Crawley M. J. (2005). Statistics: An Introduction using R, Wiley.
[3] Faraway J. (2004). Linear Models with R, Chapman Hall/CRC.
[4] Faraway J. (2005). Extending the Linear Model with R: Generalized Linear, Mixed
Effects and Nonparametric Regression Models, Chapman Hall/CRC.
[5] Faraway J. (2010). Changes to the Mixed Effects Model chapters in ELM,
http://www.maths.bath.ac.uk/∼jjf23/ELM/mixchange.pdf.
[6] Pinheiro J.C., Bates D.M., DebRoy S., Sarkar D., the R Core team (2009). nlme:
Linear and Nonlinear Mixed Effects Models. R package version 3.1-96.
[7] Pinheiro J.C., Bates D.M. (2000). Mixed-Effects Models in S and S-PLUS, Springer.
[8] R Development Core Team (2009). R: A language and environment for statistical
computing. R Foundation for Statistical Computing, Vienna, Austria.
[9] West B.T., Welch K.B., Galecki A.T. (2007). Linear Mixed Model, Chapman
Hall/CRC.
14