Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Regresión No Paramétrica en R
Regresión No Paramétrica en R
NO PARAMÉTRICA
EN R
Prólogo 1
1. Introducción 5
1.1. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2. Estimación del modelo de Regresión No Paramétrica . . . . . . . . . 6
1.3. Regresión Polinomial Local . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4. Métodos de selección de la complejidad del modelo . . . . . . . . . . 13
1.5. Extensión multivariante . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5.1. El problema de la dimensionalidad . . . . . . . . . . . . . . . 16
1.5.2. Modelos aditivos no paramétricos . . . . . . . . . . . . . . . . 16
1.6. Selección del parámetro ancho de banda . . . . . . . . . . . . . . . . 17
2. Software disponible en R 19
2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2. Libro KernSmooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3. Libro Locpol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4. Libro Locfit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
2.5. Libro sm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3. Aplicación práctica 87
3.1. Estudio con datos reales . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.2. Estudio con datos simulados . . . . . . . . . . . . . . . . . . . . . . . 94
Bibliografı́a 99
iii
Prólogo
1
2 PRÓLOGO
Introducción
1.1. Antecedentes
Consideremos en primer lugar el planteamiento de un problema de regresión,
habitualmente especificado como sigue:
Sea un conjunto de n observaciones, {(Xi , Yi ), i = 1, . . . , n}, de una variable
aleatoria bidimensional, (X, Y ), satisfaciendo el modelo,
Yi = m(Xi ) + εi , i = 1, . . . , n, (1.1)
donde
5
6 CAPÍTULO 1. INTRODUCCIÓN
Para alcanzar tales objetivos se puede optar por dos aproximaciones diferentes:
asumir algún modelo paramétrico para la función de regresión o no imponer tal re-
stricción, asumiendo tan sólo que la función presenta algunas propiedades deseables
generalmente relacionadas con la derivabilidad.
La primera aproximación corresponderı́a a lo que se denomina Regresión Pa-
ramétrica, y supone que la función de regresión desconocida, m, pertenece a alguna
familia paramétrica de funciones, m ∈ {mθ |θ ∈ Θ}. De esta manera se procede a la
selección de alguna de ellas según algún criterio previamente especificado, como
puede ser el criterio de mı́nimos cuadrados. Por contraposición a la segunda
aproximación se le denomina Regresión No Paramétrica, y la única restricción
que se le impone a la función m, es que sea suave, entendiendo esta suavidad en
términos de derivabilidad. En este último sentido a estos métodos también se les
suele denominar métodos de suavizamiento o suavizado.
De partida podemos destacar de las dos aproximaciones una serie de ventajas e
inconvenientes:
Como podemos observar en este gráfico (Figura 1.1), en primer lugar hemos
definido unas bandas centradas en los puntos x = 25 y x = 30 con un ancho h en
cada una de ellos. Y después, hemos estimado las curvas de regresión en cada uno
de los puntos utilizando solamente las observaciones que caen dentro de cada una
de las bandas.
Por tanto, siguiendo esta idea se han desarrollado diversas técnicas, entre las que
destacaremos estos cuatro tipos:
n
X
c(x) =
m Wi (x)Yi (N adaraya − W atson, 1964)
i=1
donde:
Xi − x
Wi (x) ∼
= n−1 h−1 k
h
2
n
X p
X
Xi − x
mı́n Y −
i
βj (Xi − x)j h−1 k (Cleveland, 1979)
i=1 j=0 h
n
X Z
min n−1 {m(Xi ) − Yi }2 + λ (m(r) (x))2 dx (λ > 0)
i=1
N
X
cN (x) =
m θbj qj (x)
j=1
donde:
n
X
θbj = n−1 qj (Xi )Yi
i=1
2
n
X p
X
min Yi −
βj (Xi − x0 )j kh (Xi − x0 )
i=1 j=0
donde:
2
4. Gaussiano: k(u) = (2π)−1 exp( −x2 )1|u|≤1
- Plug-in Asintótico:
Parte de expresiones asintóticas teóricas del error (MSE ó MISE) y estima
lo desconocido. Y uno de los inconvenientes que tiene es que es necesario
realizar hipótesis bastante restrictivas sobre la función de regresión de-
sconocida, lo cual limita su campo de aplicación en la práctica. Además,
es válida para tamaños muestrales grandes porque en caso, de tamaños
muestrales pequeños dicho procedimiento no es efectivo.
- Plug-in no Asintótico:
Debido al problema que presenta el plug-in asintótico en muestras pequeñas,
se toma como punto de partida expresiones desarrolladas de los errores
teóricos de naturaleza no asintótica, incrustando en ellas las estimaciones
propuestas para los términos desconocidos. Por otro lado, dependiendo
de si utilizan iteraciones para llegar a la solución óptima, se pueden
distinguir entre:
- Plug-in iterativo:
Añaden una sucesión de iteraciones con el fin de conseguir una progresiva
mejora del ancho de banda. Su inconveniente es que aumenta el coste
computacional.
- Plug-in no iterativo ó directo:
Son los que no utilizan iteraciones para la obtención del selector del
parámetro.
Yi = m(Xi ) + εi (1.2)
2
n
X p
X X D
Y
mı́n β
Yi − βl1 ,...,ld (Xi − xj )lj KH (Xi − x)
i=1 L=1 l1 +...+ld =L j=1
cp (x) = βb0,...,0
m
−1
cp (x) = eT1 XTx Wx,H Xx
m XTx Wx,H Y
Casos particulares:
Pn
i=1 KH (Xi − x)Yi
c0 (x) = P
m n
i=1 KH (Xi − x)
16 CAPÍTULO 1. INTRODUCCIÓN
Para estimar este modelo se han propuesto en los últimos años diferentes méto-
dos, entre ellos destacamos el algoritmo backfitting, el método de integración marginal
y el smooth backfitting (Nielsen and Sperlich, 2005), como los más importantes, y a
partir de estós se han propuesto distintas modificaciones pero, todas ellas con el fin
de mejorar las estimaciones obtenidas.
El algoritmo backfitting, propuesto por Buja, Hastie y Tibshirani (1989) pro-
porciona un método iterativo para estimar las componentes unidimensionales. Sin
embargo, el hecho de ser un proceso iterativo dificulta el estudio de las propiedades
asintóticas de las estimaciones. Y por eso, esta dificultad del estudio de las propiedades
del algoritmo backfitting es lo que lleva a otros autores a plantearse métodos de es-
timación alternativos.
De esta forma, Linton y Nielsen(1995) proponen el método de integración
marginal para un modelo aditivo bivariante, este es un método que estima di-
rectamente cada una de las componentes univariantes y permite el estudio de sus
propiedades, y fue generalizado para un modelo multivariante (D > 2) por Hengart-
ner (1996) y Kim, Linton y Hengartner (1997).
Software disponible en R
2.1. Introducción
El programa R es un entorno de análisis y programación estadı́stico que forma
parte del proyecto de software libre GNU General Public Licence. R está disponible
en la dirección http://www.r-project.org. El proyecto R comenzó en 1995 por
un grupo de estadı́sticos de la universidad de Auckland, dirigidos por Ross Ihaka
y Robert Gentleman. R está basado en el lenguaje de programación S, diseñado
especı́ficamente para la programación de tareas estadı́sticas en los años 80 por los
Laboratorios Bell AT&T. El lenguaje S se considera un lenguaje de programación
estadı́stica orientado a objetos de alto nivel.
Frente a otros lenguajes de programación, R es sencillo, intuitivo y eficiente
ya que se trata de un lenguaje interpretado (a diferencia de otros como Fortran,
C++, Visual Basic, etc.). Como programa de análisis estadı́stico, R-base permite
realizar tareas estadı́sticas sencillas habituales y además permite extensiones que
implementan técnicas estadı́sticas avanzadas. De este modo se cubre las necesidades
de cualquier analista, tanto en el ámbito de la estadı́stica profesional como en el de
la investigación estadı́stica.
R consta de un sistema base pero la mayorı́a de las funciones estadı́sticas vienen
agrupadas en distintos libros (o bibliotecas del inglés packages) que se incorporan
de forma opcional. Para los métodos de regresión no paramétrica existen funciones
disponibles en el libro básico stats, no obstante el uso más adecuado de dichos méto-
dos puede conseguirse a través de funciones incorporadas en varios libros adicionales
y actualmente disponibles en la web. Entre estos libros destacan kernSmooth,
locpol, np, locfit,lokern, monreg, loess, sm, lowess etc.
En este capı́tulo haremos una descripción casi exhaustiva de algunos de estos
libros. En concreto nos centraremos en los libros kernSmooth, locpol, locfit y sm.
Se ha obviado sólo en algunos casos, partes que no corresponden a los objetivos
concretos de este trabajo y más concretamente de los métodos teóricos desarrollados
19
20 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R
en el capı́tulo primero.
Hemos de destacar que todo el trabajo aqui desarrollado está sujeto a la necesaria
y continua actualización, dado el rápido avance en esta materia computacional. En
este sentido los libros descritos se ha actualizado sólo en la fecha que se indica en
sus correspondientes apartados.
Función bkde
Descripción: devuelve las coordenadas x e y de un Binned estimado de la
densidad del núcleo para la función de probabilidad de los datos.
Función:
bkde(x, kernel = "normal", canonical = FALSE, bandwidth,
gridsize = 401L, range.x, truncate = TRUE)
donde:
El núcleo kernel puede ser: normal, box (rectangular), epanech (Beta(2,2)),
biweight (Beta(3,3)), triweight (Beta(3,3)).
Ejemplo de uso:
0.5
0.4
0.3
est$y
0.2
0.1
0.0
0 1 2 3 4 5 6
est$x
Función bkde2D
Función:
Valor devuelto por la función: esta función devuelve dos gráficos, el primero
es el contorno de las variables x1 y x2 y las estimaciones de fb. Y el segundo gráfico,
es la perpestiva de las estimaciones de fb.
Ejemplo de uso:
120
100
0.001
0.003
0.007
0.006
80
0.006
0.004
0.002
60
0.007
0.005
40
0 1 2 3 4 5 6
est$fhat
Función bkfe
Función:
donde:
Valor devuelto por la función: esta función lo que nos devuelve es un valor
aproximado de la estimación de la densidad.
Ejemplo de uso:
[1] 33.04156
Función dpih
Función:
donde:
Valor devuelto por la función: esta función devuelve un valor y con este se
construye el vector de los bins que posteriormente se utilizarán para construir el
histograma.
Ejemplo de uso:
[1] 0.2088382
Histogram of x
60
50
40
Frequency
30
20
10
0
1 2 3 4 5
Función dpik
Función:
donde:
Valor devuelto por la función: esta función devuelve el valor del ancho de
banda y después, lo utiliza con la función bkde para calcular los bins estimados de la
densidad del núcleo para finalmente representarlos gráficamente dicha estimación.
Ejemplo de uso:
[1] 0.1434183
0.6
0.4
est$y
0.2
0.0
1 2 3 4 5 6
est$x
Función dpill
Función:
donde:
Valor devuelto por la función: esta función devuelve el valor del ancho de
banda según el método descrito por Ruppert, Sheather y Wand (1995). Este valor
se puede utilizar para calcular el estimador de regresión lineal local.
Ejemplo de uso:
[1] 0.2342897
70
60
50
1 2 3 4 5
Función locpoly
Función:
donde:
Valor devuelto por la función: esta función devuelve un objeto con los re-
sultados de la estimación de la función de densidad o la función de regresión o sus
derivadas utilizando polinomios locales. A partir de este objeto se puede representar
el ajuste realizado usando el método plot.
Ejemplo de uso:
0.5
0.4
0.3
est$y
0.2
0.1
0.0
1 2 3 4 5
est$x
70
60
50
1 2 3 4 5
Función compKernVals
Funciones:
Kconvol(kernel,lower=dom(kernel)[[1]],upper=dom(kernel)[[2]],
subdivisions = 25)
donde:
Valor devuelto por las funciones: estas funciones devuelven un valor numérico
que son del tipo:
computeMu0 : es el integrante de K.
Kconvol : es la autoconvolución de K.
Ejemplo de uso:
> EpaK
function (x)
ifelse(abs(x) <= 1, 3/4 * (1 - x^2), 0)
attr(,"RK")
[1] 0.6
attr(,"RdK")
[1] 1.5
32 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R
attr(,"mu0K")
[1] 1
attr(,"mu2K")
[1] 0.2
attr(,"K4")
[1] 0.4337657
attr(,"dom")
[1] -1 1
> gaussK
function (x)
dnorm(x, 0, 1)
attr(,"RK")
[1] 0.2820948
attr(,"RdK")
[1] 0.1410474
attr(,"mu0K")
[1] 1
attr(,"mu2K")
[1] 1
attr(,"K4")
[1] 0.1994711
attr(,"dom")
[1] -Inf Inf
> TriweigK
function (x)
ifelse(abs(x) <= 1, 35/32 * (1 - x^2)^3, 0)
attr(,"RK")
[1] 0.815851
attr(,"RdK")
[1] 3.18182
attr(,"mu0K")
[1] 1
attr(,"mu2K")
[1] 0.111111
attr(,"K4")
[1] 0.5879012
attr(,"dom")
2.3. LIBRO LOCPOL 33
[1] -1 1
> TrianK
function (x)
ifelse(abs(x) <= 1, (1 - abs(x)), 0)
attr(,"RK")
[1] 0.666667
attr(,"RdK")
[1] 2
attr(,"mu0K")
[1] 1
attr(,"mu2K")
[1] 0.166667
attr(,"K4")
[1] 0.4793729
attr(,"dom")
[1] -1 1
Función denCVBwSelC
Función:
donde:
Valor devuelto por la función: esta función devuelve un valor numérico con
el ancho de banda.
Ejemplo de uso:
> stdy(100,kernel=gaussK)
> stdy(100,rVar=rexp,dVar=dexp,kernel=gaussK)
> stdy(200,rVar=rexp,dVar=dexp,kernel=gaussK)
2.3. LIBRO LOCPOL 35
Histogram of x
0.5
0.4
0.3
Density
0.2
0.1
0.0
−2 −1 0 1
0.4
0.2
0.0
0 1 2 3 4 5
Histogram of x
0.6
0.5
0.4
Density
0.3
0.2
0.1
0.0
0 2 4 6 8
Función equivKernel
Función:
equivKernel(kernel,nu,deg,lower=dom(kernel)[[1]],upper=dom(kernel)[[2]],
subdivisions=25)
donde:
Valor devuelto por la función: esta función devuelve un vector cuyas com-
ponentes son el núcleo equivalente utilizado para calcular el estimador polinomial
local de las derivadas de la función de regresión.
Ejemplo de uso:
> curve(EpaK(x),-3,3,ylim=c(-.5,1))
> f <- equivKernel(EpaK,0,3)
> curve(f(x),-3,3,add=TRUE,col="blue")
> curve(gaussK(x),-3,3,add=TRUE)
2.3. LIBRO LOCPOL 37
> curve(EpaK(x),-3,3,ylim=c(-.5,1))
> for(p in 1:5){
+ curve(equivKernel(gaussK,0,p)(x),-3,3,add=TRUE)
+ }
1.0
0.5
EpaK(x)
0.0
−0.5
−3 −2 −1 0 1 2 3
0.0
−0.5
−3 −2 −1 0 1 2 3
1.0
0.5
EpaK(x)
0.0
−0.5
−3 −2 −1 0 1 2 3
0.0
−0.5
−3 −2 −1 0 1 2 3
Función KernelChars
-- RK(K)
-- RdK(K)
-- mu2K(K)
-- mu0K(K)
-- K4(K)
-- dom(K)
Valor devuelto por las funciones: estas funciones devuelven un valor numérico.
Ejemplo de uso:
Función kernelCte
Descripción: estos son los valores en función del núcleo y del grado del poli-
nomio local que se utilizan en la selección del ancho de banda, tal como se propone
en Fan y Gijbels, 1996.
Funciones:
cteNuK(nu,p,kernel,lower=dom(kernel)[[1]],upper=dom(kernel)[[2]],
subdivisions= 25)
adjNuK(nu,p,kernel,lower=dom(kernel)[[1]],upper=dom(kernel)[[2]],
subdivisions= 25)
donde:
Valor devuelto por las funciones: ambas funciones devuelven valores numéri-
cos.
Función Kernels
Funciones:
-- CosK(x)
-- EpaK(x)
-- Epa2K(x)
-- gaussK(x)
-- ...
2.3. LIBRO LOCPOL 41
Función locCteWeights
Funciones:
locWeightsEval(lpweig, y)
locWeightsEvalC(lpweig, y)
donde:
Ejemplo de uso:
[1] 1.582489e-32
[1] 5.319263e-32
Función:
locpol(formula,data,weig=rep(1,nrow(data)),bw=NULL,kernel=EpaK,deg=1,
xeval=NULL,xevalLen=100)
confInterval(x)
## S3 method for class ’locpol’:
residuals(object,...)
## S3 method for class ’locpol’:
fitted(object,deg=0,...)
## S3 method for class ’locpol’:
2.3. LIBRO LOCPOL 43
summary(object,...)
## S3 method for class ’locpol’:
print(x,...)
## S3 method for class ’locpol’:
plot(x,...)
donde:
Valor devuelto por la función: devuelve una lista que contiene entre otros
componentes los siguientes:
kName: nombre del núcleo, una cadena con el nombre del núcleo.
lpFit: hoja de datos con el ajuste polinómico local, que contiene la covariable,
la respuesta, la derivada estimada, la densidad estimada X y la estimación de
la varianza.
44 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R
Ejemplo de uso:
> ## ex1
> d <- data.frame(x = runif(N))
> d$y <- d$x^2 - d$x + 1 + rnorm(N, sd = 0.1)
> r <- locpol(y~x,d)
> plot(r)
> ## ex2
> d <- data.frame(x = runif(N))
> d$y <- d$x^2 - d$x + 1 + (1+d$x)*rnorm(N, sd = 0.1)
> r <- locpol(y~x,d)
> plot(r)
> ## length biased data !!
> d <- data.frame(x = runif(10*N))
> d$y <- d$x^2 - d$x + 1 + (rexp(10*N,rate=4)-.25)
> posy <- d$y[ whichYPos <- which(d$y>0) ];
> d <- d[sample(whichYPos, N,prob=posy,replace=FALSE),]
> rBiased <- locpol(y~x,d)
> r <- locpol(y~x,d,weig=1/d$y)
> plot(d)
> points(r$lpFit[,r$X],r$lpFit[,r$Y],type="l",col="blue")
> points(rBiased$lpFit[,rBiased$X],rBiased$lpFit[,rBiased$Y],type="l")
> curve(x^2 - x + 1,add=TRUE,col="red")
+
1.1
+ +
+
++
++ +
+
+ + ++ + + +
++ + ++ +
1.0
+ +
+ +
+ + + + +
+ + +
+ +
+ +++
+ +
+ + ++ + + ++
++ +
+
+ + + + ++ + + +
+ +
+ ++ + + +
0.9
+ +
++ + + + + + + + ++
+ +
+
+ + + ++
+ + + + +
+
+ + + + + ++ ++ +
+ + + +
+ + +
+ + +
+ + +
+ + + + +
+ + + + + ++ +
0.8
+
y
+
+ +
+ ++ + + ++ + ++
+ + +
+ + + + + + + + + +
+ + +
+ ++ + + ++ + + +
+ ++ ++ + + +
++ + + +
+ + + ++ + +
+ + + +
+ + +
+ ++ +
0.7
+
++ + + + ++
+ +++ + +
+
+
+ + + + +
+
++ +
++
+ + +
+ +
0.6
+
+
+
+ +
0.5
1.4
+
+
1.2
+ ++ +
+
+ + + +
+ +
+ + + + +
+ + +
+
+ + + +
++
+
+
+ + + + +
+
1.0
+ + +
+ + + + + + + + +
+ ++ +
++ +
+ + +
+ + ++ + ++ +
+ +
+ + ++ + + ++
++ + + + + + + + + + + ++
+
y
+ + + + +
+ + +
+ + + + + + + +
+ + + + + + +
+ + + + +
+ + + ++ ++ +
0.8
+ ++ +
+ + ++ + ++ + +
+ +
+ + + + + ++ +
+
+ +++ + + +
+ ++ + + +
+ + + + + + +
+ + + + + +
+
+ + ++ ++ ++ +
+ + + + +
+ + +
+
+
+ + + ++ +
+ +
+ + + +
+ + + ++ + + +
+
0.6
+ ++
+ ++ ++ + +
++ +
+ +
+
+
+ + +
+ + +
+ ++
0.4
+
+
1.0
0.5
1.0
0.5
Función:
locCteSmootherC(x, y, xeval, bw, kernel, weig = rep(1, length(y)))
Valor devuelto por las funciones: devuelven una hoja de datos cuyos com-
ponentes dan los puntos de la evaluación, el estimador de regresión para la función
m(x) y sus derivadas en cada punto, y la estimación de la densidad marginal de x
para el grado p + 1. Estos componentes están dados por:
x: evaluación de puntos.
Ejemplo de uso:
> d
> bw <- 0.125
> fx <- xeval^2 - xeval + 1
> fx
[1] 1.00 0.91 0.84 0.79 0.76 0.75 0.76 0.79 0.84 0.91 1.00
> lpest3
Función pluginBw
páginas 110-112, y utiliza estimaciones piloto según al regla del pulgar (Rule of
thumb.
Función:
Ejemplo de uso:
[1] 0.1962416
[1] 0.1993822
[1] 0.1268736
CV th PI
bw 0.196241577 0.199382210 0.126873646
ise 0.001127976 0.001100554 0.002027269
2.3. LIBRO LOCPOL 53
1.0
0.5
d$y
0.0
−0.5
d$x
0.0
−0.5
d$x
Función PRDenEstC
Función:
Valor devuelto por la función: esta función devuelve una hoja de datos de
la forma: (x, den).
Ejemplo de uso:
x den
1 0.0 0.3762050
2 0.1 0.8861180
3 0.2 0.9478700
4 0.3 0.9940558
5 0.4 1.2625850
6 0.5 1.2979144
7 0.6 1.1465889
8 0.7 1.2102660
9 0.8 0.8060191
10 0.9 0.7589499
11 1.0 0.3192066
x den
1 0.0 0.4603164
2 0.1 1.0064206
3 0.2 0.5727967
4 0.3 1.1694444
2.3. LIBRO LOCPOL 55
5 0.4 1.0153751
6 0.5 1.4813057
7 0.6 0.9270388
8 0.7 1.4077981
9 0.8 0.5424289
10 0.9 1.1261434
11 1.0 0.2701843
x fx b0.125 b0.05
[1,] 0.0 1 0.3762050 0.4603164
[2,] 0.1 1 0.8861180 1.0064206
[3,] 0.2 1 0.9478700 0.5727967
[4,] 0.3 1 0.9940558 1.1694444
[5,] 0.4 1 1.2625850 1.0153751
[6,] 0.5 1 1.2979144 1.4813057
[7,] 0.6 1 1.1465889 0.9270388
[8,] 0.7 1 1.2102660 1.4077981
[9,] 0.8 1 0.8060191 0.5424289
[10,] 0.9 1 0.7589499 1.1261434
[11,] 1.0 1 0.3192066 0.2701843
Función regCVBwSelC
Función:
Ejemplo de uso:
[1] 0.1962416
[1] 0.1993822
[1] 0.1268736
CV th PI
bw 0.196241577 0.199382210 0.126873646
ise 0.001127976 0.001100554 0.002027269
1.0
0.5
d$y
0.0
−0.5
d$x
Función selKernel
Función:
selKernel(kernel)
Valor devuelto por la función: esta función devuelve un entero que es único
para cada núcleo.
Función simpleSmoothers
Función:
Valor devuelto por las funciones: ambas funciones devuelven una hoja de
datos con:
x: puntos de evaluación de x.
Ejemplo de uso:
> all(abs(prDen-ssDen)<1e-15)
[1] TRUE
1000
10000
1e+05
Función thumbBw
Función:
x: valores de x.
y: valores de y.
Ejemplo de uso:
[1] 0.1962416
[1] 0.1993822
[1] 0.1268736
CV th PI
bw 0.196241577 0.199382210 0.126873646
ise 0.001127976 0.001100554 0.002027269
1.0
0.5
d$y
0.0
−0.5
d$x
Uso de la función:
donde:
Valor devuelto por la función: esta función devuelve una lista con los
componentes de x (puntos de evaluación) e y (densidad estimada).
Ejemplo de uso:
> data(geyser)
> density.lf(geyser, window="tria")
64 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R
$x
[1] 1.564723 1.635550 1.706378 1.777206 1.848033 1.918861 1.989689
[8] 2.060516 2.131344 2.202172 2.272999 2.343827 2.414654 2.485482
[15] 2.556310 2.627137 2.697965 2.768793 2.839620 2.910448 2.981276
[22] 3.052103 3.122931 3.193759 3.264586 3.335414 3.406241 3.477069
[29] 3.547897 3.618724 3.689552 3.760380 3.831207 3.902035 3.972863
[36] 4.043690 4.114518 4.185346 4.256173 4.327001 4.397828 4.468656
[43] 4.539484 4.610311 4.681139 4.751967 4.822794 4.893622 4.964450
[50] 5.035277
$y
[1] 1.182697e-16 1.890007e-01 4.623314e-01 7.174016e-01 8.081279e-01
[6] 5.571365e-01 3.739426e-01 1.256785e-01 3.316671e-03 8.002072e-02
[11] 1.963319e-01 1.132892e-01 3.419681e-02 7.653125e-02 4.129095e-02
[16] 1.046841e-02 7.019261e-02 4.762960e-02 2.512419e-02 1.445726e-01
[21] 9.107183e-02 4.838509e-02 9.322311e-02 9.322311e-02 6.792613e-02
[26] 1.022381e-01 1.911011e-01 3.630067e-01 3.338104e-01 2.442562e-01
[31] 5.441002e-01 5.917874e-01 3.663234e-01 3.868570e-01 6.537848e-01
[36] 8.292375e-01 6.788447e-01 4.238963e-01 4.480279e-01 4.545461e-01
[41] 4.034270e-01 3.677768e-01 5.616119e-01 7.364176e-01 3.963838e-01
[46] 1.409679e-01 9.322311e-02 9.322311e-02 5.972420e-02 5.913483e-17
Call:
density.default(x = geyser, window = "tria")
Función gam.lf : es una llamada a la función locfit por lf() utilizada en los
términos del modelo aditivo. Normalmente no es llamada directamente por los
usuarios.
Uso de la función:
donde:
Función locfit: fórmula base del libro para el ajuste de la regresión local y
para los modelos de verosimilitud.
Uso de la función:
donde:
Valor devuelto por la función: esta función devuelve un objeto con clase
locfit y un conjunto estándar de métodos para impresión, gráficos, etc.
Ejemplo de uso:
o o
4
o
o o o
o o o o
o o oo
oo o o
o
o o
o
3 o
ooo
o
oo
o
o
o o o
NOx
o oo
2
o o oo
o o
o o
oo oo
o
o oo o
o o o
ooo o o
1
o o o oo
o o oo o
o
o o oo oo o
o
oo o
0
1
2.5
1.5
16
0.5
14
12
10
0.5
3.5
0.5
8
3
1.5
2.5
2
0
0.3
0.2
0.1
0.0
geyser
Función sjpi: calcula un ancho de banda a través del método plug-in propuesto
por Sheather y Jones (1991) para la estimacion de una densidad.
Uso de la función:
sjpi(x, a)
donde:
Valor devuelto por la función: esta función devuelve una matriz con cuatro
columnas; el número de filas es igual a la longitud de a. La primera columna
es el plug-in de ancho de banda seleccionado. La segunda columna es el ancho
de banda piloto a. La tercera columna es el ancho de banda piloto de acuerdo
con la supuesta relación de Sheather-Jones. La cuarta columna es un cálculo
intermedio.
Ejemplo de uso:
> data(geyser)
> gf <- 2.5
> a <- seq(0.05, 0.7, length=100)
> z <- sjpi(geyser, a)
1.0
Plug−in
SJ assumed
0.8
Bandwidth h
0.6
0.4
0.2
Pilot Bandwidth k
2.5. Libro sm
Valor devuelto por la función: esta función devuelve una lista que contiene los
2.5. LIBRO SM 69
Ejemplo de uso:
0.3
0.2
0.1
0.0
−2 0 2 4
0
−1
−2
−1 0 1 2
y[1]
Uso de la función:
Valor devuelto por la función: esta función devuelve el valor del parámetro
de suavización seleccionado.
Ejemplo de uso:
[1] 0.4766912
[1] 0.4164856
2.5. LIBRO SM 71
[1] 0.3869072
> sm.regression(x, y, df = 8)
0.10
Density fun
0.05
ction
0.00
2
1
2
x[2
0 1
]
0
]
−1 −1 x[1
−2
5
4
3
y
2
1
0
−1
−1 0 1 2
4
y
1
x[2
0 2
]
1
−1 0
x[1]
−1
Uso de la función:
donde:
• hstart: es el valor más pequeño de los puntos de la red para ser utilizado en
una búsqueda en la red inicial para el valor del parámetro de suavización.
• hend: es el mayor valor de los puntos de la red para ser utilizado en una
búsqueda en la red inicial para el valor del parámetro de suavización.
Valor devuelto por la función: esta función devuelve el valor del parámetro
de suavización que minimiza el criterio de validación cruzada en la cuadrı́cula
seleccionada.
Ejemplo de uso:
0.6
−0.28
0.4
CV
−0.32
0.2
−0.34
−0.36
0.0
1.0
8
0.5
6
CV
0.0
y
−0.5
4
−1.0
2
Uso de la función:
hnorm(x, weights)
Valor devuelto por la función: esta función devuelve el valor del parámetro
de suavización asintóticamente óptimo para el caso normal.
Ejemplo de uso:
[1] 0.4273578
Uso de la función:
hsj(x)
Valor devuelto por la función: esta función devuelve el valor del parámetro
de suavización encontrado por el método de Sheather-Jones.
Ejemplo de uso:
[1] 0.3350144
76 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R
Uso de la función:
donde:
Valor devuelto por la función: esta función devuelve una lista que contiene
los siguientes elementos:
• angle: cuando x es una matriz, este contiene los ángulos estimados en las
diferencias estandarizadas que fueron construidas.
Ejemplo de uso:
location st.diff
1888.5 -2.85
1889.5 -3.65
1890.5 -3.12
1891.5 -2.82
1896.5 3.78
1897.5 4
1898.5 4.77
1899.5 3.35
1915.5 -3.02
1938.5 2.58
location st.diff
1887.5 -2.9
1888.5 -3.28
1889.5 -3.34
1890.5 -3.03
1896.5 3.47
1897.5 4.2
1898.5 4.54
1899.5 4.48
1900.5 4.06
1901.5 3.37
1902.5 2.51
1000
1000
Volume
Volume
600
600
1880 1900 1920 1940 1960 1880 1900 1920 1940 1960
Year Year
0.30
1000
Volume
0.15
p
600
0.00
1880 1900 1920 1940 1960 2 4 6 8 10 12 14
Year h
Score1[ind]
1.5
−11.8 −11.4
2.5
Latitude
1.0 3
0.5
0.0 −11.2 e
Lon
143.0
143.2
−11.4 ud
gitu −11.8
143.4
143.6 tit
−11.6
de La
143.0 143.2 143.4 143.6 143.8
Longitude
0.4
4 2.
5
3
3.5
4.5
0.2
0.0
x1
Uso de la función:
Valor devuelto por la función: esta función devuelve una lista que contiene
los siguientes elementos:
Ejemplo de uso:
5200
5000
rc.age
4800
4600
cal.age
0.6
0.4
0.2
0.0
Lwt[Smoke == "N"]
Uso de la función:
donde:
Valor devuelto por la función: esta función devuelve una lista que con-
tiene los valores de la estimación de los puntos de evaluación, el parámetro de
suavización y los pesos del parámetro de suavización. Si se ha especificado un
modelo de referencia y la prueba se establece en TRUE, entonces se devuelve
el p-valor de la prueba.
Cuando sólo hay una covariable, también se devuelven los pesos asociados
con las diferentes observaciones, una estimación de la desviación del error
estándar y el error estándar de la estimación. Si se ha especificado un modelo
de referencia, el error estándar se refiere a la comparación entre la estimación
y el modelo de referencia y la definición de los valores del modelo de referencia
que serán devueltos también.
Ejemplo de uso:
> provide.data(trawl)
2.0
−11.4
Latitude
Score1
1.0
−11.6
−11.8
0.0
142.8 143.2 143.6 0.0 0.2 0.4 0.6 0.8
Score1[Z
Score1[Z
1.5 1.5
1.0 1.0
0.5 0.5
43
43
one92]
one92]
0.0 0.0 0.0 0.0
−1
−1
0.2 0.2
−11.8 0.4 −11.8 0.4
de
de
−11.7
L−11.6
ati−11.5 0.6 −11.7
L−11.6
ati−11.5 0.6
itu
itu
tu−11.40.8
de−11.3 tu−11.40.8
de−11.3
ng
ng
Lo
Lo
Figura 2.40: sm de sm-regression1
df = 6 h = 0.0948
2.0
1.5
Score1[Zone92]
1.0
0.5
0.0
Position[Zone92, 1]
1.5
Score1[Zon
1.0
0.5
e92]
0.0
−11.3
−11.4
−11.5
La
titu
−11.6 0.8
de
−11.7 0.6
0.4 − 143
−11.8 0.2 itude
g
0.0 Lon
Aplicación práctica
87
88 CAPÍTULO 3. APLICACIÓN PRÁCTICA
110
100
90
80
y
70
60
p=1
p=0
50
p=2
p=3
1 2 3 4 5
Figura 3.1: Estimador polinómico local de grado p para los datos del geyser. La
variable x es duración y la variable y es tiempo de espera y el tamaño de la hoja de
datos es n = 299
data(geyser, package="MASS")
x <- geyser$duration
y <- geyser$waiting
plot(x,y,title=’Suavizado por Splines para los datos del geyser’,
+ xlab=’Duración’,ylab=’Tiempo de espera’)
geyser.spl <- sm.spline(x,y)
geyser.spl
lines(geyser.spl, lty=1,lwd=2, col = "green")
geyser.sts<-smooth.spline(x,y)
geyser.sts
lines(geyser.spl, lty=2,lwd=2, col = "blue")
h1 <- dpill(x, y)
fit1 <- locpoly(x,y,bandwidth = h1, degree=1)
lines(fit1,col="red",lty=3,lwd=2)
legend(’topright’,legend=c("sm.spline", "smooth.spline",
+ "locpoly (plug-in)"), lwd=2,lty=1:3,
+ col=c("green","blue","red"))
110
sm.spline
smooth.spline
100
locpoly (plug−in)
90
Tiempo de espera
80
70
60
50
1 2 3 4 5
Duración
La Figura 3.2 muestra los ajustes realizados. Podemos observar que los resultados
gráficos de las funciones smooth.spline y sm.spline son idénticos, si bien los algo-
ritmos implementos difieren ligeramente y los resultados de los objetos generados
también. En concreto se obtiene:
> geyser.spl
Call:
smooth.Pspline(x = ux, y = tmp[, 1], w = tmp[, 2], method = method)
> geyser.sts
Call:
smooth.spline(x = x, y = y)
Con respecto a la bondad de los ajustes vemos que el estimador lineal local ofrece
una estimación más suavizada que los splines en este caso.
Nuestro siguiente objetivo será comparar todos los procedimientos disponibles
para la selección del ancho de banda, asociado al estimador lineal local. Los proced-
imientos para seleccionar el ancho de banda considerado son los métodos plug-in,
validación cruzada y la sencilla regla del pulgar.
La implementación de dichos métodos se hace en diversas funciones disponibles
en los libros KernSmooth, Locpol y sm (si bien existen algunas versiones más
disponibles en otros libros de R que contienen posibilidades para métodos no paramétri-
cos, como por ejemplo el libro Locfit que implementa versiones del estimador que
fijan el número de observaciones en el entorno local en lugar del tamaño del mismo).
Todas ellas fueron ampliamente descritas en el capı́tulo 2 de este trabajo, por
lo que aquı́ nos centraremos en su particular aplicación a los datos con los que
estamos trabajando. Agrupando las funciones según la metodologı́a de selección que
implementan, podemos enumerar las siguientes:
92 CAPÍTULO 3. APLICACIÓN PRÁCTICA
Selectores de tipo plug-in: la función dpill que forma parte del libro KernS-
mooth, implementando el método de Ruppert, Sheather y Wand (1995). Y
la función pluginBw dentro del libro Locpol, que implementa el método
descrito en el libro de Fan y Gijbels (1996) páginas 110-112.
data(geyser, package="MASS")
x <- geyser$duration
y <- geyser$waiting
plot(x,y,title=’Estimación lineal local para los datos del geyser’,
+ xlab=’Duración’,ylab=’Tiempo de espera’)
h1 <- dpill(x, y)
h1
fit1 <- locpoly(x,y,bandwidth = h1, degree=1)
lines(fit1,col="red",lty=1,lwd=2)
h2<- pluginBw(x,y, deg=1, kernel=gaussK)
h2
fit2 <- locpoly(x, y , bandwidth = h2, degree=1)
lines(fit2,col="yellow",lty=2,lwd=2)
h3<- regCVBwSelC(x,y, deg=1, kernel=gaussK)
h3
fit3 <- locpoly(x,y,bandwidth = h3, degree=1)
lines(fit3,col="green",lty=3,lwd=2)
h4<-h.select(x, y,method = "cv")
h4
fit4 <- locpoly(x,y,bandwidth = h4, degree=1)
lines(fit4,col="blue",lty=4,lwd=2)
legend(’topright’,legend=c("h1-dpill", "h2-pluginBw","h3-regCVBwSelC",
+ "h4-h.select"),lwd=2,lty=1:4,col=c("red", "yellow", "green","blue"))
3.1. ESTUDIO CON DATOS REALES 93
Los resultados obtenidos para los parámetros de suavizado son los siguientes:
> h1
[1] 0.2342897
> h2
[1] 0.08805326
> h3
[1] 0.739138
> h4
[1] 0.6789217
En el cálculo de h2, el parámetro según el método plug-in dentro del libro locpol
resulta notorio el valor tan pequeño que se obtiene en comparación con los otros.
Habrı́a que estudiar el procedimiento implementado puesto que si observamos la esti-
mación resultante (Figura 3.3) la curva estimada sufre de regularidades inadmisibles
en las proximidades de la frontera inicial, debido a la escasez de observaciones.
El resultado correspondiente a los criterios basados en validación cruzada (h3
y h4) son análogos, observándose leves diferencias que tendrá que ver con la im-
plementación concreta que se ha hecho del método (en concreto con la rejilla de
minimización definida para el criterio).
En este caso el mejor ajuste viene desde el método plug-in que implementa la
función dpill del libro KernSmooth.
110
h1−dpill
h2−pluginBw
100
h3−regCVBwSelC
h4−h.select
90
Tiempo de espera
80
70
60
50
1 2 3 4 5
Duración
Y = m(x) + ε
donde
m(x) = sen(2x) + 2exp(−16x2 )
y donde x se genera según una distribución uniforme continua en el intervalo (−2, 2)
y los residuos se consideran normales con media 0 y desviación tı́pica σ.
En primer lugar, empezaremos comparando el estimador polinómico local (EPL)
con con grados p = 0, 1, 3. El parámetro ancho de banda lo fijamos en h = 0,15.
Y en segundo lugar, de forma similar al ejercicio que hicimos con los datos del
geyser, compararemos el EPL con los distintos métodos de selección para el ancho
de banda (plug-in, CV, regla del pulgar), fijando ajustes de grado p = 1.
Para cuantificar la precisión de las estimaciones resultantes utilizaremos como cri-
terio de error la suma residual de cuadrados sobre una rejilla de puntos de estimación.
De este modo evaluaremos el estimador sobre una red de puntos xl , l = 1, ..., ngrid
equiespaciada en (−2, 2) de tamaño ngrid = 500. Una vez calculadas las estima-
ciones sobre la rejilla calcularemos los errores con la fórmula:
500
X
1
× ch (xl ))2
(m(xl ) − m (3.1)
500 i=1
y compararemos los resultados tomando la raı́z cuadrada.
Consideramos en primera lugar (caso 1) la estimación considerando muestras
de tamaño n = 100 y σ = 0,4. El código generado, ası́ como los resultados obtenidos
son los siguientes:
3.2. ESTUDIO CON DATOS SIMULADOS 95
n<-100
sigma<-0.4
nucleo<-gaussK
regFun<-function(x) sin(2*x)+2*exp(-16*x^2)
x<-runif(n,-2,2)
mx<-regFun(x)
y<-mx+rnorm(n,mean=0,sd=sigma)
plot(x,y,main="Datos simulados")
curve(sin(2*x)+2*exp(-16*x^2),col="black",lwd=2,add=T)
h<- 0.15
fit0 <- locpoly(x,y,bandwidth = h,degree=0)
lines(fit0,col="orange",lty=2,lwd=2)
fit1 <- locpoly(x,y,bandwidth = h, degree=1)
lines(fit1,col="blue",lty=3,lwd=2)
fit3 <- locpoly(x,y,bandwidth = h, degree=3)
lines(fit3,col="green",lty=4,lwd=2)
legend(’topright’,legend=c("Curva teórica", "ajuste p=0",
"ajuste p=1","ajuste p=3"),lwd=2,lty=1:4,col=c("black",
"orange","blue","green"))
Datos simulados
Curva teórica
2
ajuste p=0
ajuste p=1
ajuste p=3
1
y
0
−1
−2 −1 0 1 2
Datos simulados
2.0
Curva teórica
ajuste p=0
ajuste p=1
1.5
ajuste p=3
1.0
0.5
y
0.0
−0.5
−1.0
Datos simulados
Curva teórica
ajuste p=0
2
ajuste p=1
ajuste p=3
1
y
0
−1
−2 −1 0 1 2
Datos simulados
Curva teórica
ajuste p=0
ajuste p=1
2
ajuste p=3
1
y
0
−1
−2
−2 −1 0 1 2
n<-100
sigma<-0.4
ngrid<-500
nucleo<-gaussK
xgrid<-runif(ngrid,-2,2)
regFun<-function(x) sin(2*x)+2*exp(-16*x^2)
x<-runif(n,-2,2)
mx<-regFun(x)
y<-mx+rnorm(n,mean=0,sd=sigma)
p<-1
est <- function(h, x,y, xgrid,p,nucleo) return(locPolSmootherC(x,y,
xgrid, h, deg=p,kernel=nucleo)$beta0)
error<-function(val,est)return(sqrt(mean((val-est)^2)))
98 CAPÍTULO 3. APLICACIÓN PRÁCTICA
Los resultado obtenidos comparando con los tamaños muestrales n = 25, 50, 100, 500
se muestran de forma resumida en la siguiente tabla:
cv th pi
n= 25 0.3238807 0.2492679 NA
n= 50 0.2768001 0.2395432 0.2738346
n=100 0.2140991 0.2080944 0.2093302
n=500 0.07953835 0.09508265 0.08881742
cv th pi
101
102 Bibliografı́a
[13] Loader, C. (1999). Local Regression and Likelihood. Springer, New York.
[17] Bowman, A.W. and Azzalini, A. (1997). Applied Smoothing Techniques for
Data Analysis: the Kernel Approach with S-Plus Illustrations. Oxford University
Press, Oxford.
[18] Hurvich, C.M., Simonoff, J.S. and Tsai, C.-L. (1998). Smoothing parame-
ter selection in nonparametric regression using an improved Akaike information
criterion. J. R. Statistic. Soc., Series B, 60, 271-293.
[20] Bowman, A.W., Jones, M.C. and Gijbels, I. (1998). Testing monotonicity
of regression. J.Comp.Graph.Stat. 7, 489-500.
[22] Hastie, T.J. and Tibshirani R.J. Generalized Additive Models. Chapman
and Hall. (2000).
[23] Fan, J., Gijbels, I. and Hu, T.-C. and Huang, L.-S. (1996). An asymp-
totic study of variable bandwidth selection for local polynomial regression with
application to density estimation. Statistica Sinica, Vol. 6, No. 1.
[24] Wand, M.P. and Jones, M.C. (1994). Multivariate Plug-in Bandwidth Se-
lection. Computational Statistics, 9. pp. 97-116.
[25] Wand, M.P. and Jones, M.C. (1995). Kernel Smoothing. Monographs on
Statistics and Applied Probability 60. Ed. Chapman and Hall.
[26] Azzalini, A. and Bowman, A. W. (1990). A look at some data on the Old
Faithful geyser. Applied Statistics 39, 357-365.
Bibliografı́a 103
[28] Heckman, N. and Ramsay, J. O. (1996). Spline smoothing with model based
penalties. McGill University, unpublished manuscript.
[30] Linton, O.B., and Nielsen, J.P. (1995). A Kernel Method of Esti-
mating Structured Nonparametric Regression Based on Marginal Integration.
Biometrika, 82, 93–100.
[32] Kauermann, G., and Opsomer, J.D. (2003). Local Likelihood Estimation in
Generalized Additive Models. Scandinavian Journal of Statistics, 30, 317–337.
[33] Nielsen, J.P., and Sperlich, S. (2005). Smooth Backfitting in Practise. Jour-
nal of the Royal Statistical Society, Ser. B, 67, 43–61.
[34] Mammen, E., and Park, C. (2005). Bandwidth Selection for Smooth Back-
fitting in Additive Models. The Annals of Statistics, 33, 1260–1294.
[36] Opsomer, J.D., and Ruppert, D. (1997). Fitting a Bivariate Additive Model
by Local Polynomial Regression. The Annals of Statistics, 25, 186–211.
[37] Nadaraya, E.A. (1964). On estimating regression. Theory Probab. Appl, No.9,
pp. 141-142.
[38] Watson, G.S. (1964). Smooth regression analysis. Sankhya Ser. A, No. 26, pp.
101-116.
[39] Eubank, R.L. (1988). Spline Smoothing and Nonparametric Regression. Mar-
cel Dekker, New York.
104 BIBLIOGRAFÍA
[40] Cleveland, W.S. (1979). Robust Locally Weighted Regression and Smoothing
Scatterplots. Journal of the American Statistical Association, Vol. 74, No. 368.
Theory and Methods, pp. 829-836.
[41] Ruppert,D. Wand, M.P. and Carroll, R.J. (2003). Semiparametric Regres-
sion. Cambridge Series in Statistical and Probabilistic Mathematics. Cambridge
University Press.
[42] Ruppert, D. and Wand, M.P. (1994). Multivariate Locally Weighted Least
Squares Regression. The Annals of Statistics, Vol. 22, No. 3, pp. 1346-1370.
[43] Bellman, R.E. (1961). Adaptive control processes. Princeton University Press.
[46] Hastie, T.J. and Tibshirani R. (1990). Generalized additive models. Wash-
ington, D.C.;Chapman and Hall.
[47] Buja, A., Hastie, T.J. and Tibshirani, R. (1989). Linear smoothers and
additive models (with discussion). The Annals of Statistics, Vol. 17, No. 2, pp.
453–555.
[49] Hengartner, N.W. (1996). Rate optimal estimation of additive regression via
the integration method in the presence of many covariates. Preprint, Depart-
ment of Statistics, Yale University.