Documente Academic
Documente Profesional
Documente Cultură
Marı́a Durbán
1. Introducción 3
1. Modelos lineales generalizados . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1. La familia exponencial . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2. Estimación de Modelos Lineales Generalizados . . . . . . . . . . . . 10
2. Métodos de suavizado 13
1. Regresión polinomial local: Lowess/Loess . . . . . . . . . . . . . . . . . . . 15
2. Suavizado con kernels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3. Splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1. Número y posición de los nodos . . . . . . . . . . . . . . . . . . . . . 18
3.2. Splines de suavizado (smoothing splines) . . . . . . . . . . . . . . . . 19
4. Software 42
5. Aplicaciones 49
1. Modelos Aditivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
1.1. Ejemplo: Calidad del aire . . . . . . . . . . . . . . . . . . . . . . . . 49
2. Modelos Semiparamétricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3. P-splines para datos longitudinales . . . . . . . . . . . . . . . . . . . . . . . 64
3.1. Modelo con ordenada en el origen aleatoria . . . . . . . . . . . . . . . 64
3.2. Modelo aditivo mixto . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.3. Modelo con diferencias individuales lineales . . . . . . . . . . . . . . . 67
1
3.4. Interacción de curva por factor . . . . . . . . . . . . . . . . . . . . . 69
3.5. Curvas especı́ficas para cada individuo . . . . . . . . . . . . . . . . . 71
4. Datos correlados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5. Datos multidimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.1. Ejemplo 1: Tendencias espaciales en experimentos de campo . . . . . 77
5.2. Ejemplo 2: Análisis de datos de mortalidad . . . . . . . . . . . . . . . 79
5.3. Ejercicio: Infección post-operatoria . . . . . . . . . . . . . . . . . . . 82
5.4. Ejercicio: Kiphosis data . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.5. Ejemplo 3: Aplicaciones en disease mapping . . . . . . . . . . . . . . 85
2
Capı́tulo 1
Introducción
y = f (Xβ) +
Pero en algunas situaciones, la estructura de los datos es tan complicada que es muy difı́cil
encontrar una función que estime la relación existente de forma correcta (ver por ejemplo la
siguiente figura):
Una posible solución es: regressión no-paramétrica. El modelo general de regresión
no-paramétrica ise escribe de forma similar al anterior, pero f no tiene una forma explı́cita:
y = f (X) + = f (x1 , . . . xp ) +
La mayorı́a de los métodos de regresión no-paramétrica asumen que f (.) es una función
continua y suave, y que i ∼ N ID(0, σ 2 ) (aunque esto último puede relajarse de forma
sencilla).
Un caso importante de el modelo general, es la regresión no-paramétrica simple, donde sólo
hay una variable predictora
y = f (x) +
A la regresión no-paramétrica simple también se le llama Nonparametric simple regression
is often called scatterplot smoothing, porque una aplicación importante es dibujar una curva
an un diagrama de y sobre x.
3
−1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0.5
−0.5
−1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Solar.R: Radiación solar (en Langleys) entre las 08:00 y las 12:00 en Central Park
position k. Velocidad
wind: It follows, for del
media large λ, (en
viento α̂ will bepor
millas a smooth series,
hora) entre except
las 07:00 y lasfor a kink
10:00 en el at
aeropuerto de la Guardia
position k. If both vk and vk−1 are zero, α̂ will be smooth, except for a jump at
Temp: Temperatura máxima (en grados Fahrenheit) en el aeropuerto de la Guardia
αk . Depending on the number of knots, the kink or jump will show up in a more
Empezamos por ajustar el siguiente modelo:
or less smoothed way in the fitted curve. Of course, combinations of multiple kinks
= β0 + β1 × T emp + β2 × W ind + β3 × Solar.R + ε
and jumps can Ozone
be introduced this way.
In some application a gradually changing smoothness may be sufficient. This can
aire.lm=lm(Ozone~Temp+Wind+Solar.R,data=airquality)
Coefficients:
be accomplished by taking
Estimate Std. = eγk .t Both
vk Error valueλPr(>|t|)
and γ are optimized by cross-validation
or(Intercept)
Temp
-64.34208
AIC. Of course,
1.65209
23.05472 -2.791 0.00623
this applies equally6.516
0.25353
well 2.42e-09
to TPF. An example of smoothing with
anWind
exponential-3.33359
change of the weights
0.65441 in the1.52e-06
-5.094 penalty is shown in Figure 13, using
Solar.R 0.05982 0.02319 2.580 0.01124
simulated
--- data: a sine function with changing frequency and amplitude. If we use
uniform
Residualweights
standardanderror:
optimize
21.18λ onwith
107 leave-one-out cross-validation (which gives
degrees of freedom
(42 observations deleted due to missingness)
? = 0.1), we get a result that gives rather strong fluctuations of the fitted
optimal
Multipleλ R-squared: 0.6059, Adjusted R-squared: 0.5948
curve in the low-frequency part and misses
F-statistic: 54.83 on 3 and 107 DF, the data
p-value: in the high-frequency part. If we
< 2.2e-16
introduce weights eγk and optimize both4 γ and λ, we get a more reasonable result.
A grid search gave (approximate) optimal values γ ? = 0.2 and λ? = 3 × 10−4 . This
8
En principio todas las variables son significativas, aunque el R2 es bajo. Hacemos un gráfico
de los efectos lineales parciales: Los resultados sin, aparentemente coherentes: a más tem-
40
40
40
20
20
20
Partial for Solar.R
Partial for Temp
0
−20
−20
−20
−40
−40
−40
60 70 80 90 5 10 15 20 0 100 250
peratura y más radiación solar más ozono, y al contrario cuando aumenta la velocidad del
viento. Pero algo no funciona ya que el R2 = 0,59. Si hacemos gráficos de residuos:
par(mfrow=c(1,2))
plot(aire.lm,which=1:2)
117 ● 117 ●
4
Standardized residuals
62 ●
● 30 ● 62
50
● 30
●
Residuals
● ●
● ●
2
● ● ●●
● ●● ● ●●
●
● ● ●●
● ● ●●
●
● ● ● ●● ●●
1
●● ●
● ●
●● ● ●● ● ●●
●
● ● ● ●● ●
●●
●
● ● ● ● ●
●●
●
●
● ●● ● ● ● ● ● ● ● ●
●●
0
●●●● ● ● ●● ● ●●
●
●●
● ●●
●
●
● ● ● ●
●
●●
●
0
●
●
●●
●●●● ●
● ● ●● ● ● ●
●
●
●
●
●
●●
●
●●
●
●
●
● ●
●●● ● ●● ● ● ●● ● ●
●
●
● ● ● ●
●●
●
●●
●
●
●
●● ● ● ● ● ●
●●
●
●●
●
●● ●●
●●
●
●●
● ● ●●
●
●●
●●
●
−1
● ●●●
●●
●●
●●
● ●
●●
● ●●
−50
●
−2
−20 0 20 40 60 80 100 −2 −1 0 1 2
Podemos ver de otra forma si los datos siguen una distribución Normal:
5
hist(airquality$Ozone)
hist(log(airquality$Ozone))
Histogram of airquality$Ozone Histogram of log(airquality$Ozone)
20
30
15
Frequency
Frequency
20
10
10
5
0
0
0 50 100 150 0 1 2 3 4 5
airquality$Ozone log(airquality$Ozone)
Podemos repetir el modelo con la variable transformada y analizar de nuevo los residuos:
aire2.lm=lm(log(Ozone)~Temp+Wind+Solar.R,data=airquality)
summary(aire2.lm)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.2621323 0.5535669 -0.474 0.636798
Temp 0.0491711 0.0060875 8.077 1.07e-12
Wind -0.0615625 0.0157130 -3.918 0.000158
Solar.R 0.0025152 0.0005567 4.518 1.62e-05
---
plot(aire2.lm,which=1:2)
Aún hay algo que no funciona.... ¿Qué pasa si hacemos un gráfico entre el Ozono y el viento?.
6
Residuals vs Fitted Normal Q−Q
3
● 24 24 ●
117 ● 117 ●
2
●● ● ● ●●●●
● ● ●●
● ●● ● ●
●
● ●●
● ● ●
Standardized residuals
●● ● ● ●
●●
●
●
●
1
● ● ● ●● ●
● ●
● ● ●
●●
●
● ● ● ● ● ●●
●
●
● ●● ● ● ● ●
●
●●
●
● ● ● ●● ● ●
●
●●
●
●
●● ●●● ●●
● ●
●●
●
●●
●●●● ● ●
●
0
●●
●
●
Residuals
● ● ●
● ● ● ●
●●
●
●
0
● ● ● ● ● ●
●
●●
● ●
●●
● ● ● ● ●● ●● ● ● ● ●
●
●
●
●
●●
●
●
●●
●● ● ● ● ● ●
●
●●
● ● ●
●
●●
●
●
●● ● ● ● ● ●
●●
●
● ●●
●
●●
●●
−1
● ●●
●●
● ●
● ● ● ● ●●
● ● ●
●●●●
●●
−1
● ●
−2
●●
−3
−2
● 21
−4
● 21
bastante común encontrarse en siatuaciones en las que la variable resuesta no cumple las
hipótesis estándar del modelo lineal (datos Normales, varianza constante, etc.), por ejemplo:
datos de conteo, datos dicotómicos, datos truncados, etc. Los GLMs se basan en la teorı́a
de Nelder and Wedderburn (1972) y McCullagh and Nelder (1989), desde entonces, con los
avances del software estadı́stico, estos modelos se han convertido en una herramienta básica
para muchos investigadores.
Hay dos temas fundamentales en la noción de los modelos lineales generalizados: la distri-
bución de la variable respuesta, y cómo el modelo establece la relación entre la media de la
variable respuesta y las variables explicativas. variables.
x
Concentración n y
(g/100cc) Número de insectos Número de muertos Porcentaje de muertos
0.1 47 8 17.0
0.15 53 14 26.4
0.20 55 24 43.6
0.30 52 32 61.5
0.50 46 38 82.6
0.70 54 50 92.6
0.95 52 50 96.2
7
distribución Binomial
Claramente, la varianza y la media están relacionadas entre sı́, y también con las variables
predictoras. Usando regresión lineal ordinaria para predecir el procentaje de moscas que
mueren, estarı́amos asumiendo que los datos vienen de una distribución Normal, lo que es
falso, y además, con este tipo de datos tenemos la siguiente restricción: 0 ≤ pi ≤ 1, la cual
no es tenida en cuenta en el modelo de regresión. Ajustando el modelo pi = β0 + β1 xi + εi
obtenemos
(lm(perc~Concentration))$fitted
1 2 3 4 5 6
0.3066231 0.3532890 0.3999550 0.4932869 0.6799507 0.8666145
7
1.0999442
El valor ajustado del último punto es mayor que 1!!!. Además, como se ve en la Figura 6, el
modelo es claramente no-lineal
●
●
●
0.8
●
0.6
perc
●
0.4
●
0.2
y(= π) = Xβ + ε E[y|x] = Xβ
8
Dado que la probabilidad sólo toma valores en el intervalo (0, 1). Podemos buscar una nueva
forma de representar E[y—x], de modo que la probabilidad esté en (0, 1). Una forma de
conseguirlo es utilizar la función logı́stica:
eXβ 1
π= =
1+e Xβ 1 + e−Xβ
y
π
Xβ = log
1−π
Es decir, Xβ = g(E[y|x]) 6= E[y|x]. La idea es relacionar una transformación de la media de
los datos, µ = E[y|x] con las variables explicatibas X.
yθ − b(θ)
f (y; θ, φ) = exp + c(y, φ) (1.1)
a(φ)
donde, en cada caso, a(.), b(.) y c(.) serán funciones especı́ficas. El parámetro θ es lo que se
llama parámetro canónico de localización y φ es un parámetro de dispersión. La distribucion
Binomial, Poisson y Normal (entre otras) son miembros de la familia exponencial.
y = Xβ + ε ε ∼ N (0, σ 2 I) E(y) = µ = Xβ
donde Xβ es una combinación lineal de las variables predictoras llamada predictor lineal
(el cual se representa como η), en este caso la media µ está directamente relacionada con el
predictor lineal, ya que en este caso µ = η. Usando este modelo sencillo, podemos ver que
hay dos componentes en el modelo: la función de probabilidad de la variable respuesta y la
estructura lineal del modelo. En general, un modelo lineal generalizado tendra los siguientes
componentes:
3. La función link : es una función monótona, derivable que establece la relación entre
la media y el predictor lineal
9
En el caso del modelo de regresión ordinaria, µ = η, por lo tanto la función link es la
identidad. Hay muchas opciones par la función link. La función link canonica es una
función que transforma la media en el parámetro canónico θ
Distribución Link
Normal η = µ (identidad)
P
Binomial η = ln 1−P (logistı́stica)
Poisson η = ln(µ) (logarı́tmica)
1
Exponential η=µ (recı́proca)
1
Gamma η = µ (recı́proca)
• La respuesta es discreta (0 1 2 )
La respuesta es discreta (0,1,2,…)
• Similares a Poisson, presentado
Binomial Negativa • Presencia de sobredispersión:
sobredispersión.
Varianza>Media
• Frecuencia de especies escasas, raras o difíciles
ZIP • La respuesta es discreta (0,1,2,…)
La respuesta es discreta (0 1 2 ) de muestrear
de muestrear
(Zero‐Inflated Poisson) • Exceso de ceros. • Abundancia de especies en estudios
multiespecíficos
• La respuesta es categórica
(multinomial) • índices de abundancia
índices de abundancia “cualitativos”
cualitativos
Multinomial
• Presenta K≥2 niveles de respuesta 0=bajo, 1=medio, 2=alto, 3=muy alto.
(0,..,K)
10
1.2. Estimación de Modelos Lineales Generalizados
En el caso de la familia exponencial, dado un vector de observaciones y = (yi , y2 , . . . , yn )0 .
El logaritmo de la verosimilitud es
n
X
l(θ|y) = ((yi θi − b(θi )/a(φ) + c(yi , φ)) (1.3)
i=1
Cuando usamos el link canónico: θ = η = Xβ, de modo que podemos estimar los
parámetros de interés β: Por lo tanto, la función score:
∂l ∂l ∂θi
=
∂β ∂θi ∂β
Es posible probar que:
n
X (yi − µi )
∂l
= 0 (µ )V
xi
∂β i=1
g i i
Necesitamos igualar esa ecuación a cero, pero no existe una solución exacta, y utlizamos
una versión de algoritmo de Newton-Rapson, llamado Fisher Scoring Algorithm. Es un al-
goritmo iterativo cuya solución es:
β new = (X 0 W X)−1 X 0 W z
donde z = Xβ old + (y − µold )g 0 (µold ) (llamado working vector ), y W es una matriz diagonal
cuyos elementos wii = 1/g 0 (µi ).
gender, sexo
Para este ejemplo vamos a utilizar solo el nivel de glucosa como variable predictora
p
log = β0 + β1 gluc
1−p
11
POI=read.table("POI.txt", header=TRUE)
poi.glm=glm(poi~gluc, family=binomial,data=POI)
summary(poi.glm)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -2.514401 0.171859 -14.631 < 2e-16 ***
gluc 0.009592 0.001380 6.952 3.6e-12 ***
---
Null deviance: 2335.6 on 2350 degrees of freedom
Residual deviance: 2289.5 on 2349 degrees of freedom
AIC: 2293.5
2.0
1.5
Partial for gluc
1.0
0.5
0.0
−0.5
gluc
anova(poi.glm,test="Chi")
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 2350 2335.6
gluc 1 46.13 2349 2289.5 1.107e-11 ***
12
Capı́tulo 2
Métodos de suavizado
Aunque los modelos GLM son bastante flexibles ya que pueden ajustarse para gran
variedad de distribuciones, estos modelos asumen que la influencia de las variables continuas
en la variable respuesta es lineal, es decir:
η = β0 + β1 x
η = β0 + f (x)
= β0 + β1 x + β2 x2 + . . . + βp xp
• bc (directivos)
• wc (obreros)
• prof (profesionales liberales)
13
Ejemplo : Prestigio
Podemos estar interesados en ajustar un polinomio a la relación el salario medio y el
pretigio, en el archivo poli.R
library(car)
plot(Prestige$income, Prestige$prestige,xlab="sueldo",ylab="Prestigio")
prestigio1.fit<-lm(prestige~income,data=Prestige)
Prestige2 <- data.frame(income =seq(min(Prestige$income),max(Prestige$income),1))
lines(Prestige2$income,predict(prestigio1.fit,Prestige2),lty=1,col="black",lwd=2)
prestigio2.fit<-lm(prestige~poly(income,2),data=Prestige)
lines(Prestige2$income,predict(prestigio2.fit,Prestige2),lty=2,col="blue",lwd=2)
prestigio6.fit<-lm(prestige~poly(income,3),data=Prestige)
lines(Prestige2$income,predict(prestigio3.fit,Prestige2),lty=3, col="red",lwd=2)
legend(17500,40,c("p=1", "p=2","p=3"),col=c("black","blue","red"), lty=c(1,2,3),
lwd=2)
●
●
●
80
● ●
●
●● ●
● ●
●● ● ● ●
●
● ●●
●
●
● ●
60
● ●
●
● ● ●
Prestigio
●
● ●●●
● ● ● ●●
● ●●
●
● ● ●
●
● ●● ●
●● ●●● ●
40
●●
●● ●●●●
●
●●●●●
●●
● ●● ● p=1
● ●
●● ●
●
●
p=2
●
● ● ● p=3
● ●●●
●●
●
20
● ●●
●
●
sueldo
Una opción más flexible es el uso de un suavizador o smoother es una herramienta que
representa la tendencia de la variable respuesta y como función de uno o más predictores
lineales x. Ya que es una estimación de la tendencia, tendrá menos variabilidad que y, por eso
se le llama suavizador (en este sentido, incluso la regresión lineal es una suavizador llevado
al extremo).
Hay diversas formas de realizar la regresión no paramétrica, pero todas ellas tienen en común
que se basan en los propios datos para especificar la forma que tiene el modelo: la curva en
un punto dado sólo depende de las observaciones en ese punto y de las observaciones vecinas.
Estás son algunas de las técnicas de regresión no-paramétrica existentes
14
1. Regresión polinomial local con pesos, lowess.
2. Kernels
3. Splines
4. Splines con penalizaciones (Psplines)
● ●●
●
●
●
●●
●●
● ● ● ●
20 40 60 80
●
●
● ●
Tricube Weight
0.8
●●● ● ●
●● ● ●
● ●●● ● ● ● ●
● ● ● ●
●● ●
Prestige
●
● ●
● ● ●● ●
● ● ●
●
●● ●
●
●
●●
●●
●
● ●
0.4
●● ●
● ●
●● ●
● ●●● ●
● ●● ●● ●
●● ●
●
●
●●
●● ●
●
●●●● ● ●
● ● ●
●
●● ●
●
● ●● ●
●
●
●● ●● ●
●
●●● ● ●
0.0
● ●
●
● ●
● ●
(c) (d)
●
● ●
20 40 60 80
20 40 60 80
● ● ●
●●
● ● ● ●●● ●
●
●● ● ●● ● ● ●
● ● ● ●●
● ●
Prestige
Prestige
●● ● ●● ●
●● ● ●● ●● ● ●●
● ●
●●
●
●●
●● ●●
● ●
● ●●
●
●
●●●
● ●● ●● ●●
●
●
●● ●● ●●● ●
●
●
● ●●
●●● ●●●
●
●
● ●
●●●● ●
●
●●
●
●●● ●
●● ●●
●●
●●
●
● ●
●
●
●● ●
●
● ● ●●
●
●
●● ●●
●●●
●
●
2. Asignar pesos a los datos: Se utiliza una función kernel para dar más peso a los puntos
más cercanos a la observación de interés x0 . En la práctica se utiliza normalmente la
función de pesos tricúbica:
(1 − |z|3 )3 for |z| < 1
W (z) =
0 for |z| ≥ 1
15
donde zi = (xi − x0 )/h, y h es la mitad de la longitud de la ventana. Observaciones
que están más lejos de la distancia h de x0 reciben peso 0. Lo normal es elegir h de
modo que cada regresión local incluya a una proporción fija de puntos, s, y a esto se le
llama el span del suavizador. La Figura 2(b) muestra los pesos de la función tricúbica
para observaciones en una vecidad.
3. Mı́nimos cuadrados poderados locales: Ahora, ajustamos una regresión polinomial usan-
do mı́nimos cuadrados ponderados (con pesos) sobre x0 , pero sólo utilizando las obser-
vaciones más cercanas para minimizar la suma de residuos al cuadrados ponderados.
Normalmente se utiliza regresión polinómica de grado 1 (lineal) ó 2 (cuadrática), pero
se puede utilizar polinomios de cualquier orden.
4. Curva no-paramétrica:Los pasos 1-3 se repiten para cada observación de los datos. Por
lo que estamos haciendo un regresión local para cada valor de x, y los valores ajustados
de cada una de ellas se dibuja y se une (ver Figura 2 (d)).
library(car)
attach(Prestige)
plot(income, prestige, xlab="Average Income", ylab="Prestige",
main="(d)")
lines(lowess(income, prestige, f=0.5, iter=0), lwd=2)
Las hipótesis bajo el modelo lowess son mucho menos restrictivas que las del modelo de
regresión lineal, no hay ninguna hipótesis restrictiva sobre model µ, sin embargo, asumimos
que alrededor de cada punto x0 , µ debe ser, aproximadamente, una función local. Los errores
i se suponen independientes y con media 0. Finalmente, un cierto número de decisiones han
de ser tomadas: el span, el grado del polinomio, el tipo de función de ponderación; estas
opciones afectarán el equilibrio entre el sesgo y la varianza de la curva.
Ventana-span
Recordamos que el span s es el porcentaje de observaciones utilizadas dentro del rango
de x. El valor de s tiene un efecto importante en la curva. Un span demasiado pequeño
(esto significa que muy pocas observaciones caen dentro de la ventana) da lugar a una curva
con mucho ruido, y por lo tanto con mucha varianza. Si el span es muy grande la curva
16
estará sobre-suavizada, por lo que puede que no ajuste bien los datos y haya una pérdida de
información y por lo tanto, el sesgo será alto.
1. Constante: h es constante, por lo tanto una parte de rango de x es utilizado para elegir
las observaciones para la regresión local. Este es un método apropiado si la distribución
de x es aproximadamente uniforme y/o el tamaño muestral el grande. Sin embargo, si
x tiene una distribución no-uniforme, este método puede fallar, ya que habrá casos en
los que puede no haber vecinos o muy pocos. Esto es particularmente relevante en la
frontera del rango de x.
●
●
●
80
● ●
●
●● ●
● ●
●● ● ● ●
●
● ●●
●
●
● ●
60
● ●
● ● ●
● ●
Prestige
● ●●
●
● ● ● ●●
● ●●
●
● ● ●
●
● ●● ●
● ● ●● ● ●
●● s=0.1
40
●●● ● ●
●●●●●●
s=0.37
●●● ●● ●●
● ● s=0.63
●● s=0.9
● ●
●●
● ● ●
● ● ●●
●●
●
20
● ●●
●
●
Average Income
17
interés x0 viene dado por:
x0 − xj
c0
S0j = d
λ λ
donde d(t) es una función decreciente en |t|, λ es el ancho de ventana , y c0 es una constante
elegida de modo que la suma de los pesos sea 1. Tı́picamente d(.) es la función de densidad
de una Normal para el llamado kernel Gaussiano.
Estos suavizadores, en general, se comportan peor que el lowess en los puntos de frontera
3. Splines
Los splines son funciones polinómicas a trozos sobre las que se imponen restricciones en
los puntos de unión llamados nodos, estos puntos dividen el rango de x en regiones. Los
splines dependen de tres elementos:
1. Grado del polinomio
2. Número de nodos
3. Localización de los nodos
Aunque hay muchas combinaciones posibles, una elección popular consiste en polinomios a
trozos de grado tres, continuos y con primera y segunda derivada continua en los nodos (esto
fuerza a los polinomios a unirse de forma suave en estos puntos, ver Figura 3).
Splines cúbicos naturales Restringen el spline de modo que es lineal más allá de los
nodos que están en la frontera, por lo tanto, necesita k + 2 parámetros, esto es debido a
que ahora no se impone que la derivada se a continua en c1 y ck , por lo que se eliminan 2
parámetros al final de los datos
y = β0 + β1 x + β2 (x − c1 )3+ + β3 (x − c1 )3+ ,
Una elección tı́pica es 3 ≤ k ≤ 7. En los casos en los que el tamaño muestral es grande
(n ≥ 100) y la variable respuesta es continua, k = 5 es un buen compromiso entre flexibi-
lidad y precisión. Para tamaños muestrales pequeños (n ≤ 30), k = 3 es una buena opción
para empezar. El Akaike Information Criteria (AIC) puede ser utilizado para elegir k.
18
Figura 3: Una series de polinomios a trozos de orden 3, con órdenes de continuidad creciente
library(splines)
natspl=lm(prestige~ns(income,df=5))
plot(income, prestige, xlab="Average Income", ylab="Prestige")
lines(income[ord],natspl$fitted[ord])
Los splines de suavizado, son splines cúbicos naturales en los que hay tantos nodos como
observaciones única de x. Esto podrı́a parecer un modelo sobreparametrizado, sin embargo,
el término de penalización asegura que los coeficientes se reduzcan hacia la linealidad, limi-
tando el número de grados de libertad utilizados.
El spline de suavizado es un suavizador lineal, en el sentido de que para cada valor único xi ,
19
●
●
●
80
● ●
●
●● ●
● ●
●● ● ● ●
●
● ●●
●
●
60 ● ●
● ●
● ● ●
● ●
Prestige
● ●●
●
● ● ● ●●
● ●●
●
● ● ●
●
● ●
● ●
● ● ●● ● ●
●●
40
●● ●● ● ●
●●
●●● ●● ●●●●●
● ●
●●
● ●
●●
● ● ●
● ● ●●
●●
●
20
● ●●
●
●
Average Income
La solución es,
θ̂ = (h0 h + λΩ)−1 h0 y
Es obvio el paralelismo con la regresión ridge, recordad que en este tipo de regresión, cuanto
mayor era λ, más pequeños se hacı́an los coeficientes; lo mismo ocurre en el caso de los splines
de suavizado. El modelo ajustado viene dado por:
h
X
fˆ(x) = hj (x)θ̂j
j=1
Pero este tipo de suavizadores tiene un problema: ¿Cómo calculamos el valor apropiado
del parámetro de suavizado λ para un conjuto de datos determinado?
20
1. Validación cruzada
La validación cruzada deja cada vez un punto (xi , yi ) fuera, y estima el valor de nuevo
en xi basado en los restantes n1 puntos, y se construye la suma de cuadrados:
n
X
CV (λ) = n−1 (yi − fˆλ−i (xi ))2
i=1
donde fˆλ−i (xi ) indica el ajuste en xi calculado dejando la observación i fuera. Utiliza-
mos CV para la elección del parámetro de suavizado de la siguiente forma: calculamos
CV (λ) para ciertos valores de λ y selecionamos aquel que minimiza CV (λ).
spline1=smooth.spline(income,prestige,cv=TRUE)
> spline1$cv.crit
[1] 127.4208
> spline1$lambda
[1] 0.01474169
spline1$fit
lines(spline1$x,spline1$y,col=2)
spline2=smooth.spline(income,prestige)
lines(spline2$x,spline2$y,col=4)
21
●
●
●
80
● ●
●
●● ●
● ●
●● ● ● ●
●
● ●●
●
●
● ●
60
● ●
● ● ●
● ●
Prestige
● ●●
●
● ● ● ●●
● ●●
●
● ● ●
●
● ●● ●
● ● ●● ● ●
40
●●
●●● ● ●
●●●●●●
●● ●●
● ●●
● ●
●●
● ●
●●
● ● ●
● ● ●●
●●
●
20
● ●●
●
●
Average Income
Figura 5: Spline cúbico natural con 4 nodos en los cuantiles de income (negro) y splines de
suavizado con parámetro de suavizado elegido mediante validación cruzada (rojo).
●
●
●
80
● ●
●
●● ●
● ●
●● ● ● ●
●
● ●●
●
●
● ●
60
● ●
● ● ●
● ●
Prestige
● ●●
●
● ● ● ●●
● ●●
●
● ● ●
●
● ●
● ●
● ● ●● ● ●
40
●●
●● ●● ● ●●
●● ●● ●●●●●●
●
● ●
●
●● ● ●
●
● ● ●
● ● ●●
●●
●
20
● ●●
●
●
Average Income
Figura 6: Spline cúbico natural con 4 nodos en los cuantiles de income (negro) y splines de
suavizado con paráemtro de suavizado elegido mediante validación cruzada (azul).
22
Capı́tulo 3
En el capı́tulo anterior vimos que hay dos grandes enfoques en el tema de modelos de
suavizado con splines: a) splines de suavizado (smoothing splines) y b) splines de regresión
(regression splines). Los splines de suavizado (ver por ejemplo Green and Silverman (1994))
utilizan tantos parámetros como observaciones, lo que hace que su implementación no sea
eficiente cuando el número de datos es muy elevado. Los splines de regresión pueden ser
ajustados mediante mı́nimos cuadrados una vez que se han seleccionado el número de nodos,
pero la selección de los nodos se hace mediante algoritmos bastante complicados.
Los splines con penalizaciones combinan lo mejor de ambos enfoques: utilizan menos paráme-
tros que los splines de suavizado, pero la selección de los nodos no es tan determinante como
en los splines de regresión. Hay tres razones fundamentales para el uso de este tipo de splines:
1. Son splines de rango bajo, es decir, que el tamaño de la base utilizada es mucho menor
que la dimensión de los datos, al contrario de lo que ocurre en el caso de los splines de
suavizado donde hay tantos nodos como datos, lo que hace que sea necesario trabajar
con matrices de alta dimensión. El número de nodos, en el caso de los P-splines, no
supera los 40, lo que hace que sean computacionalmente eficientes, sobre todo cuando
se trabaja con gran cantidad de datos.
1. Bases y Penalizaciones
Supongamos que tenemos n pares de datos (xi , yi ) y estamos interesados en ajustar el
modelo
yi = f (xi ) + i i ∼ N (0, σ 2 )
donde f (.) es una función suave de los datos. Por ejemplo, simulamos los siguientes datos:
23
n = 200
x = seq(0,1,length=n)
y = sin(3*pi*x) + 0.5*rnorm(n)
plot(x,y,pch=1,bty="l",col=12)
lines(x,sin(3*pi*x),col=6)
2
●
●
●
●● ● ●
● ●
●●●● ●● ● ● ● ●
● ●
● ● ● ●
● ● ● ●
● ●● ●
●
1
● ●● ● ● ● ●
● ● ●
●● ●● ● ● ● ●
● ●● ● ● ●●
● ● ● ●
● ●
● ● ● ●● ●
●● ● ●
● ● ● ● ●
● ●●
● ●●
● ● ● ● ● ●
● ● ● ● ● ●
● ● ●●
●● ● ●● ● ● ● ●
● ● ●● ● ●
●● ● ●● ●
y
● ●●
● ● ● ● ● ●● ●
● ●
●● ● ● ●
● ●● ● ●
●● ● ●●
●
● ●●●
● ●●●
● ●●● ● ● ●
● ● ● ●
● ● ●
● ● ● ●
● ●
●
−1
● ● ●
●
● ●●●
● ●●
● ●
●
●
● ●
●
●
Nuestro objetivo es estimar la función f (x) = sin(3πx) mediante splines con penalizaciones.
Los P-splines fueron introducidos por Eilers and Marx (1996), aunque han alcanzado gran
popularidad recientemente (ver por ejemplo Ruppert et al. (2003)). La metodologı́a se puede
resumir de la siguiente forma: (a) utilizar una base para la regresión, y (b) modificar la
función de verosimilitud introduciendo una penalización basada en diferencias entre coe-
ficientes adyacentes. En el caso de datos normalmente distribuidos tenemos el modelo de
regresión y = Ba + , donde ∼ N (0, σ 2 I), y B = B(x) es la base de regresión construida
a partir de x. Para estimar los coeficientes de regresión se minimiza la función de mı́nimos
cuadrados penalizados:
donde P es es una matriz que penaliza los coeficientes de forma suave y λ es el parámetro
de suavizado. Fijado un valor de λ, minimizar (3.1) da lugar al sistema de ecuaciones
(B 0 B + λD 0 D)â = B 0 y. (3.2)
24
la base y no del número de observaciones.
El parámetro λ determina la influencia de la penalización: si es 0, estamos en un caso de re-
gresión con B-splines, y si λ es muy grande, estarı́amos ajustando un polinomio de grado p−1.
Polinomios truncados
Supongamos de nuevo que tenemos pares (xi , yi ), i = 1, . . . , n. Para simplificar, vamos a
suponer que x está en [0, 1]. Tomamos k nodos equidistantes en ese intervalo tj = (j − 1)/k
j = 2, . . . , k + 1. Una base de polinomios truncados de grado p viene dada por:
donde x+ = max(0, x) (por eso son truncados, ya que a partir de un cierto punto valen 0).
La función {(x − t)+ }p tienen p − 1 derivadas continuas, de modo que cuanto mayor sea p
más suave son las funciones en la base. En lenguajes como Matlab, Splus o R es trivial el
cálculo de estas funciones:
tpoly= function{x,t,p){
#Polinomios truncados de grado p
B=NULL
for(i in 1:length(t)){
B=cbind(B,(x-t[i])^p * (x>t[i]))
}
}
K=10
knots=seq(0,1,length=(K+2))[-c(1,K+2)]
entonces,
25
B0=tpoly(x,knots,0)
B1=tpoly(x,knots,1)
B2=tpoly(x,knots,2)
B3=tpoly(x,knots,3)
0.8
0.4
0.4
0.0
0.0
0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0
x x
0.8
0.4
0.4
0.0
0.0
0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0
x x
B-splines
Las referencias básicas son De Boor (1977) y Dierckx (1993). Un B-spline está formado
por trozos de polinomios conectados entre si. Un ejemplo muy simple aparece en la parte
superior izquierda de la Figura 3: un B-spline de grado 1. Está formado por dos trozos de
polinomio lineal que se unen en un nodo, en la parte derecha aparecen más B-splines, cada
uno de los cuales está basado en tres nodos. En la parte inferior aparece un B-spline de grado
tres, está formado por 4 trozos de polinomios unidos entre si, de nuevo vemos que todas las
funciones de la base tienen la misma forma, pero están desplazadas horizontalmente (el
26
●
0.8
0.8
0.4
0.4
0.0
0.0
● ● ●
0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0
x x
0.8
0.8
●
0.4
0.4
● ●
0.0
0.0
● ● ● ● ●
0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0
x x
27
R, por ejemplo, la función para el cálculo de una base de B-splines de orden bdeg con ndx
nodos serı́a:
ky − Eδ − T γk + λδ 0 Eδ
En Green and Silverman (1994) se pueden encontrar más detalles sobre este método de sua-
vizado.
Para solucionar esta situación, O’Sullivan (1986) introdujo una penalización en la segunda
derivada de la curva, de modo que la función objetivo pasó a ser:
Z
2
0
S(a; y, λ) = (y − Ba) (y − Ba) + λ (B 00 a) dx
x
28
2
0
−2
−4
El tipo de penalización dependerá del tipo de base que se esté utilizando. En el caso de
polinomios truncados, se utiliza una penalización “ridge” independientemente del grado de
los polinomios truncados, es decir:
S(a; y, λ) = (y − Ba)0 (y − Ba) + λa0 a
esto equivale a poner una penalización en la derivada p + 1 de la curva.
Por el contrario, Eilers and Marx (1996) utiliza una penalización basada en la diferencias de
orden d entre los coeficientes adyacentes de la bases de B-splines, este tipo de penalización
es más flexible ya que es independiente del grado del polinomio utilizado para construir los
B-splines. Esta es una buena aproximación discreta a la integral de la d-ésima derivada al
cuadrado. La penalización se añade a la función de mı́nimos cuadrados, dando lugar a una
función de mı́nimos cuadrados penalizados,
S(a; y, λ) = (y − Ba)0 (y − Ba) + λa0 P d a ⇒ â = (B 0 B + λP d )−1 B 0 y (3.4)
donde P d = (∆d )0 ∆d , si d = 0 tenemos una penalización ridge. En general se utiliza d = 2,
aunque se puede utilizar ordenes superiores o inferiores, dependiendo de la variabilidad de la
29
2
●
●
●
3 nodos
●
●● ● 10 nodos ●
● ● ●● ● ● ● ●
●
●●● 20 nodos ●
● ● ● ●
● ● ● ●
● ●● ●
●
1
● ●● ● ● ● ●
● ● ●
●● ●● ● ● ● ●
● ●● ●
● ● ● ●
● ● ● ●● ● ●
● ● ●● ●
●● ● ● ● ● ● ●
● ●●
● ●●
● ● ● ● ● ●
● ● ● ● ● ●
● ● ●●
●● ● ● ● ● ● ● ●
● ● ●● ● ●
●● ● ●● ●
y
● ●●
● ● ● ● ● ● ● ●
● ●●
● ● ● ●
● ●● ● ●
●● ● ●●
●
● ● ●
●
● ●●●
● ●●● ● ● ●
● ● ● ●
● ● ●
● ● ● ●
● ●
●
−1
● ● ●
●
● ●●●
● ●●
●●
●
●
● ●
●
●
curva y de la cantidad de ruido en los datos. Por ejemplo, una penalización de orden d = 2
equivale a
(a1 − 2a2 + a3 )2 + . . . + (ak−2 − 2ak−1 + ak )2 = a0 D 0 Da
donde
1 −2 1 0 ...
0 1 −2 1 . . .
D=
0 0 1 −2 . . .
.. .. .. .. . .
. . . . .
En el caso de thin plate regression splines, ya vimos anteriormente utilizan una penalización
cuadrática que mide la complejidad de la curva y es una versión truncada de la penalización
de un thin plate splines.
La Figura 6 se muestra el ajuste de una curva mediante B-splines sin y con penalización,
se muestran los funciones que forman las bases (las columnas de la matriz B) multiplicadas
por los coeficientes, ası́ como los coeficientes (en un cı́rculo), en la parte izquierda vemos
como el patrón errático de los coeficientes da lugar a una curva poco suave, en cambio en la
parte derecha, cuando se les impone que se pase de un coeficiente a otro de forma suave, la
curva tambien lo es. Este gráfico muestra lo que está haciendo la penalización: fuerza a los
coeficientes a que sigan un patrón suave.
Entre las propiedades de los P-splines con bases de B-splines hay que destacar que no tienen
30
efecto de frontera (como le ocurre a los kernels), el efecto de frontera es el que hace que al
extender la curva fuera del dominio de x la curva caiga rápidamente hacia 0, esto no pasa
con los P-splines. Además, los P-splines ajustan de forma exacta los polinomios, es decir, si
la curva es polinómica, un P-spline la recuperará exactamente. Por último, se conservan los
momentos, es decir, que la media y la varianza de los valores ajustados será la misma que la
de los datos sea cual sea el parámetro de suavizado, al contrario que los kernels que tienden
a aumentar la varianza cuanto mayor es el suavizado.
●●
●●
●
●●
●●● ●●
1
● ● ●
●● ● ● ●
●
●
●●
●
● ●
●
●
●
●●
●●
● ● ●●
●
●
●
●
●● ●
●
●
●
●●
●
y
●
0
●
●
●●
●
●
●●
●●
●●
●●
●●
● ● ●●
● ●
● ●
●
●
●
●
−1
−1
●●
●
●
●●
●
●
0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0
x x
Figura 6: Curva estimada con 20 nodos, sin penalizar los coeficientes (izquierda) y penali-
zando los coeficientes (derecha).
31
1.3. Estimación de parámetros y grados de libertad
Hemos visto en la sección anterior, que dada una base B y una penalización P , buscamos
estimar un conjunto de parámetros a que optimiza la verosimilitud penalizada dada en (3.4),
la solución es:
â = (B 0 B + λP )−1 B 0 y ⇒ fˆ(x) = B â
Es importante caer en la cuenta de que la equación anterior depende de λ, el parámetro de
suavizado, el cual, por el momento vamos a suponer conocido (más adelante abordaremos el
tema de la estimación de dicho parámetro).
El otro parámetro que queda por estimar es la varianza residual, σ 2 , la estimación de este
parámetro depende de los grados de liberdad del modelo, por lo que hemos de introducir el
concepto de grados de libertad efectivos.
En este caso:
H = B(B 0 B + λP )−1 B 0
por lo que
d.f. = traza(H) = traza(B 0 B + λP )−1 B 0 B
y la traza de esa matriz variará dependiendo del parámetro de suavizado.
32
2
1
y
0
−1
aproximarán los coeficientes a cero, de modo que si λ → ∞ nos aproximamos a un ajuste po-
linómico. Por el contrario, cuando λ → 0 estaremos utilizando mı́nimos cuadrados ordinarios.
Ahora, al igual que en otros métodos de suavizado, hemos de elegir un criterio para se-
leccionar el parámetro de suavizado, podemos utilizar AIC, GCV, BIC, etc. Por ejemplo:
n
X (yi − ŷi )2
GCV = ; H = B(B 0 B + λD 0 D)−1 B 0
i=1
n − traza(H)
n
!
X
AIC = 2log (yi − ŷi )2 − 2log(n) + 2log (traza(H))
i=1
La ventaja de los P-splines es que es mucho más rápido calcular la traza de esa matriz que
con otro tipo de suavizadores.
33
la mayorı́a de los programas estadı́sticos.
El interés por la representación de los P-splines como modelos mixtos surgió de las difi-
cultades que surgen en el campo de los modelos aditivos de suavizado, ya que hay problemas
de identificabilidad del modelo. El uso de los P-splines hace que no sea necesario un método
iterativo (como el backfitting algorithm) para la estimación de las curvas, pero era entonces
necesario modificar las bases de forma que una curva se pueda descomponer como suma de
un componente polinómico (del mismo orden que la penalización) y otro no polinómico, es
decir, dado el modelo:
Según la base que haya utilizado para los P-splines, X y Z tendrán una forma diferente:
Polinomios truncados
B-splines
X = [1 : x] Z = BU Σ−1/2
donde U y Σ son matrices que forman parte de la descomposición en valores singulares
de la matriz de penalización D 0 D.
Una vez descrita esta nueva base, es inmediato establecer la conexión con un modelo mixto,
donde:
y = Xβ + Zu + u ∼ N (0, σu2 I c−2 ) ∼ N (0, σ 2 I), (3.5)
donde c el número de columnas de la base original B, y el parámetro de suavizado es
λ = σ 2 /σu2 , lo cual hace que sea posible estimar el parámetro de suavizado junto con los
otros parámetros del modelo.
Uno de los conjuntos de datos con los que vamos a trabajar en el curso está basado en
un estudio llevado a cabo en la Universidad de Harvard con niñas afectadas por leucemia
linfoblástica aguda (los datos han sido modificados por cuestiones de confidencialidad). La
obesidad y la corta estatura son efectos comunes en los adolescentes que padecen o han pade-
cido esta enfermedad y los tratamientos que se aplican intentan reducir al máximo este tipo
de efectos secundarios sin comprometer su eficacia. En uno de los ensayos clı́nicos llevados a
34
cabo se estudiaron 618 niños entre los años 1987 y 1995 y se aplicaron tres terapias distintas:
terapia intracraneal sin radiación, terapia intracraneal con radiación convencional y terapia
intracraneal con radiación dos veces al dı́a. Se midió la altura de los niños aproximamda-
mente cada 6 meses.
Para cada niño, la altura aumenta de forma suave a lo largo de los años, de modo que el
modelo anterior serı́a apropiado para este tipo de datos.
160
155
150
height
145
140
135
10 12 14
age
La Figura 8 muestra como la curva ajustada se descompone en una lı́nea recta (si utili-
zamos una penalización de orden dos, o polinomios truncados de orden uno), más una parte
que no es lineal, en el contexto de los modelos mixtos esto corresponderı́a al efecto aleatorio.
En el contexto de los modelos mixtos, el método estándar para la estimación de los pa-
rámetros de la varianza es el método de máxima verosimilitud restringida (REML).
1 1 1
`R (σu2 , σε2 ) = − log |V | − log |X 0 V −1 X| − y 0 (V −1 − V −1 X(X 0 V −1 X)−1 X 0 V −1 )y,
2 2 2
(3.6)
2 0 2
donde V = σu ZZ + σ I. El vector de parámetros β y el vector de coeficientes aleatorios u
son estimados como:
−1 −1
β̂ = (X 0 V̂ X)−1 X 0 V̂ y (3.7)
−1
û = σ̂u2 Z 0 V̂ (y − X β̂) (3.8)
1
V −1 = (I − Z(Z 0 Z + (σ 2 /σu2 )I c−2 )−1 Z 0 ) (3.9)
σ2
35
Sin embargo, con los P-splines como modelos mixtos es inmediato el introducir una estructura
de correlación y estimarla simultáneamente a la curva suave. El modelo seguirı́a siendo el
mismo:
y = Xβ + Zu + u ∼ N (0, σu2 I c−2 ) ∼ N (0, σ 2 Σ),
donde Σ representa la correlación entre los datos, y la matriz V = σu2 ZZ 0 + σ 2 Σ.
La Figura 9 muestra datos de temperatura de Nueva York tomados en 111 dı́as conse-
● ● ●
● ●
90
●
● ● ●
● ● ●● ●
●●●● ●
● ● ●
● ● ● ● ● ●●●
●● ● ●
● ●
● ● ● ● ●
● ●
● ● ● ●
● ●● ●
● ●
● ● ● ● ●●
●
● ●
80
● ●
● ● ●
● ●
● ●
●● ● ● ●
● ● ●
Temp
● ● ●
●
● ●
● ●
●
● ●
●
●●
70
● ●
● ●
●
● ●
●
60
●
● ● ●
●●
●
0 20 40 60 80 100
Time
36
campo de los P-splines como modelos mixtos, los que utilizan bases radiales (Wand, 2003):
en el primer caso, el problema que presentan es de tipo computacional, dado el tamaño de
las bases y la dificultad para seleccionar el parámetro de suavizado, además es un método de
suavizado isotrópico, apropiado en el caso de datos espaciales, pero no cuando las variables
explicativas están medidas en diferentes unidades; en el caso de bases radiales, aunque los
problemas computacionales son menores, el modelo también es isotrópico. Como alternativa,
Durbán et al. (2002) propuso el uso del producto tensorial de B-splines como bases para el
suavizado en dos o más dimensiones.
B = B2 ⊗ B1 (3.10)
16
14
12
10 20
8 15
x2 6
10
4
5 x1
2
P = λ1 I c2 ⊗ D 01 D 1 + λ2 D 02 D 2 ⊗ I c1 , (3.11)
37
λ1 y λ2 son generalmente diferentes, lo que hace que el modelo sea no-isotrópico, lo que
permite la posibilidad de que el suavizado sea mayor en una dimensión que en la otra
(detalles y ejemplos en Durbán et al., 2002 y Currie et al., 2004).
Además, esta descomposición de la base, hace que de forma sencilla se puedan ajustar mo-
delos del tipo: y = f (x1 ) + f (x2 ) + f (x1 , x2 ) + . Aunque los resultados aquı́ presentado son
38
para datos que están en un enrejado, se pueden aplicar al caso de datos dispersos como ve-
remos en algunos ejemplos más adelante, la única diferencia es que el producto de kronecker
de las bases se sustituye por el producto tensorial de las mismas.
Wood (2006b) propone el uso de producto tensorial de bases de thin plate regression splines
con penalizaciones similares a la la dada en (3.11). En el caso de P-splines bayesianos, se
utilizarı́a un paseo aleatorio bivariante (se pueden ver más detalles en Kneib (2005)).
A modo de ilustración, veamos un ejemplo en el que los datos que provienen de un en-
sayo de campo llevado a cabo con cereales en el Scottish Crop Research Institute (SCRI,
Reino Unido) con el objetivo de estudiar las tendencias espaciales que aparecen en los culti-
vos debido a la situación de los mismos. Los datos contenı́an información sobre la producción
de grano de cada parcela y la posición de las parcelas en el campo
linear pre
dictor
dictor
Co
Co
lu
lu
m
m
na
na
a a
Fil Fil
Se aprecia claramente que los ajustes son distintos y que en el primer caso, el modelo
aditivo impone una estructura muy restrictiva a la superficie ajustada. Un manera gráfica
de comprobar el ajuste del modelo aditivo es hacer un gráfico de los residuos respecto de la
posición en las filas, para cada una de las columnas; en la siguiente figura podemos observar
como hay una tendencia no explicada en los residuos que se va modificando a lo largo de las
columnas.
39
Figura 13: Gráfico de residuos del modelo aditivo.
40
La selección del parámetro de suavizado y de manera similar al caso de datos Normales, y
los intervalos de confianza se hacen de forma similar a un GLM teniendo en cuenta que
z ≈ N (Ba, W −1 )
Comparación de modelos
Modelos anidados
La comparación en modelos anidados se basa, al igual que en los GLM, en la diferencia
en el deviance residual. Si queremos comparar dos modelos m1 y m2 (donde m1 ⊂ m2 ),
entonces:
• En el caso de datos Normales:
(DR(m1 ) − DR(m2 ))/(df2 − df1 )
≈ F(df3 −df1 ),(n−df2 )
DR(m2 )/(n − df2 )
41
donde DR es el deviance residual y df son los grados de libertad asociados con
cada modelo.
• En otro caso:
DR∗ (m1 ) − DR∗ (m2 ) ≈ χ2df2 −df1
donde DR∗ el el deviance residual escalado.
Sin embargo, los modelos GAM no están relmente anidados, ya que los grados de liber-
tad asociados con una covariable, en general, cambiaran en presencia de otra variable.
De modo que es preferible centrarse en el siguiente caso:
Modelos no anidados
En este caso los contrastes anteriores no son válidos y utilizaremos criterios basados
en el AIC.
42
Capı́tulo 4
Software
Nos vamos a centrar en el uso de R. Dado que se puede ver un modelo con P-splines
como un modelo mixto, lo más inmediato es utilizar la función lme() para ajustar este
tipo de modelos, está función permite incluir efectos aleatorios, estructuras de covarianza y
correlación, permite ajustar modelos aditivos, analizar datos longitudinales, etc. Sin embargo,
el uso de estas funciones puede ser menos atractivo para el usuario no experto, ya que implica
la creación de todas las matrices que intervienen en el modelo, aunque permite ver de forma
clara lo que está haciendo el programa. Además, se han escrito paquetes en R: mgcv y SemiPar,
que permiten ajustar este tipo de modelos, todos ellos están basados en las funciones lme() y
glmmPQL() (para el caso de datos que no son normales). Además veremos funciones escritas
especı́ficamente para el caso de suavizado multidimensional.
La idea es que os familiaricéis con todas las herramientas disponibles para que podáis elegir
aquella que os sea más útil en cada caso.
La función lme
Para utilizar esta función es necesario cargar el paquete nlme.
La función admite que tanto la parte fija como la aleatoria se especifiquen mediante
matrices, lo que hace que simplemente construyendo las matrices X y Z tal y como indicamos
antes, podamos ajustar el modelo. El fichero MMbasis.R contine dos funciones:
library(splines)
library(nlme)
girl=read.table("girl.txt",header=TRUE)
y=girl$height
x=girl$age
source("MMbasis.R")
#Con B-splines
43
R Help on 'lme' Page
Description:
Usage:
Arguments:
MM=mixed.model.B(x,min(x)-0.5,max(x)+0.5,5,3,2)
object: an object inheriting from class 'lme', representing a fitted
linear mixed-effects model.
X=MM[[1]]
fixed: a two-sided linear formula object describing the
Z=MM[[2]] fixed-effects part of the model, with the response on the
left of a '~' operator and the terms, separated by '+'
operators,
#Con polinomios on the right, an 'lmList' object, or a
truncados
'groupedData' object. The method functions 'lme.lmList' and
'lme.groupedData' are documented separately.
MM=mixed.model.T(x,5,2)
fixed.: Changes to the fixed-effects formula - see 'update.formula'
X=MM[[1]] for details.
Z=MM[[2]]
data: an optional data frame containing the variables named in
'fixed', 'random', 'correlation', 'weights', and 'subset'.
Una vez contruidas las matrices,
By default hemos de darle
the variables a la función
are taken from lme() la información
the environment fromnecesaria
which 'lme' is called.
para que ajuste la curva como el resultado de un modelo mixto:
random: optionally, any of the following: (i) a one-sided formula of
n = length(y)
the form '~x1+...+xn | g1/.../gm', with 'x1+...+xn'
Id = factor(rep(1,length(y)))
specifying the model for the random effects and 'g1/.../gm'
#Que Id sea un
thevector de structure
grouping unos significa quebenoequal
('m' may hay datos
to 1, anidados
in which case
no '/' is required). The random effects formula will be
repeated for all levels of grouping, in the case of multiple
Z.block=list(list(Id=pdIdent(~Z-1)))
levels of grouping; (ii) a list of one-sided formulas of the
#pdIdent indica
formque la estructura
'~x1+...+xn | g', de covarianza
with de la parte
possibly different aleatoria
random effects
# es múltiplomodels
de la for
identidad
each grouping level. The order of nesting will be
assumed the same as the order of the elements in the list;
(iii) a one-sided formula of the form '~x1+...+xn', or a
Z.block=unlist(Z.block,recursive=FALSE)
'pdMat' object with a formula (i.e. a non-'NULL' value for
data.fr = groupedData( y ~ X[,-1]
'formula(object)'), or |a Id,data = data.frame(y,X,Z))
list of such formulas or 'pdMat'
objects. In this case, the grouping structure
#es necesario crear esta estructura ya que estamos trabajando formula will
con be
matrices,
derived
#no con variables from the data used to fit the linear mixed-effects
model, which should inherit from class 'groupedData'; (iv) a
named list of formulas or 'pdMat' objects as in (iii), with
fit = lme(y~X[,-1],data=data.fr,random=Z.block)
the grouping factors as names. The order of nesting will be
assumed the same as the order of the order of the elements in
the list; (v) an 'reStruct' object. See the documentation on
44 of the available 'pdMat'
'pdClasses' for a description
classes. Defaults to a formula consisting of the right hand
side of 'fixed'.
¿Qué información podemos obtener de fit?:
σ̂ 2 :
sigma.2 = fit$sigma^2
σ̂u2
sigma.2.alpha = sigma.2*exp(2*unlist(fit$modelStruct))
REM L
REML = fit$logLik
β̂
beta.hat = fit$coeff$fixed
û
alpha.hat = unlist(fit$coeff$random)
fˆ
f.hat=c(X%*%beta.hat+Z%*%alpha.hat[1:ncol(Z)])
#o
d = ncol(fit$fitted)
f.hat = fit$fitted[,d]
La función spm()
Para utilizar esta función es necesario cargar el paquete SemiPar que está basado en el
libro Semiparametric Regression de Ruppert et al. (2003)).
La función spm() es similar a la función gam(), con la ventaja de que el parámetro de
suavizado se puede especificar o elegir mediante REML. La base que utiliza por defecto, son
los splines cúbicos, sin embargo, es posible utilizar polinomios truncados, eligiendo el grado
del polinomio y/o los nodos.
library(SemiPar)
girl=read.table("girl.txt",header=TRUE)
y=girl$height
x=girl$age
fit = spm(y~f(x,basis="trunc.poly",degree=3))
45
● ●
●
●
160
●
●
155
●
150
●
y
145
●
140
●
●
●
135
9 10 11 12 13 14 15
Figura 1: Curva estimada para la altura de una niña a distintas edades e intervalo de
confianza.
1. fit:
que contiene la misma información que se obtiene de la función lme().
2. info:
Contiene información sobre el modelo, las bases, los nodos, el grado del polinomio, etc.
3. aux:
Contiene las matrices de covarianza de los efectos fijo y aleatorios ($cov.mat), la varian-
za estimada de los efectos aleatorios, σu2 ($random.var) y la residual, σ 2 ($error.var);
ası́ como los grados de libertad (aproximados) de cada componente ($cdf).
plot(fit,shade=FALSE,se.lwd=1,se.col=3)
points(x,y)
Un inconveniente de esta función, es que permite dibujar los intervalos de confianza, pero
no da la opción de obtener los valores numéricos que constituyen esos intervalos de confianza.
46
165
● ●
●
●
160
●
●
155
●
150
●
145
●
140
●
●
●
135
9 10 11 12 13 14 15
La base que utiliza por defecto, son los thin plate regression splines, sin embargo, es po-
sible utilizar otras bases como splines cúbicos, o B-splines y se puede elegir el número de
nodos y el orden de la penalización. Los argumentos principales de esta función son los
siguientes:
gamm(formula,random=NULL,correlation=NULL,family=gaussian())
gam(formula,method="",select="",family=gaussian())
Los dos primeros son similares a los de la función lme, aunque la fórmula permite especificar
la parte no-paramétrica del modelo de forma más sencilla. Esta función permite incluir
estructuras de correlación en el modelo, además de distribuciones no Gaussianas.
Para especificar los términos de suavizado se utiliza la función s(), sus argumentos son:
k= Tamaño de la base, nunca debe ser menor que el orden de la penalización.
fx= indica si estamos utilizando un spline de regresión con grados de libertad fijos
(TRUE), o si estamos utilizando P-splines (FALSE)
bs= Tipo de base que estamos utilizando, tiene las siguientes opciones:
47
• cc: periodic splines
• tp: thin plate regression splines
• ps: P-splines con bases de B-splines
El resultado de la función gamm tiene dos componentes: $lme y $gam, cada uno de ellos
contiene los objetos propios de cada una de esas dos funciones.
library(mgcv)
girl=read.table("girl.txt",header=TRUE)
y=girl$height
x=girl$age
fit2=gamm(y~s(x,bs="ps",m=2))
plot(x,y)
lines(x,fit$fitted,col=1)
lines(x,fit1$gam$fitted,col=2)
lines(x,fit2$gam$fitted,col=3)
48
● ●
GCV ●
REML+tprs ●
160
REML+ B−splines
●
●
155
●
150
●
y
145
●
140
●
●
●
135
9 10 11 12 13 14 15
En el último capı́tulo veremos como utilizar estas funciones según el tipo de datos que
estemos analizando.
49
Capı́tulo 5
Aplicaciones
El objetivo de este capı́tulo es ver como es posible incluir métodos de suavizado con
P-splines a los modelos que se utilizan más frecuentemente.
1. Modelos Aditivos
1.1. Ejemplo: Calidad del aire
En esta sección vamos a utilizar datos sobre la relación entre la calidad del aire y distintas
variables medidas en Nueva York entre Mayo y Septiembre de 1973. Las variable son:
Ozone: Media de ozono, en partes por millón
50
0 100 250 60 80
● ● ●
● ● ●
● ●
● ● ● ● ●
● ●
0 50 100
●● ● ● ●
●● ●● ●●●● ●●
Ozone ●
●
●●
●
●
●●
●●
●
●●
● ●
●●
● ●
●
●
●●
●●
● ● ●● ●
●● ●
●
● ● ● ●●
●●●
●
●
●
●●
●
●●
●
●●●
●●
● ●
●● ●●● ● ●
●
● ● ● ● ●
●
● ●● ●● ●
●
● ●
●
●●●●● ●
●
●●
●●
●●●
● ●
● ● ● ●● ●●
●
●●●●
●
●
● ● ● ● ● ●
● ● ●● ●● ●●
● ● ● ●● ●● ● ●●●●●●
●● ● ●
● ●●●● ●● ●●●●●● ●●
● ●●
●●
●●
●
●●●●●
● ●
●
●● ●●
● ●
●●
●●
● ● ●●
●●●
● ●
●
●●
● ● ● ● ●●● ●● ●● ●● ●● ●
● ●●●●● ● ● ●●● ●●●●●
●
●● ● ●
●
●●
●● ● ●
● ● ●●
●
●●● ●
● ● ● ● ●●●●
● ●●●● ●
● ● ● ● ●
●● ●●● ●●
● ● ● ●● ● ● ● ●
● ●
●● ● ●● ●●● ● ● ●●
●●
●
● ● ●●● ● ●
● ●● ● ● ● ● ●●●● ●●● ● ● ● ●● ●●● ●● ●
250
●
● ●
●
●● ● ●
●●● ● ● ●●●
● ●●●● ● ●●
●● ● ● ●● ●
●●●
●●
●
●●● ● ● ●
●●●●
●
●● ● ● ● ● ●● ●●●● ●
● ● ● ●● ● ●●● ● ●
●
●● ● ●●●● ●● ● ● ● ●●
●●●●
●● ● ●● ●
●
● ● ●
●●●●● ●
● ●
● ● ● ● ●
● ●
●●● ●● ● ● ●
● ● ●● ●● ●
● ● ●● ● ●●●● ●●
●
● ●
●
● ●●
●●
●
●●
●●
Solar.R ● ●●●
●
● ●
●
● ●
●
●
●
● ●●●
● ● ●
●
●
●●
●
●
●●
● ●● ●
●●
●
●
●● ●
●
●
●●
0 100
●
●● ● ● ● ●
●
●● ● ● ●● ●● ● ●
● ●● ● ● ●
●●
●●●
●● ●● ●
●● ● ●●
● ● ● ●
●
● ●●●● ●
●●●
● ● ●
●● ● ● ● ●●● ●
●●
●●
●● ●●● ●
●● ● ● ● ● ●
● ● ●
●● ● ● ●● ● ● ●●● ● ● ●
● ● ●
5 10 15 20
● ● ●
● ● ●
●● ● ● ●● ● ● ● ● ●
●
●●
●●● ● ● ● ●●
● ●● ●● ●● ●●
●
●
●●
●●●
● ● ●●● ● ● ● ● ●● ●
● ● ●●●● ● ●
●
●●● ● ● ●
● ●●
●
● ●● ●●●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●● ●
●
● ●● ●
●● ●
●
●
●
●
●●
●●
●
●●
●●
●
●
●●
● ●
●●
●●
● ●
●● ●●
● ●●
●
●
●
●
●
●
● ●
●
●●
●●
●
●
●●
●
●●●
●
●
●
●
●
●●
●
● ●
Wind ●●
●
●●●
●●
●
●●
●
●
●●
●●● ●
● ●
● ●●
●● ●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●●
●●
●● ●●
●●● ●●
●
●
● ●● ●
● ● ●●● ●●
●
●● ●●●●●
● ●●
●● ● ● ● ● ●●● ●
●
●●● ●
●●●
●●●
●●
●●
● ● ●
● ●
●●● ● ● ● ● ● ●●
● ● ●●●●
●●
●● ● ●● ●●
●● ●
● ●
●
●●●
●
●●●●
●●
●● ● ●●● ●
●● ● ● ●●
● ●
● ● ● ●● ●● ● ●
● ● ● ●
●● ● ● ● ●
● ● ● ● ● ● ● ●
●● ● ●
● ●
● ● ●●● ● ●●●● ●● ●
● ●●● ● ● ●● ● ● ● ●● ● ●●
●● ●●●
●● ●● ● ● ●●●●●
●
●●●●
●● ●● ● ●● ● ●
●● ●●● ● ●
● ●
●
●●● ●
●
●
● ● ● ● ● ●
● ● ● ● ●● ●●
●● ● ● ● ●
● ●●
●
●
●
●● ●
● ●
● ●
●
●●●
●● ●● ● ●
● ● ● ● ● ●●●● ● ●●
80
● ●●
● ●●●●
●
●● ● ● ● ● ●● ●●● ●
●●
●●
● ● ● ●●
●●●● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●●
●
●
●
●● ●
●
●
● ●
●●
●●
● ●
●
●
●● ●●
●
●
●
●
● ●
●
● ●
●●●
●
● ●●
●
●
●●●
●● ●
●●
●●●● ●
●
●●
● ●
●
●●●●●
● ●
●● ●
●●●
● ●●
●
●●● ●
● ●
● ● ●●
●●● ●
●●
●
● ● ●
Temp
●●●
●●●● ● ● ● ●
●●●●● ● ● ●●●● ●●●● ● ●● ●●
●
● ●●●
●
●●● ● ● ● ● ●● ● ●
●
●● ● ●● ● ● ● ●
60
●● ●
● ● ● ● ●
● ●● ● ● ● ● ● ●
● ● ● ●
● ●● ● ●
0 50 100 5 10 15 20
---
Residual standard error: 21.18 on 107 degrees of freedom
(42 observations deleted due to missingness)
Multiple R-squared: 0.6059, Adjusted R-squared: 0.5948
F-statistic: 54.83 on 3 and 107 DF, p-value: < 2.2e-16
par(mfrow=c(1 3))
termplot(air.lm,se=T)
par(mfrow=c(1,2))
plot(air.lm, which = 1:2)
par(mfrow=c(1,2))
hist(airquality$Ozone)
hist(log(airquality$Ozone))
Repetimos el modelo anterior con la variable transformada y hacemos de nuevo los gráficos
de residuos (Figura 5):
51
40
40
40
20
20
20
Partial for Solar.R
Partial for Temp
0
−20
−20
−20
−40
−40
−40
60 70 80 90 5 10 15 20 0 100 250
117 ● 117 ●
4
Standardized residuals
62 ●
● 30 ● 62
50
● 30
●
Residuals
● ●
● ●
2
● ● ●●
●● ● ●●
● ●
● ● ●
●
● ● ●●
●
● ● ●● ●● ●
●
1
● ●● ● ●
●●
● ● ● ●●
●
● ● ● ● ●
●●
●
●● ● ● ● ●●
●
●●
● ●● ● ● ● ● ● ● ● ●●
●
0
●
●●●● ● ● ●● ● ●
●●
●
●
●
●
●●
● ● ●● ●
●
●
●●
0
●● ● ●● ● ● ●
●●
●
●
●
● ● ● ● ●● ●
●
●●
●
●
●●
●
●●
●
● ●● ●● ● ●● ● ● ●
●
●
●
●
● ● ●● ● ●
●
●●
●
●
●
●● ● ● ●
●
●●
●
●
●●
●
●●
●● ●●
●●
●
●●
●
●
● ● ●
●
−1
● ●
●●
●●
●●
●
●
● ●
●●●
● ●
−50
●
−2
−20 0 20 40 60 80 100 −2 −1 0 1 2
52
Histogram of airquality$Ozone Histogram of log(airquality$Ozone)
20
30
15
Frequency
Frequency
20
10
10
5
0
0
0 50 100 150 0 1 2 3 4 5
airquality$Ozone log(airquality$Ozone)
par(mfrow=c(1,2))
plot(aire.lm2, which = 1:2)
Vemos que a el la normalidad se satisface pero que puede que haya heterocedasticidad, una de
las posibles causas es que la verdadera reclación entre la variable respuesta y las covariables
no sea lineal, por lo que vamos a ajustar un modelo GAM. Em pezamos por ajustar una
única variable:
library(mgcv)
aire.gam1=gam(log(Ozone)~s(Wind,bs="ps",m=2,k=10),method="REML",select=TRUE,
data=airquality)
summary(aire.gam1)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.4185 0.0655 52.19 <2e-16 ***
---
53
Residuals vs Fitted Normal Q−Q
3
● 24 24 ●
117 ● 117 ●
1
2
●● ● ● ●●●●
● ● ●●
● ●● ● ●●
● ●●
● ● ●
Standardized residuals
●● ● ● ●
●
●●
●
●
1
● ● ● ●● ●
● ● ● ● ●
●●
●
● ● ● ● ● ●
●
●●
● ●
● ● ● ● ●● ● ● ●● ● ●●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●● ●●● ●● ●●● ●
● ●●
●
0
●●
●
●
Residuals
● ● ● ● ● ● ● ● ●
●●
●
●
0
● ● ●●●● ● ●
●●
●
●
●
●
●●
●
●
●●
●
● ● ● ●● ● ● ● ●
●
●
●● ● ● ● ● ●●
●
●●
● ● ●
●
●●
●
●
●● ● ● ● ● ●●
●
●
● ●
●
●●
●●
●
−1
● ●
●●
●
● ●
● ● ● ● ●
●
● ● ●●
●●●
●●
−1
● ●
−2
●●
−3
−2
● 21
−4
● 21
plot(aire.gam1,residuals=TRUE)
Vemos que el término suave es signifcativo (aunque el p-valor es una aproximación, está muy
lejor del valor crı́tico), y los grados de libertad asociados son 2.5. La Figura 6 muestra el
gráfico de la relación entre el nivel de ozono y la velocidad del viento, junto con las bandas de
confianza (más anchas en los extremos al haber menos datos. El aumento de la velocidad del
viento disminuye los niveles de ozono, y esta dispinución es más acusada hasta las 10mph,
reduciéndose este efecto a partir de ese valor. Los puntos del gráfico son los residuos parciales
(en este caso quitando la ordenada en el origen).
54
2
1
s(Wind,2.56)
0
−1
−2
−3
5 10 15 20
Wind
● ● ●
●● ●
1
● ● ● ●
● ●● ● ● ● ● ● ● ●
● ●●
●● ●
● ● ● ● ● ● ●● ●
●
● ● ● ● ● ● ● ●
residuals
● ● ●
● ●●● ●●● ●● ● ●
● ●
● ● ● ●
●
● ● ●
●
● ●●
● ● ●
● ● ●
● ● ● ● ●
●
−1
−1
● ● ● ● ● ● ●
●
● ●
−3
−3
●
0 1 2 3 4 5
● ● ●● ●
● ●
10 20 30
● ● ● ●
● ● ● ●
● ● ●
● ● ● ● ●
●● ● ● ●
Frequency
●
Response
● ●● ● ●
● ●
● ●
● ●●
● ● ● ● ● ● ●
● ●
●●● ●● ● ● ●
● ● ● ●
● ●● ● ●
● ●
● ● ●
● ● ● ●● ●
● ●
●● ● ● ●
●
● ● ● ●
●
●
0
número de nodos utilizados es suficiente, podemos hacer una comprobación sencilla utilizando
los residuos:
residuos=residuals(aire.gam1)
55
residuos.gam=gam(residuos~s(Wind, k=20),method="REML", select=TRUE,
data=aire.gam1$model)
summary(residuos.gam)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.428e-16 6.477e-02 0 1
par(mfrow=c(1,1))
plot(residuos.gam)
Lo que estamos haciendo es ver si queda alguna relación no explicada entre las dos varia-
bles, para eso ajustamos un modelo GAM a los residuos y aumentamos el número de nodos.
Vemos que no hay relación entre los residuos y el viento, por lo que podemos confirmar
que el modelo original era correcto. La Figura 8 nos muestra como efectivamente no exisite
relacción entre los residuos y el viento.
0.002
s(Wind,0)
0.000
−0.002
5 10 15 20
Wind
Figura 8: Gráfico del efecto del viento sobre los residuos del modelo aire.gam1
56
En algunas situaciones nos interesará predecir el valor ajustado por el modelo para nuevos
valores del viento, para poder obtenerlo utilizados la función predict.
aire.pred<-data.frame(Wind=seq(min(airquality$Wind),max(airquality$Wind),
length.out=200))
p<-predict(aire.gam1, newdata=aire.pred, type="response", se.fit=TRUE)
plot(aire.pred$Wind,p$fit, xlab="Viento(mph)",ylab="log(Ozono)(ppb)",
type="l",ylim=c(0,6))
lines(aire.pred$Wind,p$fit + 1.96*p$se.fit, lty=2)
lines(aire.pred$Wind,p$fit - 1.96*p$se.fit, lty=2)
6
5
log(Ozono)(ppb)
4
3
2
1
0
5 10 15 20
Viento(mph)
57
R-sq.(adj) = 0.592 Deviance explained = 60.4%
REML score = 101.88 Scale est. = 0.30574 n = 116
par(mfrow=c(1,2))
plot(aire.gam2,residuals=TRUE)
El efecto de Temp es significativo. La Figura 10 muestra el efecto estimado de las dos variables.
1
0
0
s(Temp,1.31)
s(Wind,2.05)
−1
−1
−2
−2
−3
−3
5 10 15 20 60 70 80 90
Wind Temp
Figura 10: efecto estimado de la velocidad del viento y la temperatura junto con los residuos
parciales
anova(aire.gam1,aire.gam2,test="F")
Model 1: log(Ozone) ~ s(Wind, bs = "ps", m = 2, k = 10)
Model 2: log(Ozone) ~ s(Wind, bs = "ps", m = 2, k = 10) + s(Temp, bs = "ps",
m = 2, k = 10)
Resid. Df Resid. Dev Df Deviance F Pr(>F)
1 112.44 55.958
2 111.63 34.131 0.80053 21.827 89.181 7.231e-14 ***
AIC(aire.gam1)
253.7601
AIC(aire.gam2)
198.0106
A la vista del resultado, podemos concluir que el modelo con las dos variables es mejor. Es-
trictamente, los modelos anteriores no están aidados, ya que los grados de libretad de Wind
58
son distintos dependiendo de si Temp está presente o no, por lo que podemos usar el AIC
para confirmar los resultados.
Por último, introducimos la variable Solar.R. Pero esta variable tiene valores faltantes,
de modo que el modelo que incluye esta variable no está anidado en el modelo aire.gam2,
ya que ambos no se estimarı́an sobre el mismo conjunto de datos. Por lo que vamos a eliminar
los datos faltantes y re-ajustamos el modelo aire.gam2 antes de introducir Solar.R:
new.airquality=na.omit(airquality)
aire.gam22=gam(log(Ozone)~s(Wind,bs="ps",m=2,k=10)+s(Temp,bs="ps",m=2,k=10),
method="REML",select=TRUE,data=new.airquality)
aire.gam3=gam(log(Ozone)~s(Wind,bs="ps",m=2,k=10)+s(Temp,bs="ps",m=2,k=10)+
s(Solar.R,bs="ps",m=2,k=20),method="REML",select=TRUE,data=new.airquality)
summary(aire.gam3)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.41593 0.04586 74.49 <2e-16 ***
---
Approximate significance of smooth terms:
edf Ref.df F p-value
s(Wind) 2.318 9 2.255 2.44e-05 ***
s(Temp) 1.852 9 6.128 1.12e-12 ***
s(Solar.R) 2.145 19 1.397 1.23e-06 ***
---
R-sq.(adj) = 0.689 Deviance explained = 70.7%
REML score = 86.106 Scale est. = 0.23342 n = 111
par(mfrow=c(2,2))
plot(aire.gam3,residuals=TRUE)
anova(aire.gam22,aire.gam3,test="F")
Resid. Df Resid. Dev Df Deviance F Pr(>F)
1 106.82 31.186
2 103.69 24.202 3.1389 6.9841 9.5321 9.284e-06 ***
AIC(aire.gam22)
184.4354
AIC(aire.gam3)
162.5712
59
Figura 11: Gráfico del efecto del viento, la temperatura y la radiación solar junto con los
residuos parciales
set.seed(666)
data=gamSim(1,n=400,dist="normal")
fit=gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=data,method="REML",select=TRUE)
summary(fit)
Approximate significance of smooth terms:
edf Ref.df F p-value
s(x0) 2.5881064 9 2.633 5.67e-06 ***
s(x1) 2.4364679 9 39.163 < 2e-16 ***
s(x2) 7.7346613 9 87.971 < 2e-16 ***
s(x3) 0.0002624 9 0.000 1
par(mfrow=c(2,2))
plot(fit,residuals=TRUE)
60
5
5
s(x0,2.59)
s(x1,2.44)
−5 0
−5 0
0.0 0.4 0.8 0.0 0.4 0.8
x0 x1
5
5
s(x2,7.73)
s(x3,0)
−5 0
−5 0
0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.4 0.8
x2 x3
2. Modelos Semiparamétricos
Cuando en un modelo de regresión hay componentes paramétricos y no-paramétricos,
tenemos un modelo semiparamétrico,
La forma de ajustar el modelo es exactamente igual a la que hemos visto anteriormente, sim-
plemente construı́mos la matriz X de forma que incluya todas las variables independientes.
Sin embargo, hay un caso que merece especial interés y es cuando en la parte paramétrica
incluı́mos un factor con dos o más niveles. Al igual que en el caso de regresión lineal nos
podemos plantear si queremos ajustar dos rectas paralelas (modelo aditivo) o no paralelas
(modelo con interacción). Además, nos podemos preguntar si la cantidad de suavizado es la
misma en el caso de que las curvas no sean paralelas.
Para ilustrar este caso utilizamos los datos que están en el fichero onions.txt. Los da-
tos se recogieron en un estudio cuyo objetivo era establecer la relación entre la producción
de una planta de cebolla y la densidad de plantas cultivadas. Hay tres variables:
Densidad (plantas/m2 )
Producción (gramos/planta)
Localidad
Los datos fueron recogidos por I.S.Rogers (South Australian Dept. of Agriculture & Fishe-
ries).
61
5.5
●
● ● ●
●
● ● ●
●
● ●
●●
5.0
● ●
●●
● ●
● ●
log(Produccion)
●
●● ●
●
●
● ●
4.5
●
● ● ●
●
●
●
●
● ● ●
4.0
● ●
3.5
50 100 150
Densidad
Figura 13: Gráfico de los datos sobre producción de cebollas en dos localidades, en azul
corresponden a Virginia y en verde a Purnong Landing.
La Figura 13 muestra claramente que las cebollas cultivadas en Purnong Landing produ-
cen más que las cultivadas en Virginia, es interesante ver si la relación es lineal y en caso de
no serlo, si las curvas son paralelas o no. El modelo lineal serı́a el siguiente:
donde
0 si el i-ésimo dato fue recogido en Purnong Landing
Localidadi =
1 si el i-ésimo dato fue recogido en Virginia
La Figura 11 muestra cierta curvatura en cada una de las localidades, lo que sugerirı́a el
modelo:
log(Produccióni ) = β1 Localidadi + f (Densidadi ) + i
Para ajustar este modelo el código serı́a:
L=factor(Localidad)
fit1=gam(log(Produccion)~L+s(Densidad,k=20, bs="ps",m=2),method="REML", select=TRUE)
summary(fit1)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.85011 0.01688 287.39 <2e-16 ***
62
L1 -0.33284 0.02409 -13.82 <2e-16 ***
---
Approximate significance of smooth terms:
edf Ref.df F p-value
s(Densidad) 4.568 19 72.76 <2e-16 ***
---
R-sq.(adj) = 0.946 Deviance explained = 94.9%
REML score = -54.242 Scale est. = 0.011737 n = 84
Preguntas:
1. ¿Cuánto se ha reducido el error estándar de la variable Localidad ?
2. ¿Cómo harı́as el gráfico de las dos curvas que aparecen en la Figura 14?
5.5
●
● ● ●
●
● ● ●
●
● ●
●●
5.0
● ●
●●
● ●
● ●
log(Produccion)
●
●● ●
●
●
● ●
4.5
●
● ● ●
●
●
●
●
● ● ●
4.0
● ●
3.5
50 100 150
Densidad
En este caso ambas curvas son paralelas, pero no tenemos por qué asumir este modelo; al
igual que en el caso de regresión lineal podemos plantearnos la interacción entre Localidad
y Densidad, es decir, no tenemos por qué suponer que el descenso de la producción cuando
aumenta la densidad es el mismo en las dos localidades. En vez de ajustar un modelo aditivo,
podemos ajustar un modelo con interacción:
donde
0 si el i-ésimo dato fue recogido en Purnong Landing
L(i) =
1 si el i-ésimo dato fue recogido en Virginia
63
fit2=gam(log(Produccion)~L+s(Densidad,k=20,bs="ps",m=2,by=L),method="REML",
select=TRUE)
summary(fit2)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.84407 0.01603 302.12 <2e-16 ***
L1 -0.33003 0.02271 -14.54 <2e-16 ***
---
Approximate significance of smooth terms:
edf Ref.df F p-value
s(Densidad):L0 3.097 18 37.62 <2e-16 ***
s(Densidad):L1 4.728 17 52.10 <2e-16 ***
---
R-sq.(adj) = 0.952 Deviance explained = 95.7%
REML score = -53.616 Scale est. = 0.01045 n = 84
fit2$gam$sp
Pregunta:
●
● ● ●
●
● ● ●
●
● ●
●●
5.0
● ●
●●
● ●
● ●
log(Produccion)
●
●● ●
●
●
● ●
4.5
●
● ● ●
●
●
●
●
● ● ●
4.0
● ●
3.5
50 100 150
Densidad
Figura 15: Gráfico de curvas ajustadas para las dos localidades utilizando interacción en el
modelo (la lı́nea discontinua corresponde a un modelo sin interacción)
64
3. P-splines para datos longitudinales
Los datos longitudinales son frecuentes en aplicaciones médicas y biológicas. En general,
este tipo de datos corresponden a medidas tomadas a varios individuos en distintos instantes
de tiempo, y se caracterizan por la dependencia que hay entre las medidas repetidas hechas a
un mismo individuo. Los modelos mixtos más sencillos para datos longitudinales representan
a cada individuo como la suma de la media de la población (que varı́a con el tiempo) y que
se modela como un efecto fijo, y un polinomio de grado bajo (generalmente una lı́nea) en la
que los coeficientes son aleatorios y sirve para modelar la variabilidad individual (Laird and
Ware, 1982). Sin embargo, estos modelos pueden no ser apropiados en algunas situaciones,
por ejemplo, cuando las trayectorias individuales sean una función no-lineal del tiempo.
Para ilustrar esta metodologı́a vamos a utilizar los datos sobre el estudio de distintas te-
rapias para la leucemia infantil de los que hablamos en la sección 3. Estos datos han sido
modificados para preservar la confidencialidad de los mismos y se encuentran en el fichero
leucemia.txt. El fichero tiene 4 columnas:
En este ejemplo, tomamos 197 niñas que fueron diagnosticadas de leucemia linfoblástica
aguda entre los 2 y los 9 años. La altura de esta niñas se midió en diferentes momentos y en
total se recogieron 1988 observaiones. El número de observaciones por niña varı́a entre 1 y 21.
La Figura 16 muestra la altura de las niñas en función de la edad, podemos ver claramente
como cuando llega la pubertad, la relación deja de ser lineal. El código de los modelos que
vamos a ajustar se puede encontrar en los ficheros longitudinal.R y longitudinal2.R.
donde
1 si la niña i-ésima recibe el tratamiento l
tril =
0 en otro caso
Este modelo lo que supone es que todas las niñas tiene una tasa de crecimiento lineal e igual
para todas, y la variabilidad entre las niñas se tiene en cuenta mediante un efecto aleatorio
Ui . En forma matricial:
y = Xβ + Zu +
65
5 10 15 20
hyperfractionated radiation NO radiation standard radiation
●●●
● ● ●
●● ●● ●
● ● ●
●●
● ●●● ● ● ● ●
●
●
● ● ● ●●● ●● ● ●
● ● ●
●● ●●●●●● ●● ●
160 ●
● ●●
●●
●●
● ●●●●●
● ●
●●
● ●
●
●
●
● ●●● ●
●●● ● ● ●● ●
●● ● ● ● ●● ●●
●●●●●
● ●
●
● ●
●
● ● ●
● ● ●
●● ● ● ● ●
● ●
●
●● ●
● ●●
● ●
●
● ●●● ● ● ● ● ●
●●
●●
●● ●
●
●● ● ●
●● ● ●● ●● ●
● ●
● ● ●
●● ●●● ●● ●●●
● ● ● ●●●
●
● ●● ● ● ●
●● ● ● ●
● ●● ●●●
● ● ●● ● ● ●
●
● ●
●● ●
●
●●
● ● ●●
● ●● ● ●
● ● ● ●● ● ●● ●
● ●
● ●● ● ● ●●● ●●●
● ●●
● ● ● ●●●●
● ● ●●●
● ●●●●
● ●
●● ●● ●
● ● ●
●●●●●
●●●
●
●● ● ● ● ● ● ●●● ●
●●
●● ●
● ● ● ● ● ●
●● ●● ●
●● ● ●●●
● ●● ● ●
●● ● ●
●
● ●●
●
● ●
● ● ●
●
● ● ●
●● ●
●●● ●
●●●
● ● ● ●
140 ●●● ● ●
●
●● ●●
●
●●
●
●
●●●
●●
●●● ● ● ●● ● ●
●
● ● ●●
●●
● ●
●●●
●●
●●●
●●
●● ● ● ●● ●
●● ● ●●
●
●
● ●
●
●
●
●
●●
●●● ●● ●
●● ● ●●● ●
●● ●●●
●●
●
●
●
●● ● ● ●
● ● ●●
●●●
●●
●●● ●● ●● ●
●●●● ●
●● ● ● ● ● ●●●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●●●● ● ●
●● ●
●● ●
●●●●●
● ● ● ●● ●
●● ● ● ●
● ●
●●● ●●
height (cm)
●● ● ●●
●●
●
●●
●
●●
●●●
●
●
●
●●●● ●●
●●● ●● ●
●●
●●●
●
●●●
●
●●●●
● ●●● ●
●● ● ● ● ●●●●
●
●●
●
●
● ●
●●
● ●
●
● ●
● ●
● ●
●
●●
●
●
●●
●●
●●●
●●●
●●
●● ● ●
●● ●
●● ● ●●
●●
●●●
●●
● ●● ●●
●
●●●●●
●
●
●
●
●
●● ●● ●● ● ●
● ● ●● ●
●●
●●●
●
●●
● ●
●
● ●● ●
●●●●●●●●●●● ● ●● ●
●
●●●
●●
●●
●● ●
●
●● ● ●● ● ● ●●
●●●●
●●
●●
●●
●
●●
●
●●
● ● ●
● ● ● ●●● ●●
●
●
●
●●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●● ● ●●
● ●
● ● ●●● ●● ● ● ●
●● ● ●
● ● ●●
● ●●
●●●●
●
●
●
●
●
●●
●
●
●●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●●● ● ●●●
● ●● ●
● ●● ●●●
● ●
●
●●
●●
●●
●●
●
●●
●●
●●●●
●●●●● ● ●
●●●●
●● ●● ●● ● ● ●
●●
●●
●●●
●
●●
●●●
● ● ● ●
●
● ●● ●
120 ●
●
●●●
●
●
●
●
●
●● ● ●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●●
●
● ●● ●●
●
●●●●●
●
● ● ● ● ●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●● ●
●
● ●●● ●
●●
●
●● ●
● ●●●●
● ●●●
●●●
●
●●
●
●●●
●
●
●●
●
●
● ●
●
●● ● ●●
●
●● ●●●
●●
●●● ●
●●●●
●
●
●
●
●
●●
●
●●
●
●
●●
●● ● ● ● ●●● ●●●●
●
● ●
●
●● ● ●●
●●
● ●
●
●
●
●
●●
●
●● ●
●●● ●●●● ●●●●
●●●
●
●
●
●●
●
●●
●
● ●
●●
●●
●● ● ●●●●●
●●●●
●●
● ● ● ● ● ●●●●●
●●
●
●
●●
●●
● ● ● ●● ●●●
● ●● ●●● ● ●●●
●
●●
●●
●
●
●●
●
●● ● ● ●
● ●
●●●
● ● ●
●
●●●
● ●● ●
●●
●
●●
●●
●
●●●
●●
●●● ●
●●
●● ●
●●●
● ●●
●●
●●●●● ● ●●
●●●●● ●● ● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●● ●● ●
● ●●●● ● ●
●
●
●●
●
●●
●
●
●
●
●
●●
●
● ●●
●● ●●●● ●
●● ● ●●● ●
●●
●
●●●
●
●●
●
●● ●● ●●●
●
● ●● ● ●●●●
●
●●
●
●
●●
●●
●
● ● ●
●●●●●●● ●● ●
●
●●
●●
●
●
●
●
●●
●
●
●
●●
●
●●● ●● ●●● ● ●
● ● ●
●●
●●
●
●●
●●
●●
●
●● ●●● ●●
●●
● ● ●●●
●●
●
●●● ●●●●●
●●● ●● ●●
●●
●●
●
●
●●●
●●● ●●
●●●●
●
100 ●● ●
● ●
●●●
●●
●
●●
●
●
●
●●
●
●●
● ●
● ● ●●●● ●
● ●●● ●●
●●
●
●●
●
●
●●
● ● ●● ●
● ● ●●●
●●
●●
●●
●
●● ●●
●● ●
●●●●●●
● ● ●●●
●●●
●
●●
●● ●
●●●●● ● ●
● ● ●●●
●●
●
●●●●
●●●●
●
●
●
●
●●●
●●
●●●●●
● ●
●
●●●
●
●● ●
●●
●
● ● ● ●
●● ●
●
●●● ●●●
●●●
● ●● ●●
●
●
●●
●
●
●● ● ● ●
● ●● ● ●
● ● ●
●●●●
●●
●● ●
●●
●● ●●●
●●
● ●
●●● ● ●
● ●● ●
● ●●● ●
● ●
●
●
● ●
80 ●
5 10 15 20 5 10 15 20
age (years)
Figura 16: Altura de las niñas a lo largo del tiempo para cada uno de los tres tratamientos.
donde
β0
11 0 ... 0
1
X1 T1 1 xi1 β1 0 12 ... 0 1
X= .. .. .
.. , β = γ1
, Xi = . , Z = 1i =
. .. .. .. .. ..
γ2
. . . . .
Xm T m 1 xini
γ3 0 0 . . . 1m 1 ni ×1
El código serı́a:
library(nlme)
leucemia=read.table("leucemia.txt",header=TRUE)
attach(leucemia)
model1 = lme(altura~Xfactor(tratamiento)+edad,random=list(caso=pdIdent(~1)))
66
180
●
160
●
● ●● ● ●
● ● ●
● ●
● ● ●
●●● ● ● ● ● ●
● ● ●●
●●● ● ●●
● ● ● ●●
● ●●
● ● ●
● ●●
●
140
●● ● ● ●
●●●●
altura
●●●●
● ●●● ●
●● ●● ● ● ● ●●
●
●● ● ● ● ●●●
●●●●●●● ●
●
● ●● ●
●●●●●● ●
●●●
● ●● ●
●
●●● ● ●
●●●●● ●●
●● ● ●●●●●
●●
120
●●●● ●● ●
●●● ●
●●●
●●
● ●
●
●● ●●●● ●●● ● ●
●●●●●●● ●●●
●●● ●
●●● ●●●● ●
● ●
●●●
● ●● ● ● ●
● ● ●
●●●● ●
● ●● ●● ●●
●
●
●● ● ●
●● ●●●●
● ● ●
●● ●●
●
●● ●●●●●● ● ●
●
●● ●● ●
100
●●●●
●● ● ● ●●
● ●●●
●●●
●
●●●
●
●
●
●●●●●
●●
●
●●●● ●●
●●
● ●● ● ●
●●
80
5 10 15
edad
Figura 17: Rectas ajustadas para las niñas que reciben el radiación hiperfraccionada.
donde f es una función suave que refleja la tendencia de crecimiento de las niñas. Estimamos
f mediante P-splines y utilizamos su representación como modelos mixtos para unificar la
estructura del modelo, ahora
Z 1 11 0 . . . 0
Z 2 0 12 . . . 0
Z = .. .. .. . . . , Z i = definida en la pag. 13,
. . . . ..
. ..
Z m .. . . . . 1m
σu2 I
0
u = [u1 , . . . , uK , U1 , . . . , Um ] and G = Cov(u) = 2 .
0 σU I
67
En vez de lı́neas, ajustamos curvas, pero todas son similares, sólo se diferencian en la orde-
nada en el origen.
En R:
library(mgcv)
fit2.gamm=gamm(altura~factor(tratamiento)+s(edad,k=40,bs="ps",m=2),
random=list(caso=pdIdent(~1)))
library(splines)
Id=factor(rep(1,length(altura)))
X=model.matrix(altura~factor(tratamiento)+edad)
#Con B-splines
source("MMbasis.R")
MM=mixed.model.B(edad,min(edad)-0.5,max(edad)+0.5,40,3,2)
Z=MM[[2]]
Z.block2=list(list(Id=pdIdent(~Z-1)),list(caso=pdIdent(~1)))
Z.block2=unlist(Z.block2,recursive=FALSE)
data.fr = groupedData( altura ~ X[,-1] | Id,data = data.frame( altura,X,Z,caso))
model2 = lme(altura~X[,-1],data=data.fr,random=Z.block2)
La Figura 18 muestra cómo el modelo (5.2) es demasiado simplista y que asumir que las
curvas sean paralelas y con la misma forma no permite explicar las trayectorias individuales
de forma correcta.
Y = Xβ + Zu + ,
68
● ●
● ●
●
160
●● ●
● ● ●● ●
● ●
●●● ●
●● ● ● ●
●● ●●
●● ●● ●
● ● ● ● ● ● ●
● ●● ●● ●●
●●●● ● ● ●
●
●● ●●●
● ● ●
● ● ●
● ●●● ●
140
● ● ●
● ● ● ●
●●● ●
●●●
●● ●● ● ●●
●●● ● ●● ●
● ●● ● ●
●
●●
altura
●
● ● ● ●● ●
●● ● ●
●● ● ● ●● ● ●●
● ● ● ● ●
●●● ● ● ● ●● ●
● ●●●●
● ●
●●●●●● ●
●●
120
●●● ● ● ●●
●●●●
●●● ●● ●
● ●●
●● ● ●●● ●
●●
●●● ●● ●
●●● ●
●
●● ●
●●●●●
●
● ● ● ●
●● ●●
● ●
●
● ● ●● ●●
●●● ● ●
●
● ●●● ●●●
●● ●
●● ●●●●● ●●● ●
●●●●
● ●●●●
100
● ● ●●
●● ● ●
●●● ●
● ● ●
●
●●● ● ●● ●
● ●●●
● ●● ●●
● ●●
● ● ●
● ● ●●
●
●●
●
80
5 10 15
edad
Figura 18: Curvas ajustadas para las niñas que reciben el radiación convencional.
Z1 X1 0 ... 0
Z2 0 X2 ... 0
T
Z= , u = [u1 , . . . , uK , a11 , a12 , . . . , am1 , am2 ] ,
.. .. .. ... ..
. . . .
Zm 0 0 . . . Xm
σu2 I
" #
0
G = Cov(u) = 0 blockdiagonal Σ .
1≤i≤m
En R:
fit3.gamm=gamm(altura~factor(tratamiento)+s(edad,k=40,bs="ps",m=2),
random=list(caso=pdSymm(~edad)))
69
● ●
● ●
●
160
●● ●
● ● ●● ●
● ●
●●● ●
●● ● ● ●
●● ●●
●● ●● ●
● ● ● ● ● ● ●
● ●● ●● ●●
●●●● ● ● ●
●
●● ●
●●
● ● ●
● ● ●
● ●●● ●
140
● ● ●
● ●● ●
●
●● ●
●
●●● ●● ●
●●
● ●●● ●
●● ●● ● ●●
● ●
altura
●● ●●●
●
●● ● ●
●● ●
●● ● ● ●
● ● ●●
● ● ● ● ●
●●● ●● ●
●● ●
● ●●●
●
● ●
●●●●●●
120
●●●
●●● ● ● ●●
●●●●
●●●●● ●
●
● ●
●● ● ●●●●
●●
●●● ●● ●
●●●
● ●
● ●●
● ● ● ●
●
●
●●●
●●
●
●●●
●
● ●●● ●
●● ● ●●●
●● ●
●●●
●●●
● ● ●
●● ●●
● ●●●●● ●
●●●
●● ●●
●● ●
100
●
● ● ●
●●
●
● ● ●
● ●●●
●● ● ●●
●
● ●
● ●●●
● ●
● ●● ●
●
● ●●●●
●● ●
●
●●
●
80
5 10 15
edad
Figura 19: Curvas ajustadas para las niñas que reciben el radiación convencional, la lı́nea
sólida corresponde al modelo con pendiente aleatoria.
X=model.matrix(altura~factor(tratamiento)+edad)
Z.block3=list(list(Id=pdIdent(~Z-1)),list(caso=pdSymm(~edad)))
Z.block3=unlist(Z.block3,recursive=FALSE)
data.fr = groupedData( altura ~ X[,-1]|Id,data =data.frame(altura,X,Z,caso,edad))
model3 = lme(altura~X[,-1],data=data.fr,random=Z.block3)
La Figura 19 muestra cómo el modelo (5.3) permite que las curvas no sólo se muevan en
dirección vertical, sino que también oscilen, aún ası́ es posible relajar aún más el modelo.
70
factor y un predictor contı́nuo, de modo que el modelo (5.3) se puede extender a:
fit4.gamm=gamm(altura~factor(tratamiento)+s(edad,k=40,bs="ps",m=2,by=factor(tratamie
summary(fit4.gamm$gam)Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 125.8952 0.4606 273.357 < 2e-16 ***
factor(tratamiento)2 -3.6383 1.0508 -3.463 0.000547 ***
factor(tratamiento)3 -2.2342 1.0605 -2.107 0.035272 *
---
Approximate significance of smooth terms:
edf Ref.df F p-value
s(edad):factor(tratamiento)1 11.589 11.589 954.8 <2e-16 ***
s(edad):factor(tratamiento)2 8.986 8.986 250.8 <2e-16 ***
s(edad):factor(tratamiento)3 9.251 9.251 268.3 <2e-16 ***
---
R-sq.(adj) = 0.918 Scale est. = 3.41 n = 1988
X=model.matrix(altura~factor(tratamiento)*edad)
tratamiento=factor(tratamiento)
Z.block4=list(list(tratamiento=pdIdent(~Z-1)),list(caso=pdSymm(~edad))
Z.block4=unlist(Z.block4,recursive=FALSE)
data.fr = groupedData(altura ~ X[,-1]|Id,data=data.frame(altura,X,Z,caso,edad))
model4 = lme(altura~X[,-1],data=data.fr,random=Z.block4)
71
160
tratamiento 1
tratamiento 2
tratamiento 3
140
altura
120
100
5 10 15
edad
72
los modelos mixtos:
Y = Xβ + Zu + with
Z1 X1 0 ... 0 Z1 0 ... 0
Z2 0 X2 ... 0 0 Z2 ... 0
Z= ,
.. .. .. .. .. .. .. .. ..
. . . . . . . . .
Zm 0 0 . . . Xm 0 0 . . . Zm
σu2 I
0 0
G = Cov(u) = 0 blockdiagonal Σ .
1≤i≤m
2
0 0 σv I
En este caso serı́a muy complejo el uso de la función gamm(), ya que tendrı́amos que definir
197 variables (tantas como niñas) para poder obtener una curva individual para cada niña,
sin embargo, esto es bastante sencillo con la función lme():
MM.caso=mixed.model.B(edad,min(edad)-0.5,max(edad)+0.5,10,3,2)
tratamiento=factor(tratamiento)
Z.caso=MM.caso[[2]]
Z.block5=list(list(tratamiento=pdIdent(~Z-1)),list(caso=pdSymm(~edad)),
list(caso=pdIdent(~Z.caso-1)))
Z.block5=unlist(Z.block5,recursive=FALSE)
data.fr=groupedData(altura~X[,-1]|Id,data = data.frame(altura,X,Z,Z.caso,caso,edad))
model5=lme(altura~X[,-1],data=data.fr,random=Z.block5)
Comparación de modelos
Anteriormente, vimos que en el contexto de los modelos mixtos, el método estándar para
la estimación de los parámetros de la varianza era REML. Pero además de ser capaces de
estimar los parámetros, nos va a interesar contrastar si necesitamos un modelo paramétrico
o no. Realizar este tipo de contrastes no es inmediato. Por ejemplo, en el modelo (5.2),
podemos estar interesados en saber si la función que describe la media de la población de
niñas es una lı́nea o tiene algún grado de no-linealidad. Esto serı́a equivalente a contrastar:
El primer problema al que nos enfrentamos es que el parámetro de interés está en la frontera
del espacio de parámetros, [0, ∞), por lo que el test de la razón de verosimilitud
RLRT = supREL(β, σε2 , σU2 , σu2 ) − supREL(β, σε2 , σU2 , σu2 ) (5.6)
H1 H0
no se puede comparar con una χ21 . Self and Liang (1987) y Stram and Lee (1994) vieron
que si y se puede particionar en subvectores independientes, y el número de subvectores
73
terapia 1 terapia 3 vs 1
5
160
terapia 2 terapia 2 vs 1
terapia 3
0
140
Altura (en cm)
Diferencia
-5
120
-10
-15
100
-20
5 10 15 5 10 15
Edad Edad
Figura 21: Curvas estimadas para las medias poblacionales (izquierda) y curvas de contraste
con intervalos de confianza (derecha)
tiende a infinito, (5.6) se distribuye asintóticamente como 12 χ2q + 21 χ2q+1 , donde q es el número
de efectos bajo la hipótesis nula. Sin embargo, esta suposición no es cierta en este tipo de
modelos semiparamétricos y en algunos casos esta aproximación puede no ser buena. Crai-
niceanu et al. (2003b) (Crainiceanu et al. (2002)). Crainiceanu et al. (2003b) derivó el caso
en el que se contrasta una regresión polinómica frente a una alternativa modelada mediante
P-splines con un único parámetro para la varianza, y Crainiceanu et al. (2003a) estudio el
caso en el que hay varios componentes de la varianza. Estos autores también sugieren el uso
de simulaciones para determinar la distribución del estadı́stico del test bajo la hipótesis nula.
La idea es la siguiente: se estiman los parámetros del modelo bajo la hipótesis nula, entonces
se simula la distribución del test de la razón de verosimilitud bajo la hipótesis nula para esos
parámetros. Crainiceanu et al. (2003a) da un método rápido para las simulaciones en algunos
casos, sin embargo, la complejidad de estos algoritmos aumenta linealmente con el número de
individuos y con la complejidad del modelo, lo que hace que sea computacionalmente inviable.
Vamos a justar dos modelos anidados con 5 y 6 parámetros de la varianza a los datos
74
de leucemia, son los modelos (5.3) y (5.5) pero incluyendo interacción entre curva y factor:
yij = fzi (xij ) + ai1 + ai2 xij + εij ,
Nuestro interés en el análisis de estos datos son los efectos de los tratamientos en la al-
tura a lo largo del tiempo y las respuestas individuales al tratamiento.
La Figura 21 muestra las curvas estimadas para la media poblacional de los tres grupos. Se
puede apreciar que todos los grupos siguen el mismo patrón, pero la niñas que no recibieron
radiación (tratamiento 1) son más altas que las de los otros dos grupos. En particular, este
grupo es significativamente más alto que los demás cuando las niñas llegan a la adolescencia.
Para comparar las tres curvas, reajustamos el modelo con una sola curva para la media; la
hipótesis nula serı́a:
H0 : γjl = 0 j = 0, 1 l = 1, 2, 3 and σw2 = 0
para γjl y σw2 definidas en (5.5). Comparamos −2 log(RLRT)=34.62 con el percentil 90 de
1 2
χ + 12 χ23 , 5.528. Los resultados son claramente significativos, lo que indica que la altura
2 2
media de la niñas se ve afectada por la terapia recibida.
El panel derecho de la Figura 21 muestra fˆ2 (xij ) − fˆ1 (xij ) y fˆ3 (xij ) − fˆ1 (xij ) e indica que
la altura de las niñas que reciben radiación convencional (terapia 2) es menor, a cualquier
edad, que la de la niñas que no reciben radiación (terapia 1).
Para contrastar si la respuesta individual a las terapias es lineal, compararemos los mo-
delos :
yij = fzi (xij ) + ai1 + ai2 xij + ij
yij = fzi (xij ) + gi (xij ) + εij
lo que equivale a
H0 : σv2 = 0 vs. H1 : σv2 > 0.
De nuevo, serı́a preferible utilizar simulaciones , sin embargo, dada la complejidad del mo-
delo comparamos el valor de −2 log(RLRT)=453.004, en este caso con el percentil 90 de
1 2
χ + 21 χ21 , 1.642. Los resultados indican claramente que la desviación de cada niña respecto
2 0
de la media de la población necesita ser explicada de forma no-paramétrica.
La Figura 22 muestra los efectos aleatorios estimados correspondientes a las curvas indi-
viduales del modelo (5.5), donde se aprecia que los efectos para algunas niñas son claramente
no-lineales.
75
20
10
Efectos aleatorios
0
−10
−20
5 10 15
edad
La Figura 23 muestra como las curvas medias de las terapias no representan de forma ade-
cuada la altura individual de las niñas, mostrando la pérdida de información que tendrı́amos
sobre las trayectorias individuales si no hubiéramos incluido las curvas individuales en el
modelo.
Otra posibilidad es utilizar la función anova, aunque no debemos tener en cuenta el p-valor
ya que el test es aproximado. Por ejemplo:
anova(model4,model5)
esta función nos da también el valor del AIC o BIC que podemos utilizar para elegir el
modelo.
4. Datos correlados
En esta sección vamos a utilizar los datos que aparecen en Pandit and Wu (1983) y que
están en el fichero madera.txt, corresponden a 320 medidas tomadas en la superficie de un
bloque de madera, las medidas corresponden a la profundidad de las muescas que aparecen
en la madera cuando se pule con una piedra circular. La Figura 13 muestra como cambia el
tamaño de la muesca con relación al radio de la piedra.
76
160
160
160
Altura (en cm)
140
140
120
120
120
100
100
100
5 10 15 5 10 15 5 10 15
Edad Edad Edad
160
160
160
Altura (en cm)
140
140
120
120
120
100
100
100
5 10 15 5 10 15 5 10 15
Edad Edad Edad
Figura 23: Gráficos de curvas individuales de 6 niñas (lı́nea continua) con I.C. al 95 % junto
con la curva media del grupo (lı́nea discontinua).
Pandit and Wu (1983) asumieron que la tendencia era a priori circular y utilizaron 3 paráme-
tros (dos para el centro y uno para el radio) para ajustarla, e iteraron entre la estimación de
esta tendencia y la estructura de los errores. Con el uso de los P-splines es posible flexibilizar
la estructura de la tendencia y estimar simultáneamente ambos efectos (algo que es muy
difı́cil si no se utiliza la representación de los P-splines como modelos mixtos). Comenzamos
por ajustar un modelo de suavizado, ignorando la estructura de correlación en los datos:
cor.gamm=gamm(profundidad~s(distancia, k=40, bs="ps",m=2))
La Figura 24 muestra como el ignorar la estructura de correlación tiene dos efectos: una
curva que no es suave y unos residuos que no son incorrelados. Para solucionar el problema
podemos introducir una estructura de autocorrelación en el modelo, por ejemplo un AR(1)
y un AR(2).
Id=factor(rep(1,320))
cor1.gamm=gamm(profundidad~s(distancia, k=40, bs="ps",m=2),
correlation=corARMA(form=~distancia|Id,p=1,q=0))
cor2.gamm=gamm(profundidad~s(distancia, k=40, bs="ps",m=2),
correlation=corARMA(form=~distancia|Id,p=2,q=0))
Ahora vemos en la Figura 15, como al asumir un proceso AR(2) para el término de error,
es posible separar la correlación a corto plazo y la tendencia global, y no hay restos de
77
120
110
100
profundidad
90
80
70
distancia
anova(cor.gamm$lme,cor1.gamm$lme,cor2.gamm$lme)
Model df AIC BIC logLik Test L.Ratio p-value
cor.gamm$lme 1 4 1853.437 1868.510 -922.7185
cor1.gamm$lme 2 5 1660.112 1678.954 -825.0561 1 vs 2 195.32478 <.0001
cor2.gamm$lme 3 6 1643.742 1666.352 -815.8711 2 vs 3 18.37015 <.0001
Pregunta:
5. Datos multidimensionales
5.1. Ejemplo 1: Tendencias espaciales en experimentos de campo
Las funciones spm y gamm de las que hablamos en el capı́tulo anterior, permiten ajustar
modelos bidimensionales, sin embargo spm asume un mismo parámetro de suavizado en
78
Series cor1.gamm$gam$resid
1.0
20
0.8
10
0.6
s(distancia,27.02)
0.4
ACF
0.2
−10
0.0
−20
−0.2
−30
distancia Lag
Figura 25: Curva ajustada (izquierda) y autocorrelación de los residuos del modelo (derecha).
ambas direcciones, lo cual puede dar problemas en algunas situaciones. Vamos a ver cómo
se pueden ajustar con R los datos sobre los experimentos de campo llevados a cabo en el
Scottish Crop Reserach Institute. En el fichero SCRI.txt se encuentran los datos, y en el
fichero SCRI.R se ajustan, primero un modelo aditivo, y un modelo bidimensional:
fit.SCRI=gamm(Produccion~s(Fila,bs="ps",m=2)+s(Columna,bs="ps",m=2))
fit.SCRI2=gamm(Produccion~te(Fila,Columna,bs=c("ps","ps"),m=2))
En el caso bidimensional, la especificación del modelo cambia, en este caso utilizamos la
función te(), que indica que vamos a hacer el producto tensorial de las bases, además bs=
será un vector de longitud igual a la dimensión del modelo. Las Figuras 12 y 13 del capı́tulo
anterior muestran las diferencias que hay entre el ajuste de ambos modelos y cómo el modelo
aditivo no es apropiado.
> anova(fit.SCRI$lme,fit.SCRI2$lme)
Model df AIC BIC logLik Test L.Ratio p-value
fit.SCRI$lme 1 6 73.70450 99.67212 -30.852248
fit.SCRI2$lme 2 7 20.12908 50.42464 -3.064541 1 vs 2 55.57541 <.0001
Tanto el AIC como el BIC confirman claramente que el modelo bidimensional es más apro-
piado.
79
Series residuos
1.0
●
●
120
●
● ●
●●
● ●●●
●●
●
0.8
● ● ● ●●
● ●
110
●● ● ● ● ●● ● ●
● ● ● ● ● ●
● ●● ● ●
● ●
●● ● ● ● ●● ● ●● ●
●●●
●● ● ● ●●● ● ● ● ●● ●●●● ●● ●● ●● ●
● ●● ●●● ● ● ● ● ●
●●● ● ●●● ●
● ●●
● ●●● ● ●●
● ●●● ● ● ●
0.6
●●●● ● ● ●● ● ●● ● ● ●● ●
●● ● ● ●●● ●● ●●● ●
100
profundidad
● ●●●● ● ●
● ●● ●●●
●
● ●● ● ●●● ●
●●● ●
● ●●
●
●● ●
● ● ● ● ●
● ●● ● ● ●● ●
ACF
● ●
● ●● ●●
0.4
● ●
●● ●
●● ● ●
90
●●
●● ●●
●●● ● ●
●●●●●● ● ●
●● ● ●●
●●
●● ●
0.2
● ● ●
●● ●●●●● ●
●● ●●
● ●●
80
●●● ● ●
●●
●●
● ●
●●●
● ● ●
●
● ● ●●
0.0
● ●
● ●
●
70
●
●●
●
distancia Lag
Figura 26: Curva ajustada (izquierda) y autocorrelación de los residuos del modelo con
autocorrelación (derecha).
Este tipo de modelos bidimensionales también se pueden ajustar sin necesidad de recurrir la
función gamm(), simplemente, se calculan las matrices correspondientes al modelo mixto, se
programa la función de verosimilitud (REML) y se utiliza la función optim() para estimar
los parámetros de suavizado, sin embargo, la matriz que corresponde la parte aleatoria del
modelo es de dimensiones elevadas (al ser producto de Kronecker de dos matrices), por lo
que es necesario utilizar algoritmos que usan la estructura de enrejado de los datos para
reducir los cálculos (ver Currie et al. (2006)).
mortalidad=read.table("mortalidad.txt",header=TRUE)
80
Figura 27: Datos sobre mortalidad en el Reino Unido
attach(mortalidad)
library(mgcv)
off=log(exposicion)
Como los datos corresponden al número de muertes, estamos en el caso de un modelo lineal
generalizado con distribución de Poisson, por lo tanto, estarı́amos utilizando los resultados
de la sección 4.1; además hemos de tener en cuenta el número de pólizas existentes en ese
momento, es decir, buscamos un modelo para la tasa de mortalidad:
log(y/e) = f (x, y) ⇒ log(y) = log(e) +f (x, y)
| {z }
of f set
fit=gam(muertes~s(edad,k=20,bs="ps",m=2)+s(periodo,k=20,bs="ps",m=2)+offset(off),
select=TRUE,method="REML",family="poisson")
summary(fit)
Parametric coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -4.771085 0.008522 -559.9 <2e-16 ***
---
Approximate significance of smooth terms:
edf Ref.df Chi.sq p-value
s(edad) 17.97 19 2361941 <2e-16 ***
s(periodo) 18.50 19 65936 <2e-16 ***
81
Este modelo ajusta la misma curva para todas las edades y la misma para todos los
años. La Figura 28 muestra la superfice (aditiva) a la que da lugar este modelo.
linear pred
ictor
do
rio
pe
edad
Figura 28: Curvas ajustadas para edad y periodo con un modelo aditivo.
En la Figura 29 se muestra la curva ajustada para el periodo para dos edades distin-
tas, vemos claramente que no es apropiado asumir que el descenso en la mortalidad
a lo largo de los años es el mismo para todas las edades. En el caso de los 34 años,
el modelo no es capaz de ajustar correctamente el hecho de que en los últimos años
el comportamiento de los jóvenes haya ralentizado el descenso de la mortalidad. En el
caso de los 60 años, el modelo tiende a subestimar la mortalidad en los primeros años
y a sobrestimarla recientemente.
En las secciones 1 y 2 de este capı́tulo, vimos como podı́amos ajustar los modelos
utilizando la función lme(), en el caso de datos no Gaussianos, lo equivalente es uti-
lizar la función glmmPQL(), cuya estructura es similar a la anterior, en este caso la
estimación de los parámetros está basada en Penalized Quasi-Likelihood. En el fichero
mortalidad2.R se encuentra el código que ajusta el modelo anterior mediante esta
función.
fit2=gam(muertes~te(edad,periodo,k=c(10,10),bs=c("ps","ps"),m=2)+offset(off),
select=TRUE,method="REML" ,family="poisson")
summary(fit2)
Parametric coefficients:
Estimate Std. Error z value Pr(>|z|)
82
-6.4
-6.6
-4.2
-6.8
-4.4
-7.0
log(mu)
log(mu)
-4.6
-7.2
-4.8
-7.4
-7.6
-5.0
Edad: 34 Edad: 60
-7.8
1950 1960 1970 1980 1990 2000 1950 1960 1970 1980 1990 2000
Periodo Periodo
Figura 29: Curva ajustada periodo con un modelo aditivo para dos grupos de edad.
vis.gam(fit2,view=c("edad","periodo"), phi=15)
La Figura 30, muestra la superfice ajustada en este caso, se pueden apreciar las dife-
rencias sobre todo en las edades tempranas y en los ancianos. En la Figura 31 vemos
como ahora el modelo ajusta correctamente las curvas para las distintas edades.
Por último, la Figura 32 nos da una idea sobre el ajuste del modelo. La figura de la
izquierda muestra la relación entre el número de muertes y los valores ajustados, y la
figura de la derecha muestra el gráfico de los valores ajustados frente a los residuos de
Pearson: vemos como hay unos cuantos residuos elevados que corresponden a valores
predichos próximos a cero, pero en general el ajuste es bastante bueno.
5.3. Ejercicio: Infección post-operatoria
Vamos a trabajar con los datos POI.txt (cortesı́a de M. Xosé Rodrı́guez Álvarez, Univer-
sidad de Vigo). Los datos correponden a pacientes sometidos a una intervención quirúrgica,
y contienen los registros relativos a factores preoperatorios y operatorios relacionados con la
infección postoperatoria (POI). Las variables son:
83
linear pred
ictor
do
rio
pe
edad
Figura 30: Curva ajustada periodo con un modelo bidimensional para dos grupos de edad.
-6.4
-4.2
-6.6
-6.8
-4.4
log(mu)
log(mu)
-7.0
-4.6
-7.2
-4.8
-7.4
-5.0
Edad: 34 Edad: 60
-7.6
1950 1960 1970 1980 1990 2000 1950 1960 1970 1980 1990 2000
Periodo Periodo
Figura 31: Curva ajustada con un modelo bidimensional para dos grupos de edad.
84
1200
●
● ●
●●
● ●
● ● ●
● ● ●●
●
6
●●
●
● ● ●
●● ●
1000
● ●● ●
●●● ●● ● ●
● ●● ●
●●
●
●
● ●●●●●
● ●●
●
●●●●
●●
●
●●●●
●
● ●
● ●
●
●●●
●●
●
●●
●● ●●
●●●● ● ●
● ●
●●
●
●● ● ● ● ●● ● ●
● ●●●
● ●
●●
●
●
●
●●
●●● ●●
● ●
● ●●
●● ●
●●
●●●
●●● ● ● ● ● ● ● ●
●●●●●
●● ●
4
●● ●● ●● ●●●
●
● ● ● ● ●● ●
● ●●
●●
●
●●●●
●
●●●
● ●●● ● ●● ● ●
●●●
●
●
●●●
●●
●●●●●
●
● ●●
● ● ● ●● ● ●●● ● ●● ● ● ● ● ● ● ● ●
800
●● ●●
●
●●●●●●● ● ● ● ●●
●● ●●● ●●●●●
● ● ● ●● ●
●
●
●
●●●
●
●
●
●
●
●●●●●
●●
●● ●● ● ● ●
●● ● ● ●● ●● ● ● ●●●●●● ● ●
●
● ●● ●
●●●
●
●
●
●
●
●●
●
●●
●●●●●●● ●
● ●●● ●● ● ● ●● ●● ●●
● ● ● ● ●● ●
●●
● ●
● ●● ● ●● ●● ● ● ●● ●● ● ●●● ● ● ●● ● ●● ●● ●
●● ●●
●●
●
●
●●●
●
●●
●●●
● ●
● ●●●●● ●● ●●●● ●● ● ●● ●●●
●
●
●●
●●● ● ●
● ●● ●●●●
● ●
●● ●●●
●●
● ●
●●●
●
●
●●● ●●● ●●●
● ● ●●●● ● ●
●● ●
●●●●● ●●●● ●
● ●●● ●● ●● ● ●
●●● ●● ●
●
●●
●●
●● ●
●●●
●
● ● ● ● ●● ●● ●
●●●● ● ● ● ● ●●
● ●●
●● ●● ●
● ● ● ● ● ● ● ● ● ●● ●●
●●●●● ●●
●●
●
●
●
●
●●●●●●
●● ● ● ●●● ●
●●
● ●● ●●●●● ● ●●● ●●●●● ●●● ●
●
●●● ●●●●
●
●●●●●●
● ●●●● ●
● ●
●●● ●●●● ●●●●●● ● ●●●●●●● ●● ● ● ●●● ●
● ● ●● ●●● ● ●●● ● ●● ●●●●
2
●●
● ●
● ● ●●●● ●● ●● ● ● ●●● ● ● ● ●●● ●
● ● ● ●● ●● ●●● ●
●●
●●
●● ● ●
●●
●●
● ●
●
●●● ● ● ●● ●● ●
●●● ●● ●●●● ● ●
● ●●●
●●●●●●● ●
●
●
●●
●●● ●
● ●
●●● ●
●●● ●●
● ● ● ●● ● ●
●
residuos
●● ●● ●● ●● ● ● ● ● ●● ● ● ●●● ● ● ●
muertes
● ●●●●●● ●●● ● ●
● ● ●● ●
●●●● ● ● ●●●
●● ●●●●●●
●● ● ● ●
● ●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●● ●● ●
●● ●● ●
●
●
●●
●
●●
●●
●
●
●
●●
● ●●
●
●
●●
●
●
● ●
●●●
●
●●
●●
●
●
●
●
●
●
●●●●●
●●●
●
●●
●●
●
●
●●
●
● ●●
●
●
●
●
●●● ●
● ●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●●
●● ●
●●
●●
●
●●
●
●
●
●●● ●●●● ●●
●● ●● ●● ●● ●● ●●
● ●●● ● ●
600
●●
● ●
●
●●
●
●●
●
●●●
● ●
●●● ●●●● ●● ●●●
●
● ● ●
●● ●
●●●●●
●
●●
●●
● ●
●●
● ●● ●● ●● ● ●●●●●
●●
● ●●
●
●●
●
●
●
●●
●
●●●●●
● ● ●● ● ● ● ● ● ● ● ●●
●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
● ●
●
● ●●
●
● ●
●
●
●
●
●●●●●
●
●●
●●
●●
●
●
●
●●●
●
●●●●
●
●
●●
●
●●●
●
●
●
●●
●●●●● ●●
●●● ●●
●●
●
●
●●●
●
●
●●●●●
●
●●●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●●●
●
●
●●
●
●●●●●●
● ● ●
●●
●●
●●
● ●●●●●●●● ●●
●● ●●
●●
●
●
●
●
●●
●
●●● ●●●
●
●●●
●
●●
●●● ● ●●
●●●
●●●
●● ● ●●●●
●● ●●
●
● ●●●
● ●●
●●●
●●●
● ● ●
● ●●
●●● ●
●●
●● ●
●●●●
●●
●●●
●●
●●
●●
●●●
●●
●● ●
●
●● ●● ●● ●● ●
●●● ●
●
●●●● ●
● ●●● ● ●●
●● ●
●●● ●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●● ●●
●●●
●●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●●
●
●●●
●● ●
●●
●●
●●
●●●
●●●
●
●
●
●
●
●●●●
●
●●●●
●
●
●●
●●●●●
●
●
●
●
●
● ●
●
●
●●
●●
●●●●
●
●
●●●
●●
●
●
●●●●
●
●●
●
●●
●
●
●●
●●
●
●
●●
●●●
●●●●●
●
●
●
●●
●
● ●
●● ●
●
●
● ●
●●●●● ●
●●●● ●●●●●●
●
●●●●
●● ●
●● ● ●● ●● ●
●
● ●
●●
● ●●●
●●
●●
●● ●
● ●● ●●●●●●
● ●
●●
●●●
●●●
●●
●●●●
●● ●
● ●
●●●● ● ● ●
● ● ●
●●
●
●
●●
●●
●●
●
●
●
●
●●
●
●
●
●●
●●● ●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●●
● ●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
● ●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●●
●●
●
●
●●●
● ●
●
●
●●
●
●
●
●
●●
●●
● ●
●
●●●
●
●
●
●●●
●
●
●
●
●● ●
●●
●
●●
●
●●●
●
●
●
●
●
●
●
●●●
● ●●
●●
●
●●
●● ●
●●●
●●●
● ●● ●●●● ●
●●● ●●
● ●
●●●
● ●●
●●
●●●●●
●
●●●●
●●● ●●
●● ●
●●
●●●●●● ●●
●●●●
●●
●●●●●●●
●●●●
● ●
●
●●●●●
●●● ● ●● ● ●●● ●●●●●
● ●
●●●
●●● ●
● ●●●●●
●
● ●
● ● ●
●● ●●
●
● ●●
●●● ● ●
●●● ●
●●●
●●
●●●●●
●●
●●
● ●
●●●●●●●● ●●●●● ● ●
●●
●●
●●●●
●●
●●
●
●● ●
● ● ●● ● ●
●●● ●● ●● ●●● ● ●● ●●●
●●●
●
●●●●●
●
●●
●
●●
●●
●●
●● ●●●
●● ●●
●●●
●●●
●●
●
●●
●● ●
●●
●●●
●●●
●●
●●
●● ●
● ●● ●
●
●●●
●●●
●●
●●●
● ●●●
●●● ●
●●●
●
●●
●
●
●●●
●●●
●
●
●●
●
●●●
●
● ●
●●
●●●●● ●● ●●●
●
●
●● ●●●
● ●● ●● ●
●●●
●● ●●
0
●●
● ●●●●● ●●● ●
●●●
●●
●●● ● ● ●●●●
●●
● ●
●●
● ●●●● ● ● ● ●● ● ● ● ● ● ●● ● ●●●●● ●●● ●
●
●
●
●
●
●●●
●
●●●
●
●
●●
●
●
●
●
●
●
●●
●● ●
●
● ● ●
●●
●
●
●●
● ●
●●
● ●
●●
●●
●
●●
●
●
●
●
●
●
●●●●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
● ●●
●
●
●
●●●●●
●
●●
●
●
●●
●●
●
●●●
●
●●●●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●●●
●
●●●
●
●●
●●
●
● ●●
●●
● ●
●
● ●●
● ●● ●●●●●
●
●
●
●●
●
●
●● ●●●●
● ● ●●
●
●● ●
●
●
●●
● ●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●
● ●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●●
●●
●●
●●
●
●
●●
●
●●
●●
●●●
●
●
●●
●●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●●
●
●●
●●
●●
●
●
●
●
●●●●
●● ●
●
●
●
●●
●
●●●
●
●
●
●●●●
●●
●
●
●●
● ●
●
●●
●
●
●
●●
●●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●● ●
●
●
●
●●
●●
●●●●●
●●●
●
●
●●
●● ●● ● ●●●
●●●● ●● ●●●
●
●●● ●●
●●
●
● ●
●●
●
●●●
●●
●
●● ●
● ●●●●
● ●●● ●●
●●
●●●●● ●
●●
●●●●
●
●●●●●
●
● ●●
●
●●●●
●● ●
●● ●
●
● ●
●
●●
●●
●●●●
●●
●●●
●●
●●
●●●●●
● ●
●
● ●●
●
●●
● ●
● ● ●● ●●
● ●
●
● ● ● ●● ●●●● ● ●●●
●●
●●
●
●●
●● ●
●●● ● ●● ●●●
●● ●●
●●● ● ●● ● ●●●●●●●
● ●●
● ●● ● ●
●● ● ● ●
●●● ●●
● ● ● ● ● ● ●
● ●● ●●● ● ●
400
●●
●●●●
●●
●
●● ● ●
● ● ● ● ● ●
● ● ●● ●● ● ●
●●● ●●
●●
●●●
●●
●
● ● ● ●● ●●● ● ●●● ●● ●●●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●●
●●●
●●
●●
●●
●
●
●
●●●●
●
●
●
●
●
●●
●●
●●
●●
●
●
●●
●●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●●
●
●
●●
●
●
●●●
●●●
●●●●●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●●
●●
●
●
●●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●●
●
● ●
●●●
● ●
●
●●●●●
●
●●●
●
●
●●
● ●
●
●●●
●●●●
●●●●●
● ●
●
●●●●●●
●● ● ●●
● ●●●
● ●
●●●●● ●
●
● ●
●●●
● ● ●● ● ● ●●●● ●●
●
●● ●●
●●
●●
●●● ●● ● ●● ●
●●● ●● ●●
● ●● ●●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●●
●
● ● ●●
●●
●●●
●
●● ●●●
●●●
●●
●
●
●
●●●●
●
●
●
●
●●●●●
●
●●
● ●
●●
●●
●
●
●●
● ●●
●●
●●
● ●
●●
● ●
●●
●
●●
● ●
●●
●
●●
●●●
●●
●
●●
● ●
●
●●
●●
●
●
●●
● ●
●●
●
●●
●
●●
●
● ●
●●
●●●
●●
●
●●● ●
●●●
●●
●
●●●
●●●● ●●● ●
●●●●● ●● ●
●●● ●●●● ●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●●●●
●●
●●
●●
●
●
● ●●
●● ●
●
●● ●●
●
●●●
●●
●●
●●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●●
●
●●
● ●●●
●
● ●
●●
●
●●
●
●●
●
●●
●
●●●
●●●●●
●●
●● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●●●● ● ●
●● ●
●
●●
●
●
●●●●●
●●● ●●
●● ●●● ●●● ● ● ●●
●
●●
●●
●●
●
●
●●
●●●
●
●
●●
●
●
●
●●
●
●●
●●● ●●●●
●●
● ●●●● ●●
● ●
● ●●
● ●●● ●● ●
● ●
●●● ● ●
● ● ●
●
●● ● ●
●
●
●●
● ●● ● ●●●●
●● ●
●● ● ●
●●
● ● ●
●●●●● ● ●
●
●●
●
●●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●●
●● ●
●
●●
●●●
● ●●●●●● ●● ●
●●●
●●
●
●●●● ● ●● ● ●
● ●●●●● ●●
●●●● ●
●●
●●●
●
● ●●
●●
● ●
●●
●● ●●●●●●● ● ● ●●
●●●●
●
●● ●●●●● ●
●
●●
●●
●
●●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●●
●●
●
●●
● ●●●●
● ●●● ● ● ● ● ●●●
●●
● ●●●
● ●
●●●● ●● ●●
●●
● ● ● ●●●●● ●
● ●●●● ●● ● ● ●
●● ● ● ●
−2
●●●
●●●
●
●● ● ●●●●● ●● ●● ●● ●●●● ● ● ● ● ●●● ● ●● ● ●●● ●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●● ● ●
●●
●●
●●● ●
●
●●
●●●●●●● ●
●
●●
●
●
●● ●●●
●
●
● ●●●
● ●
● ●● ● ●● ●● ●
●●●●
●
●●
●●
●● ● ●● ●●● ●● ● ● ●
● ●
●
●●●
●
●●
●
●●
●●
●
●●
●●● ● ● ●● ● ● ● ●
●● ●● ● ● ●●● ● ●● ●● ●●
●●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●●
●● ●●●● ●
●● ●
●●●● ● ●●●●
●● ●● ●●
●●
●● ●● ●●●●● ●●● ●
● ●
●●●●● ●
● ● ● ●
● ●● ●
●●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●●
● ●
● ● ●●● ● ● ●●●
●● ●● ●● ● ● ● ● ● ●●
●●
●
●●
●
●
●●
●
●
●●
●
●●
●
●●
●
●●● ● ●● ● ● ● ●
● ● ● ●●●● ● ●● ●
200
●
●
●
●●
●●
●●
●●
●
●
●
●●
●
●●
●
●
●●
●
●●
● ● ● ●●●● ●●●●●
●
●
●
●●
●●
●
●
●●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●●
●● ● ●● ●● ●●● ●● ●● ●● ● ● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
● ● ●● ● ●●●●● ●●●● ● ● ●
● ●
● ● ● ● ●
●
●
●●
●
●●
●●
●
●
●●
●
●●
●
●●
●●
● ●
●
●
●
●●
●
●
●
●●
●
● ●
● ● ●●● ●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●●
●●
● ● ● ● ● ● ● ●
●●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●●
●● ●● ● ● ●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●● ● ●
● ●
●
●●
●
●●
●●
●
●●
●● ●
−4
●●●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●●
● ● ●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
● ● ●
0
3. En base al mehor modelo anterior, vamos a evaluar el efecto de las variables gender y
edad
85
5.4. Ejercicio: Kiphosis data
Los datos (kiphosis.txt) corresponden a 81 niños que han tenido cirugı́a correctora de
espalda para eliminar la cifosis (kyphosis). Las variables son:
kyphosis: Es la variable respuesta, binaria, que indica la presencia o ausencia de
kyphosis después de la operación.
2. Utiliza la función mmps de la librerı́a car para hacer gráficos marginales. Estos gráficos
representan la probabilidad de presencia de kyphosis para cada una de las covariables.
En este caso, los datos no están en un enrejado, por lo que la base de b-splines no es el
producto de Kronecker de las bases en cada dimensión sino llamado producto de Kronecker
por filas: B = B 2 B 1 , donde cada fila de la matriz B es el producto de Kronecker de las
filas correspondientes de las bases individuales. Utilizamos nuevamente los resultados de la
sección 4 y utilizamos la representación de los Psplines como modelos mixtos:
η = Xβ + Zα α ∼ N (0, G)
86
Este modelo recibe el nombre de PRIDE (“Penalized Random Individual Dispersion Ef-
fects”).
fit.lip=gam(y~AFF+te(lat,lon,bs=c("ps","ps"),k=c(6,8),m=2)+offset(off),
family="poisson")
fit.lip2=gam(y~AFF+te(lat,lon,bs=c("ps","ps"),m=2)+offset(off),
random=list(dist=~1),family="poisson")
Suavizado Espacial : Xβ
β + Zα
Suavizado espacial + Efecto aleatorio : Xβ
β + Zα
α + γI
1.5
1.5
1.0
1.0
0.5
0.5
0.0
0.0
−0.5 −0.5
−1.0 −1.0
Figura 33: Ajuste de los dos modelos propuestos (en la escala del predictor lineal)
y.new=y
y.new[y==0]=10^-4
ajustados=fit.lip$lme$fitted
ajustados=ajustados[,2]
mu=exp(ajustados)*exp(off)
Dev=sum(2*y.new*log(y.new/mu)-(y.new-mu))
Df=sum(fit.lip$gam$edf)
AIC=Dev+2*Df
87
El valor de AIC es 98.68 en el modelos sin efectos aleatorios individuales y 40.64 en el modelo
con efectos aleatorios para cada municipio y el valor de σγ2 = 0,125.
En la Figura 33 vemos la diferencia entre el ajuste, sin y con los efectos aleatorios individua-
les, la introducción de estos efectos permiten tener en cuenta las caracterı́sticas individuales
de cada municipio; estas caracterı́ticas pueden ser bastantes distintas a las de sus municipios
vecinos, y por tanto no se captarı́an en un modelo donde sólo hubiera suavizado.
88
Bibliografı́a
Brumback, B. and Rice, J. (1998). Smoothing spline models for the analysis of nested and
crossed samples of curves. Journal of the American Statistical Association, 93:961–994.
Crainiceanu, C., Ruppert, D., Claeskens, G., and Wand, M. (2003a). Likelihood ratio test
of polynomial regression against a general non-parametric alternative. submitted.
Crainiceanu, C., Ruppert, D., and Vogelsang, T. (2002). Probabilty that the mle of a variance
component is zero with applications to likelihood ratio tests. submitted.
Crainiceanu, C. M., Ruppert, D., Claeskens, G., and Wand, M. (2003b). Likelihood ratio
test of polynomial regression againts a general nonparametric alternative. submitted.
Currie, I., Durbán, M., and Eilers, P. (2004). Smoothing and forecasting mortality rates.
Statistical Modelling (en prensa).
Currie, I., Durbán, M., and Eilers, P. (2006). Generalized linear array models with applica-
tions to multidimensional smoothing. Journal of the Royal Statististical Society, Series B,
68:1–22.
De Boor, C. (1977). Package for calculating with B-splines. Journal of Numerical Analysis,
14:441–472.
Dierckx, P. (1993). Curve and surface fitting with splines. Clarendon, Oxford.
Durbán, M., Currie, I., and Eilers, P. (2002). Using P -splines to smooth two-dimensional
P oisson data. In Stasinopoulos, M. and Toulouimi, G., editors, Proceedings of the 17th
International Workshop on Statistical Modelling, pages 207–214, Crete, Greece.
Eilers, P. and Marx, B. (1996). Flexible smoothing with B-splines and penalties. Statistical
Science, 11:89–121.
89
Hastie, T. and Tibshirani, R. (1987). Generalized additive models: Some applications. Jour-
nal of the American Statistical Association, 82:371–386.
Kneib, T. (2005). Mixed Model Based Inference in Structured Additive Regression. PhD
thesis, Department of Statistics, Ludwig-Maximilians University, Munich.
Laird, N. and Ware, J. (1982). Random-effects models for longitudinal data. Biometrics,
38:963–974.
Marx, B. and Eilers, P. (1998). Direct generalized additive modeling with penalized like-
lihood. Computational Statistics and Data Analysis, 28:193–209.
McCullagh, P. and Nelder, J. (1989). Generalized Linear Models. Chapman & Hall, New
York.
Nelder, J. and Wedderburn, R. (1972). Generalized linear models. Journal of the Royal
Statistical Society, Series A, 135:370–385.
Ngo, L. and Wand, M. (2004). Smoothing with mixed model software. Journal of Statistical
Software, 9(1).
Pandit, S. and Wu, S.-M. (1983). Time series and system analysis with applications. Wiley,
New York.
Rice, J. and Wu, C. O. (2001). Nonparametric mixed effects models for unequally sampled
noisy curves. Biometrics, 57:253–259.
Ruppert, D. (2002). Selecting the number of knots for penalized splines. Journal of compu-
tational and Graphical Statistics, 11:735–757.
Ruppert, D., Wand, M., and Carroll, R. (2003). Semiparametric Regression. Cambridge
Series in Statistical and Probabilistic Mathematics. Cambridge University Press.
Self, S. and Liang, K. (1987). Asymptotic properties of maximum likelihood estimators and
likelihood ratio tests under nonstandard conditions. Journal of the American Statistical
Association, 82:605–610.
Speed, T. (1991). Comment on ”BLUP is a good thing: The estimation of random effects”,
by robinson, g.k. Statistical Science, 6:15–51.
Stram, D. and Lee, J. (1994). Variance components testing in the longitudinal mixed effects
model. Biometrics, 50:1171–1177.
Verbyla, A., Cullis, B., Kenward, M., and Welham, S. (1999). The analysis of designed
experiments and longitudinal data using smoothing splines. Applied Statistics, 48:269–
312.
90
Wand, M. (2003). Smoothing and mixed models. Computational Statistics, 18:223–249.
Wood, N. (2003). Thin plate splines regression. Journal of the Royal Statistical Society,
65(1):95–114.
Wood, S. (2006b). On confidence intervals for gams based on penalized regression splines.
Australian and New Zealand Journal of Statistics, 48:445–464.
91