Sie sind auf Seite 1von 92

Métodos de suavizado eficientes con P-splines

Marı́a Durbán

Universidad Carlos III de Madrid


Índice general

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

3. Splines con penalizaciones (P-splines) 23


1. Bases y Penalizaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.1. Bases y nodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.2. Penalizaciones y coeficientes . . . . . . . . . . . . . . . . . . . . . . . 28
1.3. Estimación de parámetros y grados de libertad . . . . . . . . . . . . . 31
1.4. Selección del parámetro de suavizado . . . . . . . . . . . . . . . . . . 32
2. P-splines como modelos mixtos . . . . . . . . . . . . . . . . . . . . . . . . . 33
3. P-splines para datos multidimensionales . . . . . . . . . . . . . . . . . . . . 35
3.1. P-splines multidimensionales como modelos mixtos . . . . . . . . . . 37
4. Modelos additivos generalizados . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.1. Modelos aditivos generalizados con P-splines . . . . . . . . . . . . . . 40
4.2. Inferencia sobre las funciones suaves . . . . . . . . . . . . . . . . . . . 40

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

Un modelo lineal es deseable porque es simple de ajustar, se entiende fácilmente, y exis-


ten muchas técnicas disponibles para contrastar las hipótesis del modelo. Sin embargo, en
muchos casos, los datos no están relacionados de forma lineal, por lo que no tiene sentido
utilizar los modelos de regresión lineal.

Un modelo de regresión no-lineal clásico tendrı́a la siguiente forma:

y = f (Xβ) + 

donde β = (β1 , . . . βp )0 es un vector de parámetros, que han de ser estimados, y X es la


matriz que contiene las variables predictoras. La función f (.), relaciona el valor medio de la
variable respuesta y con las variables predictoras, y su forma está especificada a priori . Por
ejemplo, en muchos modelos biológicos, existe una dependencia de tipo exponencial:

f (Xβ) = eβ0 +β1 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

Exponentially varying weights of differences


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

Figure 13: Smoothing


Figura of simulated
1: Figura cortesı́a data (Splines,
de Paul Eilers (dots) with andpenalties,
knots and without2011)
exponentially
varying weights on the differences in the penalty. Upper: uniform weights; lower:
Ejemplo: Calidad del aire
varying weights. Parameters optimized with grid search and leave-one-out cross-
Los datos curresponden a medias de la calidad del aire en Nueva York de Mayo a Sep-
validation. Full line:
tiembre de 1979, fitted curve
Las variables son: (100 cubic B-splines, second order penalty); broken
line: true curve.
Ozone: Cantidad de ozono media en partes por billon entre las 13:00 y las 15:00 horas
en la Isla de Roosvelt

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

Partial for Wind


0

0
−20

−20

−20
−40

−40

−40
60 70 80 90 5 10 15 20 0 100 250

Temp Wind Solar.R

Figura 2: Gráfico de efectos lineales parciales

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)

Residuals vs Fitted Normal Q−Q


100

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

Fitted values Theoretical Quantiles

Figura 3: Gráficos de residuos

¿Qué nos dicen estos gráficos?.

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)

Figura 4: Histograma de datos originales y transformados

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
---

Residual standard error: 0.5086 on 107 degrees of freedom


Multiple R-squared: 0.6644, Adjusted R-squared: 0.655
F-statistic: 70.62 on 3 and 107 DF, p-value: < 2.2e-16

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?.

1. Modelos lineales generalizados


Los modelos lineales generalizados (GLMs) extienden el modelo lineal para acomodar las
variables respuestas que no siguen una distribución Normal, bajo un enfoque unificado. Es

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

1.5 2.0 2.5 3.0 3.5 4.0 4.5 −2 −1 0 1 2

Fitted values Theoretical Quantiles

Figura 5: Gráfico de residuos con los valores transformados

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.

Ejemplo de motivación: Experimento de toxicidad


El experimento intenta establecer la relación entre la concentración de un agente tóxico
(nicotina) y el número de insectos (mosca de la fruta) que mueren: Los datos siguen una

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

Cuadro 1: Datos del experimento de toxicidad

7
distribución Binomial

yi ∼ B(ni , pi ) E[yi ] = ni pi (xi ) V ar[yi ] = ni pi (1 − pi )

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

0.2 0.4 0.6 0.8

Figura 6: Gráfico de la concentración de nicotina frente al procentaje de animales muertos


y la recta ajustada.

Aquı́ hemos usado un modelo de regresión ordinario:

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.

1.1. La familia exponencial


Un concepto importante que unifica todos los GLms es la familia exponencial de
distribuciones . Todas las distribuciones pertenecientes a la familia exponencial tiene una
función de densidad (o de probabilidad) que se puede expresar de la siguiente forma:

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.

Componentes de un modelo lineal generalizado


En un modelo de regresión estándar:

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:

1. Componente aleatorio: y es un vector aleatorio procedente de una distribución que


pertenece a la familia exponencial y cuya media es µ.

2. Componente sistemático: es el predictor lineal η = Xβ.

3. La función link : es una función monótona, derivable que establece la relación entre
la media y el predictor lineal

η = g(µ) E(y) = µ = g −1 (η) (1.2)

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 θ

η = g(µ) = θ ⇒ g es una función link canónica

Hay muchas opciones par la función link.

Distribución Link
Normal η = µ (identidad)
P

Binomial η = ln 1−P (logistı́stica)
Poisson η = ln(µ) (logarı́tmica)
1
Exponential η=µ (recı́proca)
1
Gamma η = µ (recı́proca)

Cuadro 2: Funciones link más usadas en los GLMs

DISTRIBUCIÓN RESPUESTA EJEMPLOS


• Longitudes y pesos ( de peces, crustáceos, 
• La respuesta es continua
moluscos )
moluscos...)
Gaussiana • La distribución de los datos es 
• Diámetros (árboles, erizo de mar)
simétrica
• Temperatura, salinidad, altura de las olas,…
• La respuesta es continua (no 
• Abundancias expresadas como porcentaje.
negativa)
Gamma • Porcentaje de percebe por unidad de 
• la distribución de los datos es 
muestreo, cobertura algal,…
asimétrica
• Presencia de una especie 
• La respuesta es categórica (binaria) 
La respuesta es categórica (binaria)
Binomial (0=ausencia,1=presencia)
• Presenta 2 niveles de respuesta 
• Sexo (0=macho, 1=hembra),…
(0/1)
• La respuesta es discreta (0,1,2,…)
• Nº de capturas por mes.
• Recuento de un suceso en el tiempo
Recuento de un suceso en el tiempo, 
Poisson • Nº de individuos por unidad de muestreo.
espacio, volumen.
• Nº de individuos por hectárea,..
• Varianza=Media.

• 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) 

Figura 7: Distribuciones más comunes

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

donde Vi = V ar(yi ) = a(φ)b00 (θ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 ).

En la página web: http://halweb.uc3m.es/esp/Personal/personas/durban/esp/web/


GLM/GLM.html se encuentra el material de mi curso sobre GLM.

Ejemplo : Riesgo de infección post-quirúrgica


Utlizamos los datos del archivo POI.txt que contiene información de un estudio de sobre
el riesgo de infección postquirúrgica en pacientes con diabletes. Las variables son:

poi, presencia de infección

age, edad en años

gender, sexo

gluc, nivel de glucosa

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

50 100 150 200 250 300

gluc

Para comprobar si el nivel de glucosa es significativo:

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 ***

El modelo nos dice:



= e−2,5 + e0,009
1 − p̂
¿Cuánto aumenta la posibilidad de tener una infección al aumentar en 5 unidades la cantidad
de glucosa?

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

pero en muchas ocasiones el efecto de x puede tener una forma desconocida:

η = β0 + f (x)

Una primera aproximación serı́a utilizar regresión polinómica:

= β0 + β1 x + β2 x2 + . . . + βp xp

Ejemplo: datos de pretigio


El siguiente conjunto de datos contiene datos sobre el nivel de prestigio que tienen 102
profesiones en Canada en los años 70. Las variables son:

prestige: prestigio medio, con rango de 0 a 100

income: salario medio de cada profesión, en dólares.

education: Número medio de años de educación.

type: Una variable categórica con tres niveles:

• 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

● ●●

0 5000 10000 15000 20000 25000

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)

1. Regresión polinomial local: Lowess/Loess


La idea de regresión local fue propuesta por Cleveland (1979). Intentamos ajustar el
modelo,
yi = f (xi ) + i
siguiendo los siguientes pasos:
1. definimos el ancho de ventana (m): Incluye a los vecinos más cercanos. En este ejemplo
utilizamos m = 50, es decir, para cada punto selecionamos los 50 vecinos más cercanos
(una ventana que incluye a los 50 vecinos de x(80) se muestra en la Figura 2(a)).
(a) (b)

● ●●



●●
●●
● ● ● ●
20 40 60 80



● ●
Tricube Weight

0.8
●●● ● ●
●● ● ●
● ●●● ● ● ● ●
● ● ● ●
●● ●
Prestige


● ●
● ● ●● ●
● ● ●

●● ●


●●
●●

● ●
0.4

●● ●
● ●
●● ●
● ●●● ●
● ●● ●● ●
●● ●


●●
●● ●

●●●● ● ●
● ● ●

●● ●

● ●● ●


●● ●● ●

●●● ● ●
0.0

● ●

● ●
● ●

0 5000 15000 25000 0 5000 15000 25000

Average Income Average Income

(c) (d)


● ●
20 40 60 80

20 40 60 80

● ● ●
●●
● ● ● ●●● ●

●● ● ●● ● ● ●
● ● ● ●●
● ●
Prestige

Prestige

●● ● ●● ●
●● ● ●● ●● ● ●●
● ●
●●

●●
●● ●●
● ●
● ●●


●●●
● ●● ●● ●●


●● ●● ●●● ●


● ●●
●●● ●●●


● ●
●●●● ●

●●

●●● ●
●● ●●
●●
●●

● ●


●● ●

● ● ●●


●● ●●
●●●

0 5000 15000 25000 0 5000 15000 25000

Average Income Average Income

Figura 1: Lowess smoother

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.

yi + bi (xi − x0 ) + b2 (xi − x0 )2 + . . . + bp (xi − x0 )p + ei

A partir de esta regresión, calculamos el valos ajustado correspondiente a x0 y lo


dibujamos en el diagrama. La Figura 2 (c) muestra el ajuste lineal local para los datos
en la vecindad de x0 , el valor ajustado ŷ|x(80) se representa en el gráfico por un punto
en negrita.

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)).

En R podemos hacer esto de forma sencilla:

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)

En regresión no-paramétrica no tenemos parámetros estimados, el interés está en la curva,


por lo que el énfasis está en cómo de bien la curva ajustada representa la curva poblacional.

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.

Podemos elegir la ventana de diferentes formas:

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.

2. Vecinos más próximos: Este método resuelve el problema anterior. El span s se


elige de modo que cada vez se esté utilizadon una determinada proporción del total de
los valores de x. La proporción se elige probando hasta que eliminamos el ruido de la
curva. En la función loess(), el span por defecto es s = 0,5.




80

● ●

●● ●
● ●
●● ● ● ●

● ●●


● ●
60

● ●
● ● ●
● ●
Prestige

● ●●

● ● ● ●●
● ●●

● ● ●

● ●● ●
● ● ●● ● ●
●● s=0.1
40

●●● ● ●
●●●●●●
s=0.37
●●● ●● ●●
● ● s=0.63
●● s=0.9
● ●
●●
● ● ●
● ● ●●
●●

20

● ●●

0 5000 10000 15000 20000 25000

Average Income

Figura 2: Efecto del span en la curva ajustada

2. Suavizado con kernels


Un suavizador tipo kernel utiliza pesos que decrecen de forma suave cuando la lı́nea se
aleja del punto de interés x0 . El peso para la observación j − th utilizada para el punto de

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).

Un spline cúbico con dos nodos c1 y c2 tiene la siguiente forma:


y = β0 + β1 x + β2 x2 + β3 x3 + β4 (x − c1 )3+ + β5 (x − c1 )3+ ,
donde (u)+ = u si u > 0 y 0 en otro caso. Si hay k nodos, la función necesitará k + 4
coeficientes de regresión.

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+ ,

3.1. Número y posición de los nodos


Los splines cúbicos dependen de los nodos, por lo que es necesario seleccionar cuántos
y dónde estarán situados. Es más importante la elección del número que de la posición.
Siempre se pueden colocar en los cuantiles de x.

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])

3.2. Splines de suavizado (smoothing splines)


Los smoothing splines son la solución al problema de minimizar la suma de residuos al
cuadrado penalizados:
n Z xn
00
X
2
RSS(f, λ) = (yi − f (xi )) + λ f (x)2 dx
i=1 x1

El primer término mide la proximidad a los datos y el segundo penaliza la curvatura de la


función. Aquı́, λ es el parámetro de suavizado , y controla el balance entre el sesgo y la
varianza de la curva ajustada. Si λ = 0, la curva interpola los datos, y si λ → ∞, la segunda
derivada se hace 0, por lo que tenemos un ajuste lineal.

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

● ●●

0 5000 10000 15000 20000 25000

Average Income

Figura 4: Spline cúbico natural con 4 nodos en los cuantiles de income.

hay una base de funciones h(xi ) tal que,


n
X
fλ (x) = h(xi )yi
i=1

Podemos reescribir la suma de cuadrados residuales como:

RSS(θ, λ) = (y − hθ)0 (y − hθ) + λθ 0 Ωθ

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?

Elección del parámetro de suavizado


La elección del parámetro de suavizado utilizamos:

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 (λ).

En el caso de un suavizador lineal,


n
!2
X yi − fˆλ (xi )
CV (λ) = n−1
i=1
1 − Sii (λ)

donde S(λ) es la matriz de proyección del modelo, es decir, ŷ = Sy.

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)

2. Validación cruzada generalizada


Hasta hace pocos años, no se sabı́a cómo calcular los elementos de las diagonal de S de
una forma eficiente, y esto llevó a introducir la validación cruzada generalizada (GCV),
la cual reemplaza Sii por su valor medio, T raza(S)/n, que es más fácil de calcular,
n
!2
−1
X yi − fˆλ (xi )
GCV (λ) = n
i=1
1 − T raza(S)/n

En la mayorı́a de los casos, CV y GCV se comportan de manera similar, sin embargo,


en algunas ocasiones CV tiende a infra-suavizar los datos en comparación con GCV.

spline2=smooth.spline(income,prestige)
lines(spline2$x,spline2$y,col=4)

21


80
● ●

●● ●
● ●
●● ● ● ●

● ●●


● ●
60
● ●
● ● ●
● ●
Prestige

● ●●

● ● ● ●●
● ●●

● ● ●

● ●● ●
● ● ●● ● ●
40

●●
●●● ● ●
●●●●●●
●● ●●
● ●●
● ●
●●
● ●
●●
● ● ●
● ● ●●
●●

20

● ●●

0 5000 10000 15000 20000 25000

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

● ●●

0 5000 10000 15000 20000 25000

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

Splines con penalizaciones (P-splines)

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.

2. La introducción de penalizaciones relaja la importancia de la elección del número y la


localización de los nodos, cuestión que es de gran importancia en los splines de rango
bajo sin penalizaciones (ver por ejemplo Rice and Wu (2001)).

3. La correspondencia entre los P-splines y el BLUP en un modelo mixto permite, en


algunos casos, utilizar la metodologı́a existente en el campo de los modelos mixtos y
el uso de software como PROC MIXED en SAS y lme() en S-PLUS y R.

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

● ● ●

● ●●●
● ●●
● ●


● ●

0.0 0.2 0.4 0.6 0.8 1.0

Figura 1: Datos simulados, la lı́nea corresponde a f (x) = sin(3πx)

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:

S(a; y, λ) = (y − Ba)0 (y − Ba) + λa0 P a (3.1)

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)

Si λ = 0 se corresponde con las ecuaciones normales de regresión de y sobre B. Es impor-


tante el hecho de que el tamaño del sistema de ecuaciones anterior depende del tamaño de

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.

Es sencillo probar que:


ŷ = B(B 0 B + λD 0 D)−1 B 0 y = Hy, (3.3)
H no es una matriz de proyección, ya que no es idempotente, pero su forma hace que el
método de suavizado sea lineal. La traza de H corresponde a la dimensión del modelo (el
número equivalente de parámetros que estarı́amos estimando).

1.1. Bases y nodos


La base para la regresión se puede calcular de muchas maneras, y de hecho hay dos
grandes grupos dentro de los estadı́sticos que utilizan los P-splines: los que utilizan las
bases polinomios truncados y los que utilizan las bases de B-splines. Además existen otras
alternativas como thin plate regression splines.

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:

1, x, x2 , . . . , xp , {(x − t1 )+ }p , . . . , {(x − tk )p+ }p

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]))
}
}

Tomamos los nodos, por ejemplo, si queremos 10 nodos:

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)

son bases de polinomios truncados de grado 0, 1, 2 y 3 respectivamente (ver Figura 2)

Polinomios truncados de grado 0 Polinomios truncados de grado 1


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

Polinomios truncados de grado 2 Polinomios truncados de grado 3


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

Figura 2: Bases de polinimios truncados de grado 0, 1, 2 y 3

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

Figura 3: Bases de B-splines de orden 1 y 3.

desplazamiento es una función de la distancia entre los nodos). En general un B-spline de


grado p :
Consiste en p + 1 trozos de polinomio de orden p.

Se unen en p nodos internos

En los puntos de unión las derivadas hasta el orden p − 1 son continuas.

El B-spline es positivo en el dominio expandido por p + 2 nodos y 0 en es resto.

Excepto en los extremos, se solapa con 2p trozos de polinomios de sus vecinos.

Para cada valor de x, p + 1 B-splines son no nulos.


Los B-splines no “padecen” los efectos de frontera comunes en otros métodos de suavizado,
como algunos kernels, en los que al extender la curva ajustada fuera del dominio de los datos
ésta tiende hacia cero. De Boor (2001) presenta un algoritmo para el cálculo de los B-
splines, este algoritmo se puede simplificar fácilmente en software como MATLAB, S-PLUS y

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:

bspline = function(x, xl, xr, ndx, bdeg){


dx = (xr-xl)/ndx
knots = seq(xl-bdeg*dx, xr+bdeg*dx, by=dx)
B = spline.des(knots,x,bdeg+1,0*x)design
B}

Thin plate regression splines (tprs)


Los thin plate splines son funciones que minimizan la función objetivo:
2
∂ 2f
X Z 
2
(yi − f (xi )) + λ dx
∂x2

Es posible reescribir la equación anterior como:

ky − Eδ − T γk + λδ 0 Eδ

En Green and Silverman (1994) se pueden encontrar más detalles sobre este método de sua-
vizado.

El principal problema es que el número de nodos (y por lo tanto el número de paráme-


tros) es igual al número de datos, lo que hace que sea computacionalmente muy costoso,
sobre todo cuando pasamos al caso multidimensional. Por ello, Wood (2003) desarrolló los
thin plate regression splines que son una versión de los anteriores en la que el número de
nodos es mucho menor al número de datos. La Figura 4 muestra una base the thin plate
regression splines.

1.2. Penalizaciones y coeficientes


Supongamos que tenemos una base B construida con k nodos. Si utilizamos mı́nimos
cuadrados para ajustar el modelo, la función objetivo será:

S(a; y) = (y − Ba)0 (y − Ba) ⇒ â = (B 0 B)−1 B 0 y

y la curva ajustada fˆ(x) = B â dependerá del tamaño de la base. En la Figura 5 vemos el


efecto que tiene el tamaño de la base en la curva, cuanto mayor sea la base menos suave es
la curva, cuando el número de nodos coincide con el número de datos obtenemos una curva
que interpola los datos.

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

0.0 0.2 0.4 0.6 0.8 1.0

Figura 4: Bases de thin plate regression splines.

La integral de la segunda derivada de la curva ajustada al cuadrado es una penalización bas-


tante común (es la que se utiliza en los splines de suavizado), sin embargo, no hay nada de
particular en la segunda derivada, se puede utilizar derivadas de cualquier orden. La novedad
que introducen los P-splines es que la penalización es discreta y que se penalizan los coeficien-
tes directamente, en vez de penalizar la curva, lo que reduce la dimensionalidad del problema.

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

● ● ●

● ●●●
● ●●
●●


● ●

0.0 0.2 0.4 0.6 0.8 1.0

Figura 5: Curva estimada con 3, 10 y 20 nodos.

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.

La selección y localización de los nodos no está hecha de antemano, como en el caso de


los smoothing splines, si se elige un número suficientemente grande de nodos es suficiente
con elegirlos de forma equidistante; aunque autores como Ruppert (2002) aconsejan elegir los
nodos K nodos en los K-quantiles de x, es decir que cada nodo tk serı́a el cuantil k/(K + 1)
de x. En cuanto al número de nodos, la mayorı́a de los autores utilizan como regla:

número de nodos = min{40, valores únicos de x/4}


2

●●

●●

●●

●●● ●●
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.

Grados de libertad efectivos


Si en un modelo con P-splines tomamos λ = 0, entonces los grados de libertad del
modelo se corresponden con la dimensión de la base B menos el número de restricciones del
modelo, por el contrario, si tomamos un valor grande de λ el modelo es muy poco flexible
y tendrá muy pocos grados de libertad. Para definir los grados de libertad en este tipo de
modelos, la opción más lógica es utilizar una definición análoga a la que se utiliza en los
modelos de regresión paramétricos:

d.f. = traza(H) donde ŷ = Hy

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.

Estimación de la varianza residual


En el caso de errores gaussianos, nuevamente utilizamos la equivalencia con el caso de
regresión lineal:
2 ky − Bak2
σ̂ = ,
n − traza(H)
aunque este estimador no es insesgado, ya que depende del sesgo introducido por el suavizado,
es el que se utiliza normalmente.

1.4. Selección del parámetro de suavizado


El papel del parámetro de suavizado en los P-splines, es el mismo que tiene en cual-
quier otro método de suavizado: controlar la suavidad de la curva, pero aquı́ lo que hace es
penalizar los coeficientes que están muy separados entre sı́, y cuanto mayor sea λ, más se

32
2
1
y

0
−1

0.0 0.2 0.4 0.6 0.8 1.0

Figura 7: Curvas ajustadas para distintos valores de λ.

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.

2. P-splines como modelos mixtos


La gran revolución de los P-splines producida en los últimos años es debida a la posibi-
lidad de escribir un modelo no-paramétrico o semiparamétrico donde se utilizan P-splines
como un modelo mixto (o modelo con efectos aleatorios), la ventaja que tiene el utilizar este
enfoque es que nos permite: por un lado utilizar toda la metodologı́a desarrollada para los
modelos mixtos, y por otro, utilizar el software para modelos mixtos que está disponible en

33
la mayorı́a de los programas estadı́sticos.

La conexión entre regresión no paramétrica y los modelos mixtos se remonta a principio


de los 90 (Speed, 1991). Más tarde, otros autores como Verbyla et al. (1999) y Brumback
and Rice (1998) desarrollan en más profundidad el tema del suavizado con modelos mix-
tos (en el contexto de los splines cúbicos) y más tarde (Wand, 2003) en el contexto de los
P-splines con polinomios truncados como bases. Sin embargo, no se habı́a intentado buscar
una representación de los P-splines con B-splines como bases como modelos mixtos, lo cual,
entre otras cosas darı́a lugar a bases más estables.

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:

y = Ba +   ∼ N (0, σ 2 I) lo reformulamos como


y = Xβ + Zu +   ∼ N (0, σ 2 I)

Según la base que haya utilizado para los P-splines, X y Z tendrán una forma diferente:

Polinomios truncados

X = [1, x, . . . , xp ] Z = [(xi − κk )p+ , ] 1 ≤ i ≤ n1 ≤ k ≤ κ

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

Figura 8: Curva estimada para la altura de una niña en distintos instantes.

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

Figura 9: Curvas estimadas para los datos de temperatura

cutivos, la curva negra corresponde a la estimación ignorando la estructura de correlación


en los datos y la verde se obtiene asumiendo un proceso AR(1).

3. P-splines para datos multidimensionales


Los modelos aditivos (Hastie and Tibshirani, 1987) son una clase importante dentro de
los modelos multidimensionales. En 2 dimensiones, el modelo aditivo de suavizado serı́a
y = f (x1 ) + f (x2 ) + , donde x1 y x2 son variables explicativas. Una de las razones por
las que este enfoque es tan popular es porque la hipótesis de aditividad controla los posi-
bles problemas computacionales que surgen a la hora de estimar las curvas. Sin embargo,
esta hipótesis es demasiado restrictiva cuando, por ejemplo, los datos están situados en un
array y en vez de un modelo aditivo necesitemos suavizar los datos mediante un superficie
no aditiva. En este contexto se han desarrollado varios enfoques: los basados en thin plate
splines (ver, por ejemplo, Green and Silverman, 1994, o más tarde Wood, 2003), o, dentro del

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.

Supongamos que tenemos datos yij , i = 1, . . . , n1 , j = 1, . . . , n2 , organizados en un array


con n1 filas y n2 columnas, y dos variables explicativas, x01 = (x11 , . . . , x1n1 ) y x02 =
(x21 , . . . , x2n2 ). Sea B 1 una matriz n1 × c1 de B-splines para el suavizado a lo largo de
x1 , y B 2 una matriz n1 × c2 de B-splines para el suavizado a lo largo de x2 . Entonces
definimos la matriz de bases en 2 dimensiones como su producto tensorial,

B = B2 ⊗ B1 (3.10)

La Figura 10 muestra un gráfico análogo a la Figura 3, pero en el caso bidimensional.


0.5
0 0.1 0.2 0.3 0.4
2-d B-spline

16
14
12
10 20
8 15
x2 6
10
4
5 x1
2

Figura 10: Base de B-splines en dos dimensiones.

El modelo a ajustar ahora es y = f (x1 , x2 ) + , donde y es un vector de longitud n1 n2 ;


de nuevo E[y] = Ba, o escrito en forma matricial, E[Y ] = B 1 AB 2 , donde A es una matriz
c1 × c2 que contiene a los coeficientes a. De esta representación matricial del modelo sur-
gió la idea de penalizar las filas y columnas de la matriz A. La penalización de las filas viene
dada por a0 (I c2 ⊗ D 01 D 1 )a y la de las columnas, a0 (D 02 D 2 ⊗ I c1 )a, con lo cual la matriz de
penalizaciones viene dada por:

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).

3.1. P-splines multidimensionales como modelos mixtos


Hasta el momento, no existı́a una representación de modelos de suavizado no-isotrópicos
en dos o más dimensiones como modelos mixtos. El objetivo es encontrar una representación
similar a la dada en el caso de los datos unidimensionales. El hecho de que el modelo sea
no-isotrópico, es decir, el utilizar el tipo de penalización que se propone en (3.11) puede, en
un principio, dificultar la búsqueda de una nueva base que permita establecer la equivalencia
entre modelos mixtos y P-splines con el producto tensorial de B-splines. Sin embargo, Currie
et al. (2006) se muestra cómo en el caso de dos dimensiones o más, también existe una
representación como modelo mixto que viene dada por:
y = Xβ + Zα α ∼ N (0, G)  ∼ N (0, σ 2 I), (3.12)
donde
X = X 2 ⊗ X 1 = [1 : x2 ] ⊗ [1 : x1 ]
Z = (Z 2 ⊗ X 1 : X 2 ⊗ Z 1 : Z 2 ⊗ Z 1 ) .
 −1
λ2 Σ2s ⊗ I q1
G = σ2  λ1 I q2 ⊗ Σ1s 
λ1 I c2 −q2 ⊗ Σ1s + λ2 Σ2s ⊗ I c1 −q1
Los resultados que se presentan aquı́, se extienden de forma inmediata a tres o más di-

Figura 11: Vista de los cultivos en SCRI, Dundee, Reino Unido

mensiones, utilizando el producto de kronecker para la base, y añadiendo más términos a la


penalización

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

En la Figura vemos a la izquierda el ajuste de un modelo aditivo y a la derecha el mo-


delo con interacción.
linear pre

linear pre
dictor

dictor
Co

Co
lu

lu
m

m
na

na

a a
Fil Fil

Figura 12: Superfices ajustadas para los datos del SCRI.

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.

4. Modelos additivos generalizados


Las ideas expuestas en las secciones anteriores se pueden aplicar al caso de modelos
lineales generalizados con penalizaciones. Estos modelos fueron introducidos por Marx and
Eilers (1998), en el caso unidimensional , y por Durbán et al. (2002) y Currie et al. (2004),
en el caso bidimensional.

4.1. Modelos aditivos generalizados con P-splines


Sea µ = E[η], y suponemos que existe una función g() tal que η = g(µ) = f (x) = Ba.
Minimizar la verosimilitud penalizada
1
`p (a) = `(a) − λa0 D 0 Da, (3.13)
2
donde `(a) es la verosimilitud ordinaria, da lugar a la versión penalizada del “scoring algo-
rithm”:
(B 0 W̃ B + λD 0 D)â = B 0 W̃ B ã + B 0 (y − µ̃). (3.14)
Aquı́ la matriz W es diagonal con elementos wii−1 = (∂ηi /∂µi )2 var(yi ), el sı́mbolo ˜ representa
una solución aproximada, y ˆ representa la mejora de la aproximación. De modo que:
 −1
â = B 0 W̃ B + λD 0 D B 0 W̃ z̃

donde z̃ = B ã + B 0 (y − µ̃) es el working response. El algoritmo se va actualizando hasta la


convergencia. Una vez alcanzada la convergencia, entonces:
 −1
0 0
H = B B Ŵ δ B + λD D B 0 Ŵ
fˆ = H ẑ

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 )

4.2. Inferencia sobre las funciones suaves


Si nuestro interés es saber si existe una relación estadı́sticamente significativa entre la
variable explicativa xj y la variable respuesta y, plantearemos el siguiente contraste:
H0 : fj = 0 (no efecto)
H1 : fj 6= 0 (efecto)
dado que las funciones fj dependen de los coeficientes que acompañan a las bases de B-
splines, el contraste anterior es equivalente a :
H0 : β j = 0 β j = (βj1 , . . . , βjKj )
H1 : β j 6= 0
En este contexto existen dos posibles aproximaciones para los contrastes anteriores (fre-
cuentista/bayesiana), pero las metodologı́a no está aún completamente desarrollada, y los
p-valores obtenidos son solo aproximados y hay que interpretarlos con cautela, ya que, en
general, estos p-valores serán inferiores a lo que deberı́an ser, por lo que se rechazará la
hipótesis nula en más ocasiones de las necesarias, es decir, se dará por significativa la rela-
ción entre la covariable y la variable respuesta, cuando en realidad no es ası́. En la práctica,
el problema aparece cuando los p-valores están próximos al nivel de significación (5 %), en
cuyo caso no deberı́amos extraer conclusiones. Este comportamiento de los p-valores es si-
milar independientemente de qué criterio hayamos utilizado para la elección del parámetro
de suavizado, aunque el comportamiento es mejor si se utilizan métodos basados en máxima
verosimilitud.

La distribución del estadı́stico de contraste dependerá de si la variable respuesta sigue una


distribución Normal o no:
Si los datos son Normales, el estadı́stico de contraste sigue un distribución F .
En otro caso sigue una distribución χ2 .

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:

mixel.model.B para el caso de B-splines.

mixed.model.T para el caso de polinomios truncados.

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

lme package:nlme R Documentation

Linear Mixed-Effects Models

Description:

This generic function fits a linear mixed-effects model in the


formulation described in Laird and Ware (1982) but allowing for
nested random effects. The within-group errors are allowed to be
correlated and/or have unequal variances.

Usage:

lme(fixed, data, random, correlation, weights, subset, method,


na.action, control, contrasts = NULL)
## S3 method for class 'lme':
update(object, fixed., ..., evaluate = TRUE)

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.hat=c(X%*%beta.hat+Z%*%alpha.hat[1:ncol(Z)])
#o
d = ncol(fit$fitted)
f.hat = fit$fitted[,d]

Intervalo de confianza para fˆ


IC=Int.Conf(X,Z,f.hat,sigma.2,sigma.2.alpha)

El resultado es aparece en la Figura 1.

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))

El resultado de la función spm es una lista con tres componentes:

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).

Se pueden encontrar más detalles en Ngo and Wand (2004).

plot(fit,shade=FALSE,se.lwd=1,se.col=3)
points(x,y)

da lugar a la figura que aparece en la página siguiente.

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 función gamm y gam


Para utilizar esta función es necesario cargar el paquete mgcv de Wood (2006a). En
realidad, este paquete contiene dos funciones que permiten utilizar P-splines: gam y gamm,
la diferencia entre las dos es que la segunda permite incluir efectos aleatorios, correlación, etc.

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:

• cr: cubic regression splines

47
• cc: periodic splines
• tp: thin plate regression splines
• ps: P-splines con bases de B-splines

m= orden de la penalización by= permite multiplicar curvas por factores

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

fit = gam(y~s(x,k=5,m=2)) # elige el parámetro de suavizado con GCV


fit1 = gamm(y~s(x)) # elige el parámetro de suavizado con REML
fit1$lme
?gamm
?gam
fit1$gam
fit1$gam$sp
[1] 0.001957235
fit$sp
[1] 0.0003579374

Utilizando las bases bsplines

fit2=gamm(y~s(x,bs="ps",m=2))

en este caso es imprescindible especificar el orden de la penalización 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

La figura muestra como los tres ajustes son casi idénticos.

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

Temp: Temperatura máxima diaria en grados Fahrenheit

Wind: Velocidad media del viento, en millas por hora

Solar.R: Radiación solar


y buscamos establecer la relación entre las variables meteorológicas y la cantidad de ozono
en la atmósfera. Primero hacemos un gráfico con todas las variables:
pairs(airquality[,1:4])
Aunque en el gráfico vemos que hay relaciones que no son lineales, empezamos por ajustar
un modelo lineal:
Ozome = β0 + β1 Temp + Wind + Solar.R + 
aire.lm<-lm(Ozone ~Temp+Wind+Solar.R, data=airquality)
summary(aire.lm)
oefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -64.34208 23.05472 -2.791 0.00623 **
Temp 1.65209 0.25353 6.516 2.42e-09 ***
Wind -3.33359 0.65441 -5.094 1.52e-06 ***
Solar.R 0.05982 0.02319 2.580 0.01124 *

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

Figura 1: Gráficos de las variable del modelo dos a dos

---
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

Hacemos un gráfico de los resultados:

par(mfrow=c(1 3))
termplot(air.lm,se=T)

Hacemos gráficos de residuos para comprobar las hipótesis del modelo:

par(mfrow=c(1,2))
plot(air.lm, which = 1:2)

La ausencia de normalidad es debida a que la variable Ozone no es simétrica (ver Figura 4)


por lo que podemos aplicar alguna transformación, por ejemplo el logaritmo:

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

Partial for Wind


0

0
−20

−20

−20
−40

−40

−40
60 70 80 90 5 10 15 20 0 100 250

Temp Wind Solar.R

Figura 2: Efectos parciales centrados y bandas de confianza al 95 %

Residuals vs Fitted Normal Q−Q


100

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

Fitted values Theoretical Quantiles

Figura 3: Gráficos de residuos

aire.lm2<-lm(log(Ozone) ~Temp+Wind+Solar.R, data=airquality)


summary(aire.lm2)
Coefficients:
Estimate Std. Error t value Pr(>|t|)

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)

Figura 4: Histogranma de la variable Ozone

(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 ***
---
Residual standard error: 0.5086 on 107 degrees of freedom
Multiple R-squared: 0.6644, Adjusted R-squared: 0.655
F-statistic: 70.62 on 3 and 107 DF, p-value: < 2.2e-16

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

1.5 2.0 2.5 3.0 3.5 4.0 4.5 −2 −1 0 1 2

Fitted values Theoretical Quantiles

Figura 5: Gráfico de residuos con la variable transformada

Approximate significance of smooth terms:


edf Ref.df F p-value
s(Wind) 2.565 9 6.453 2.76e-12 ***
---
R-sq.(adj) = 0.336 Deviance explained = 35%
REML score = 128.69 Scale est. = 0.49769 n = 116

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).

La función gam.check permite hacer gráficos de residuos (qq-plot, residuos frente al


predictor lineal, histograma de residuos y gráficos de valores ajustados frente a residuos, ver
Figura 7).
par(mfrow=c(2,2))
gam.check(aire.gam1)
En el modelo anterior, he usado 10 nodos, ya que el número de valores únicos de la
variable Wind es 31, por lo que 10 son más que suficientes, si no estamos seguros de si el

54
2
1
s(Wind,2.56)

0
−1
−2
−3

5 10 15 20

Wind

Figura 6: Efecto estimado de Wind sobre log(Ozone)

Resids vs. linear pred.


deviance residuals

● ● ●
●● ●
1

● ● ● ●
● ●● ● ● ● ● ● ● ●
● ●●
●● ●
● ● ● ● ● ● ●● ●

● ● ● ● ● ● ● ●
residuals

● ● ●
● ●●● ●●● ●● ● ●
● ●
● ● ● ●

● ● ●

● ●●
● ● ●
● ● ●
● ● ● ● ●

−1

−1

● ● ● ● ● ● ●

● ●
−3

−3

−2 −1 0 1 2 3.0 3.5 4.0 4.5

theoretical quantiles linear predictor

Histogram of residuals Response vs. Fitted Values


0 1 2 3 4 5

● ● ●● ●
● ●
10 20 30

● ● ● ●
● ● ● ●
● ● ●
● ● ● ● ●
●● ● ● ●
Frequency


Response

● ●● ● ●
● ●
● ●
● ●●
● ● ● ● ● ● ●
● ●
●●● ●● ● ● ●
● ● ● ●
● ●● ● ●
● ●
● ● ●
● ● ● ●● ●
● ●
●● ● ● ●

● ● ● ●


0

−3 −2 −1 0 1 3.0 3.5 4.0 4.5

Residuals Fitted Values

Figura 7: Gráficos de residuos

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

Approximate significance of smooth terms:


edf Ref.df F p-value
s(Wind) 8.516e-05 9 0 0.894

R-sq.(adj) = -6.99e-07 Deviance explained = 4.16e-06%


REML score = 124.14 Scale est. = 0.48659 n = 116

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)

Figura 9: Valores predicho de log(Ozone) y bandas de confianza

A continuación añadimos la variable Temp:


aire.gam2=gam(log(Ozone)~s(Wind,bs="ps",m=2,k=10)+s(Temp,bs="ps",m=2,k=10),
method="REML",select=TRUE,data=airquality)
summary(aire.gam2)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.41852 0.05134 66.59 <2e-16 ***
---
Approximate significance of smooth terms:
edf Ref.df F p-value
s(Wind) 2.054 9 1.451 0.000633 ***
s(Temp) 1.312 9 8.839 < 2e-16 ***
---

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.

Para comparar los modelos anteriores utilizamos es estadı́stico F en la función anova():


1

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.

Los grados de libertad de Temp están próximos a 1, ¿cómo comprobarı́as si el efecto es


lineal o no?.

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

¿Qué podemos concluir?

59
Figura 11: Gráfico del efecto del viento, la temperatura y la radiación solar junto con los
residuos parciales

Ejemplo: simulación para selección de variables


Vamos a simular unos datos (archivo simulacion.R), para ver como es posible identificar
cuando una función suave no es necesaria:

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)

Los grados de libertad correspondientes a la variable x3 son casi 0, y el p-valor 1. En la


Figura 12, se observa claramente como el efecto de esta variable es nulo.

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

Figura 12: Efecto estimado de las variables

2. Modelos Semiparamétricos
Cuando en un modelo de regresión hay componentes paramétricos y no-paramétricos,
tenemos un modelo semiparamétrico,

y = β0 + β1 x1 + . . . + βj−1 xj−1 + f (xj ) + 

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:

log(Produccióni ) = β0 + β1 Localidadi + β2 Densidadi + i

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

Figura 14: Gráfico de curvas ajustadas para las dos localidades.

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:

log(Produccióni ) = f (Densidadi )L(i) + i

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:

1. ¿Qué modelo es mejor de los dos?


5.5


● ● ●

● ● ●

● ●
●●
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:

caso: Indica a qué niña corresponden los datos

tratamiento: Toma valores 1, 2 o 3 según el tipo de tratamiento que reciben.

altura: Altura en centı́metros

edad: Edad en años.

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.

3.1. Modelo con ordenada en el origen aleatoria


Este es el modelo más sencillo que podemos proponer para estos datos:
L
X 1 ≤ i ≤ 197
yij = β0 + β1 xij + γl tril + Ui + ij Ui ∼ N (0, σU2 ) ij ∼ N (0, σ ) (5.1)
1 ≤ j ≤ ni
l=2

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

y T i la matriz que indica si la niña i-ésima recibe el tratamiento 1, 2 ó 3.

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)))

La Figura 17 muestra cómo el modelo (5.1) no explica de forma adecuada la trayectoria


individual de las niñas.

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.

3.2. Modelo aditivo mixto


Una extensión natural del modelo anterior serı́a:
L
X
yij = γl tril + f (xij ) + Ui + ij Ui ∼ N (0, σU2 ) ij ∼ N (0, σ ) (5.2)
l=2

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:

Utilizando la función gamm():

library(mgcv)

fit2.gamm=gamm(altura~factor(tratamiento)+s(edad,k=40,bs="ps",m=2),
random=list(caso=pdIdent(~1)))

Utilizando la función lme():

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.

3.3. Modelo con diferencias individuales lineales


Es una extensión simple del modelo anterior en la cual se asume que las diferencia in-
dividuales vienen dadas no sólo mediante la ordenada en el origen, sino también por la
pendiente:
L
X
yij = γl tril + f (xij ) + ai1 + ai2 xij + ij ij ∼ N (0, σ ) (ai1 , ai2 )T ∼ N (0, Σ) (5.3)
l=2

que en notación matricial pasa a ser

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:

Utilizando la función gamm():

fit3.gamm=gamm(altura~factor(tratamiento)+s(edad,k=40,bs="ps",m=2),
random=list(caso=pdSymm(~edad)))

Utilizando la función lme():

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.

3.4. Interacción de curva por factor


Uno de los objetivos del estudio llevado a cabo con las niñas que padecı́an leucemia era
comparar los efectos a largo plazo de las tres terapias, de modo que serı́a interesante ajustar
una curva distinta para cada tratamiento. Para hacerlo utilizamos una interacción entre un

70
factor y un predictor contı́nuo, de modo que el modelo (5.3) se puede extender a:

yij = fzi (xij ) + ai1 + ai2 xij + εij


PL PL
yij = β0 + β1 xij + Zi uk l=2 tril (γ0l + γ1l xij ) + l=2 tril Zi wkl + ai1 + ai2 xij + εij (5.4)

wkl ∼ N (0, σwl


2
), (ai1 , ai2 )T ∼ N (0, Σ) εij ∼ N (0, σε2 ),

donde tril = 1 si tri = l y 0 en otro caso.


En un modelo en el que aparecen factores, es necesario imponer alguna restricción para
asegurar que el modelo es identificables, en este caso, la restricción que imponemos es: γ01 =
γ11 = 0, lo que significa que β0 + β1 xij + Zi uk es la curva ajustada para l = 1, y γ0l + γ1l xij +
Zi wkl es la diferencia en las curvas ajustadas entre la terapia 2 (radiación convencional) y 3
(radiación hiperfraccionada) y la terapia 1 (no radiación). En R:

Utilizando la función gamm():

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

Utilizando la función lme():

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

Figura 20: Curvas ajustadas para los distintos tratamientos

3.5. Curvas especı́ficas para cada individuo


Los modelos más flexibles son aquellos que permiten que las diferencias especı́ficas indi-
viduales sean una función no-paramétrica (ver por ejemplo, Ruppert et al. (2003)). Esto es
sencillo de hacer mediante los P-splines:
L
X
yij = γl tril + f (xij ) + gi (xij ) + ij ij ∼ N (0, σ ) (5.5)
l=2

g(xij ) = ai1 + ai2 xij + Zi vk (ai1 , ai2 )T ∼ N (0, Σ) vk ∼ N (0, σv2 )


Cada curva individual gi () tiene dos componentes: uno lineal y otro no-paramétrico, pero
ambos componentes son aleatorios, a diferencia de lo que hacen otros autores como Brumback
and Rice (1998), este nuevo enfoque soluciona los problemas computacionales a los que daba
lugar el hecho de tener que estimar 2m parámetros para la parte lineal.
Aunque el modelo (5.5) es complejo, se puede describir de forma sencilla en el contexto de

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

u = [u1 , . . . , uK , a11 , a12 , . . . , am1 , am2 , v1 , . . . , vK ]0 ,

σ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:

H0 : σu2 = 0 vs. H1 : σu2 > 0.

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 ,

yij = fzi (xij ) + gi (xij ) + εij ,


donce yij es la altura de la i-ésima niña a la edad j, para i = 1, . . . , 197 y j entre 1 y
21, f1 es la curva media del grupo de niñas que recibieron terapia intracraal sin radiación,
f2 para las niñas que recibieron radiación convencional y f3 para niñas que recibieron ra-
diación hiperfraccionada, ai1 y ai2 las ordenadas en el origen y las pendientes aleatorias, y
gi (xij ) es la desviación especı́fica de la i-ésima niña con respecto a la curva media de su grupo.

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

Figura 22: Efectos aleatorios estimados para cada niña.

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)

Altura (en cm)

Altura (en cm)


140

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)

Altura (en cm)

Altura (en cm)


140

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

0 50 100 150 200 250 300

distancia

Figura 24: Efecto del lijado en un trozo de madera.

correlación en los residuos.


Podemos comparar los modelos ajustados mediante el test de máxima verosimilitud para
confirmar que es necesario un modelo AR(2) para el término de error:

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:

1. ¿Cúanto vale el parámetro de suavizado en el modelo inicial y en el final? ¿Tiene


sentido?

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

0 50 100 150 200 250 300 0 5 10 15 20 25

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


●●

0 50 100 150 200 250 300 0 5 10 15 20 25

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)).

5.2. Ejemplo 2: Análisis de datos de mortalidad


Los datos que vamos a analizar han sido cedidos por el Continuous Mortality Investigation
Bureau (CMIB) del Reino Unido. Para cada año entre 1947 y 1999 y cada edad (entre 11
y 100 años) se dispone del número de pólizas cobradas (muertes) y del número de pólizas
que hay (exposición ó multiplicador de la tasa). Los datos se organizan en matrices Y y
E cuyas filas están indexadas por edad y las columnas por años, y definimos la mortalidad
como: R = Y /E. El fichero mortalidad.txt contiene los datos, y el código se encuentra en
mortalidad.R.

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

Nos podemos plantear dos modelos:


Modelo aditivo suave para Edad-Periodo

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.

Modelo de suavizado bidimensional

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.

(Intercept) -4.754175 0.008175 -581.6 <2e-16 ***


---
Approximate significance of smooth terms:
edf Ref.df Chi.sq p-value
te(edad,periodo) 64.88 99 2443299 <2e-16 ***

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.

age: Edad del paciente en años

gender: 0: Mujer71: Hombre

gluc: Nivel de glucosa pre-operatoria

diab: Presencia de diabetes (0/1)

84
1200

● ●
●●
● ●
● ● ●
● ● ●●

6
●●

● ● ●
●● ●

1000
● ●● ●
●●● ●● ● ●
● ●● ●
●●


● ●●●●●
● ●●

●●●●
●●

●●●●

● ●
● ●

●●●
●●

●●
●● ●●
●●●● ● ●
● ●
●●

●● ● ● ● ●● ● ●
● ●●●
● ●
●●



●●
●●● ●●
● ●
● ●●
●● ●
●●
●●●
●●● ● ● ● ● ● ● ●
●●●●●
●● ●

4
●● ●● ●● ●●●

● ● ● ● ●● ●
● ●●
●●

●●●●

●●●
● ●●● ● ●● ● ●
●●●


●●●
●●
●●●●●

● ●●
● ● ● ●● ● ●●● ● ●● ● ● ● ● ● ● ● ●
800
●● ●●

●●●●●●● ● ● ● ●●
●● ●●● ●●●●●
● ● ● ●● ●



●●●





●●●●●
●●
●● ●● ● ● ●
●● ● ● ●● ●● ● ● ●●●●●● ● ●

● ●● ●
●●●





●●

●●
●●●●●●● ●
● ●●● ●● ● ● ●● ●● ●●
● ● ● ● ●● ●
●●
● ●
● ●● ● ●● ●● ● ● ●● ●● ● ●●● ● ● ●● ● ●● ●● ●
●● ●●
●●


●●●

●●
●●●
● ●
● ●●●●● ●● ●●●● ●● ● ●● ●●●


●●
●●● ● ●
● ●● ●●●●
● ●
●● ●●●
●●
● ●
●●●


●●● ●●● ●●●
● ● ●●●● ● ●
●● ●
●●●●● ●●●● ●
● ●●● ●● ●● ● ●
●●● ●● ●

●●
●●
●● ●
●●●

● ● ● ● ●● ●● ●
●●●● ● ● ● ● ●●
● ●●
●● ●● ●
● ● ● ● ● ● ● ● ● ●● ●●
●●●●● ●●
●●




●●●●●●
●● ● ● ●●● ●
●●
● ●● ●●●●● ● ●●● ●●●●● ●●● ●

●●● ●●●●

●●●●●●
● ●●●● ●
● ●
●●● ●●●● ●●●●●● ● ●●●●●●● ●● ● ● ●●● ●
● ● ●● ●●● ● ●●● ● ●● ●●●●

2
●●
● ●
● ● ●●●● ●● ●● ● ● ●●● ● ● ● ●●● ●
● ● ● ●● ●● ●●● ●
●●
●●
●● ● ●
●●
●●
● ●

●●● ● ● ●● ●● ●
●●● ●● ●●●● ● ●
● ●●●
●●●●●●● ●


●●
●●● ●
● ●
●●● ●
●●● ●●
● ● ● ●● ● ●

residuos
●● ●● ●● ●● ● ● ● ● ●● ● ● ●●● ● ● ●
muertes

● ●●●●●● ●●● ● ●
● ● ●● ●
●●●● ● ● ●●●
●● ●●●●●●
●● ● ● ●
● ●●●
●●


















● ●
●● ●● ●
●● ●● ●


●●

●●
●●



●●
● ●●


●●


● ●
●●●

●●
●●






●●●●●
●●●

●●
●●


●●

● ●●




●●● ●
● ●●





●●

●●




●●●
●● ●
●●
●●

●●



●●● ●●●● ●●
●● ●● ●● ●● ●● ●●
● ●●● ● ●
600

●●
● ●

●●

●●

●●●
● ●
●●● ●●●● ●● ●●●

● ● ●
●● ●
●●●●●

●●
●●
● ●
●●
● ●● ●● ●● ● ●●●●●
●●
● ●●

●●



●●

●●●●●
● ● ●● ● ● ● ● ● ● ● ●●
●●●
●●




















●●●

● ●

● ●●

● ●




●●●●●

●●
●●
●●



●●●

●●●●


●●

●●●



●●
●●●●● ●●
●●● ●●
●●


●●●


●●●●●

●●●●




●●
●●
















●●
●●
●●●


●●

●●●●●●
● ● ●
●●
●●
●●
● ●●●●●●●● ●●
●● ●●
●●




●●

●●● ●●●

●●●

●●
●●● ● ●●
●●●
●●●
●● ● ●●●●
●● ●●

● ●●●
● ●●
●●●
●●●
● ● ●
● ●●
●●● ●
●●
●● ●
●●●●
●●
●●●
●●
●●
●●
●●●
●●
●● ●

●● ●● ●● ●● ●
●●● ●

●●●● ●
● ●●● ● ●●
●● ●
●●● ●




●●




●●
●●



●● ●●
●●●
●●
● ●
●●










●●●●

●●

●●●
●● ●
●●
●●
●●
●●●
●●●





●●●●

●●●●


●●
●●●●●





● ●


●●
●●
●●●●


●●●
●●


●●●●

●●

●●


●●
●●


●●
●●●
●●●●●



●●

● ●
●● ●


● ●
●●●●● ●
●●●● ●●●●●●

●●●●
●● ●
●● ● ●● ●● ●

● ●
●●
● ●●●
●●
●●
●● ●
● ●● ●●●●●●
● ●
●●
●●●
●●●
●●
●●●●
●● ●
● ●
●●●● ● ● ●
● ● ●
●●


●●
●●
●●




●●



●●
●●● ●●




●●










●●
●●








●●






●● ●























●●




●●

●●●
● ●




●●

●●

●●











●●

●●


● ●●
●●



































● ●




●●


●●
●●


●●●
● ●


●●




●●
●●
● ●

●●●



●●●




●● ●
●●

●●

●●●







●●●
● ●●
●●

●●
●● ●
●●●
●●●
● ●● ●●●● ●
●●● ●●
● ●
●●●
● ●●
●●
●●●●●

●●●●
●●● ●●
●● ●
●●
●●●●●● ●●
●●●●
●●
●●●●●●●
●●●●
● ●

●●●●●
●●● ● ●● ● ●●● ●●●●●
● ●
●●●
●●● ●
● ●●●●●

● ●
● ● ●
●● ●●

● ●●
●●● ● ●
●●● ●
●●●
●●
●●●●●
●●
●●
● ●
●●●●●●●● ●●●●● ● ●
●●
●●
●●●●
●●
●●

●● ●
● ● ●● ● ●
●●● ●● ●● ●●● ● ●● ●●●
●●●

●●●●●

●●

●●
●●
●●
●● ●●●
●● ●●
●●●
●●●
●●

●●
●● ●
●●
●●●
●●●
●●
●●
●● ●
● ●● ●

●●●
●●●
●●
●●●
● ●●●
●●● ●
●●●

●●


●●●
●●●


●●

●●●

● ●
●●
●●●●● ●● ●●●


●● ●●●
● ●● ●● ●
●●●
●● ●●

0
●●
● ●●●●● ●●● ●
●●●
●●
●●● ● ● ●●●●
●●
● ●
●●
● ●●●● ● ● ● ●● ● ● ● ● ● ●● ● ●●●●● ●●● ●





●●●

●●●


●●






●●
●● ●

● ● ●
●●


●●
● ●
●●
● ●
●●
●●

●●






●●●●

●●
●●






●●



●●
●●









●●




●●

●●

● ●●



●●●●●

●●


●●
●●

●●●

●●●●●



●●

●●






●●

●●●

●●●

●●
●●

● ●●
●●
● ●

● ●●
● ●● ●●●●●



●●


●● ●●●●
● ● ●●

●● ●


●●
● ●




●●

●●














●●●

●●



● ●


●●
●●









●●

●●
●●
●●
●●
●●
●●


●●

●●
●●
●●●


●●
●●






●●
●●

●●



●●

●●
●●
●●




●●●●
●● ●



●●

●●●



●●●●
●●


●●
● ●

●●



●●
●●●

●●


●●












●●

●●

●● ●



●●
●●
●●●●●
●●●


●●
●● ●● ● ●●●
●●●● ●● ●●●

●●● ●●
●●

● ●
●●

●●●
●●

●● ●
● ●●●●
● ●●● ●●
●●
●●●●● ●
●●
●●●●

●●●●●

● ●●

●●●●
●● ●
●● ●

● ●

●●
●●
●●●●
●●
●●●
●●
●●
●●●●●
● ●

● ●●

●●
● ●
● ● ●● ●●
● ●

● ● ● ●● ●●●● ● ●●●
●●
●●

●●
●● ●
●●● ● ●● ●●●
●● ●●
●●● ● ●● ● ●●●●●●●
● ●●
● ●● ● ●
●● ● ● ●
●●● ●●
● ● ● ● ● ● ●
● ●● ●●● ● ●
400

●●
●●●●
●●

●● ● ●
● ● ● ● ● ●
● ● ●● ●● ● ●
●●● ●●
●●
●●●
●●

● ● ● ●● ●●● ● ●●● ●● ●●●●●
●●




















●●
















●● ●
●●
●●●
●●
●●
●●



●●●●





●●
●●
●●
●●


●●
●●

●●





●●

●●









●●







●●
●●●


●●


●●●
●●●
●●●●●
●●



●●




●●









●●


●●●

●●
●●


●●
●●




●●

●●








●●

●●


●●

●●

● ●
●●●
● ●

●●●●●

●●●


●●
● ●

●●●
●●●●
●●●●●
● ●

●●●●●●
●● ● ●●
● ●●●
● ●
●●●●● ●

● ●
●●●
● ● ●● ● ● ●●●● ●●

●● ●●
●●
●●
●●● ●● ● ●● ●
●●● ●● ●●
● ●● ●●
●●





●●

●●













●●
●●

●●●

● ● ●●
●●
●●●

●● ●●●
●●●
●●



●●●●




●●●●●

●●
● ●
●●
●●


●●
● ●●
●●
●●
● ●
●●
● ●
●●

●●
● ●
●●

●●
●●●
●●

●●
● ●

●●
●●


●●
● ●
●●

●●

●●

● ●
●●
●●●
●●

●●● ●
●●●
●●

●●●
●●●● ●●● ●
●●●●● ●● ●
●●● ●●●● ●
● ●

●●











































●● ●
●●●●
●●
●●
●●


● ●●
●● ●

●● ●●

●●●
●●
●●
●●


●●
●●






●●

●●

●●
● ●●●

● ●
●●

●●

●●

●●

●●●
●●●●●
●●
●● ●
●●














●●











●●
●●






●●●●● ● ●
●● ●

●●


●●●●●
●●● ●●
●● ●●● ●●● ● ● ●●

●●
●●
●●


●●
●●●


●●



●●

●●
●●● ●●●●
●●
● ●●●● ●●
● ●
● ●●
● ●●● ●● ●
● ●
●●● ● ●
● ● ●

●● ● ●


●●
● ●● ● ●●●●
●● ●
●● ● ●
●●
● ● ●
●●●●● ● ●

●●

●●

●●



●●



●●




●●

●●
●● ●

●●
●●●
● ●●●●●● ●● ●
●●●
●●

●●●● ● ●● ● ●
● ●●●●● ●●
●●●● ●
●●
●●●

● ●●
●●
● ●
●●
●● ●●●●●●● ● ● ●●
●●●●

●● ●●●●● ●

●●
●●

●●




●●


●●

●●




●●
●●

●●
● ●●●●
● ●●● ● ● ● ● ●●●
●●
● ●●●
● ●
●●●● ●● ●●
●●
● ● ● ●●●●● ●
● ●●●● ●● ● ● ●
●● ● ● ●

−2
●●●
●●●

●● ● ●●●●● ●● ●● ●● ●●●● ● ● ● ● ●●● ● ●● ● ●●● ●
●●
●●


















































●●

●● ● ●
●●
●●
●●● ●

●●
●●●●●●● ●

●●


●● ●●●


● ●●●
● ●
● ●● ● ●● ●● ●
●●●●

●●
●●
●● ● ●● ●●● ●● ● ● ●
● ●

●●●

●●

●●
●●

●●
●●● ● ● ●● ● ● ● ●
●● ●● ● ● ●●● ● ●● ●● ●●
●●


●●


●●




●●








●●


●●




●●





●●
●●



●●
●● ●●●● ●
●● ●
●●●● ● ●●●●
●● ●● ●●
●●
●● ●● ●●●●● ●●● ●
● ●
●●●●● ●
● ● ● ●
● ●● ●
●●
●●


●●




●●



●●

●●



●●
● ●
● ● ●●● ● ● ●●●
●● ●● ●● ● ● ● ● ● ●●
●●

●●


●●


●●

●●

●●

●●● ● ●● ● ● ● ●
● ● ● ●●●● ● ●● ●
200




●●
●●
●●
●●



●●

●●


●●

●●
● ● ● ●●●● ●●●●●



●●
●●


●●



●●●



●●






●●
●● ● ●● ●● ●●● ●● ●● ●● ● ● ●●









































●●

● ●
● ● ●● ● ●●●●● ●●●● ● ● ●
● ●
● ● ● ● ●


●●

●●
●●


●●

●●

●●
●●
● ●



●●



●●

● ●
● ● ●●● ●

●●


●●



●●




●●
●●
●●
● ● ● ● ● ● ● ●
●●

●●



●●




●●

●●
●● ●● ● ● ●



●●



●●





●●




●●

●● ● ●
● ●

●●

●●
●●

●●
●● ●

−4
●●●


●●



●●



●●

●●



●●
● ● ●

●●




●●




●●




●●




●●


●●





●●




●●

●●
●●




●●




●●



●●


●●




●●








●●




●●


●●



●●






●●


●●






●●





●●

●●



● ● ●
0

0 200 400 600 800 1000 0 5 10 15 20 25 30

valores ajustados valores ajustados^0.5

Figura 32: Gráficos de valores ajustados y residuos.

poi: Infección postoperatoria (0/1)

El objetivo es evaluar los factores preoperatorios sobre la presencia de infección.

1. Evaluar el posible efecto de la glucosa preoperatoria sobre la presencia de infección:

Resumen del ajuste y gráfico del efecto


Contrastar si el efecto es lineal

2. Incluye también la presencia de diabetes

Resumen del ajuste y gráficos de efectos


¿es el efecto de diabetes significativo?. ¿Qué modelo es mejor, con o sin diabetes?
Ajusta el modelo incorporando la intersección entre glucosa y diabetes
Compara este modelo con el modelo sin interacción, ¿con cuál te quedas?

3. En base al mehor modelo anterior, vamos a evaluar el efecto de las variables gender y
edad

Incorpora la variable edad y compara el nuevo modelo con el anterior


Incluye ead y sexo. ¿Qué conclusiones extraes?
Ajusta el modelo incorporando la la interacción entre edad y sexo. ¿Hay interac-
ción?. ¿Mejora el modelo?
Ajusta un modelo incorporando la interacción entre la glucosa y la edad. ¿Hay
evidencias de interacción?. Dibuja los efectos

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.

Age: Edad en meses del niño

Número: El número de vértebras implicadas en la operación.

Start:El número de la vértebra donde empizan las vértebras implicadas.

1. Ajusta un modelo lineal generalizado. ¿Qué variables son significativas?

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.

3. Ajusta un modelo gam para las variables.

4. ¿Hay interacción entre ellas?

5.5. Ejemplo 3: Aplicaciones en disease mapping


Los datos corresponden al número observado y esperado de casos de cáncer de labio re-
gistrado en 54 municipios de Escocia, junto con la proporción de la población que trabaja en
agricultura, bosques y pesca. Estos datos han sido analizados utilizando diversos enfoques,
generalmente basados en modelos espaciales jerárquicos donde los efectos aleatorios asocia-
dos a cada municipio están modelizados mediante diferentes distribuciones a priori (modelos
autoregresivos condicionales).
Nuestra propuesta es utilizar, no el hecho de que los municipios sean vecinos, sino las coorde-
nadas de los centroides de cada municipio para modelizar el efecto espacial y además añadir
un efecto aleatorio para cada municipio con el objetivo de controlar la posible sobredisper-
sión de los datos.

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)

Para modelizar la posible sobredispersión de los datos y tener en cuenta la posibilidad de


que una superficie suave no capture la variabilidad de los datos, añadimos un efecto aleatorio
para cada municipio, por tanto el modelo serı́a:

Xβ + Zα + γI α ∼ N (0, G), γ ∼ N (0, σγ2 I)

86
Este modelo recibe el nombre de PRIDE (“Penalized Random Individual Dispersion Ef-
fects”).

Los datos se encuentran en el fichero lipcancer.txt y el código en lipcancer.R. Se han


ajustado dos modelos, sin efectos aleatorios individuales y otro con efectos aleatorios:

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)

Para comparar ambos modelos vamos a utilizar el AIC:


 
X yi
AIC = Dev + 2Df Dev = yi log − (yi − µ̂i )
i
µ̂i

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.

Cleveland, W. (1979). Robust locally-weighted regression and smoothing scatterplots. Jour-


nal of the American Statistical Association, 74:829–836.

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.

De Boor, C. (2001). A practical guide to splines. Applied Mathematical Sciences. Springer-


Verlag, New York.

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.

Green, P. and Silverman, B. (1994). Nonparametric Regression and Generalized Linear


Models. Monographs on Statistics and Applied Probability. Chapman & Hall, London.

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).

O’Sullivan, F. (1986). A statistical perspective on ill-posed inverse problems. Statistical


Sciences, 1:505–527.

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. (2006a). mgcv 1.3. r package. cran.r-project.org.

Wood, S. (2006b). On confidence intervals for gams based on penalized regression splines.
Australian and New Zealand Journal of Statistics, 48:445–464.

91

Das könnte Ihnen auch gefallen