Está en la página 1de 107

REGRESIÓN

NO PARAMÉTRICA

EN R

Trabajo Fin de Máster


Máster en Estadı́stica Aplicada

Autora: Nisa Boukichou Abdelkader


Tutora: Marı́a Dolores Martı́nez Miranda
Índice general

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

Dado el rápido avance que ha experimentado la Estadı́stica Computacional en


las últimas décadas, hoy en dı́a podemos agradecerle el desarrollo de diversos cam-
pos dentro de la Estadı́stica, que eran impensables dado que requerı́an costosos
procedimientos de cálculo. Un ejemplo de este tipo lo constituyen los enfoques no
paramétricos del Análisis de Regresión.
Las técnicas de Regresión No Paramétrica logran una mejor adaptación a los
datos disponibles, mediante la obtención de estimaciones más próximas a la curva
de regresión subyacente. Esto es posible usando la información suministrada direc-
tamente desde los datos, sin formular rı́gidos modelos paramétricos.
En este trabajo nuestro objetivo ha sido el de explorar las técnicas de regresión
no paramétrica más habituales y las capacidades que R incorpora actualmente para
su aplicación práctica. En este sentido el trabajo se ha estructurado en tres capı́tulos.
El primero tiene como finalidad establecer los elementos teóricos fundamentales de
la regresión no paramétrica, desde la propia formulación del modelo. De este modo
para un problema general de regresión se definen dos vı́as se solución. Una serı́a la
regresión paramétrica o clásica que presenta la ventaja de ser más sencilla y menos
costosa desde el punto de vista computacional, pero que suele ser muy poco flexible
y de difı́cil adaptación en situaciones complejas. Paralelamente y no necesariamente
en contraposición (puesto que ambas pueden ir de la mano) la denominada regresión
no paramétrica. De esta última destacamos fundamentalmente su flexibilidad, ya que
permite una mejor adaptación a diversas situaciones y problemas, si bien requiere
de un elevado coste computacional y una mayor complejidad desde el punto de vista
teórico.
Una vez definido el contexto general y establecidas las caracterı́sticas particulares
que perfilan el problema de regresión no paramétrica frente a los planteamientos
clásicos paramétricos, se procede a analizar algunas de las más relevantes técnicas de
este tipo. El tratamiento que se ha hecho de dichos métodos en este trabajo, ha sido
dirigido fundamentalmente hacia la práctica y concreto la práctica con el software
R. De este modo no se ha profundizado en aspectos teóricos de complejidad como
son los estudios de tipo asintótico. Bajo tal perspectiva se han explorado métodos
univariantes y multivariantes, perfilándose los denominados métodos de regrésión
polinomial local como una buena solución, dadas sus buenas propiedades téoricas y

1
2 PRÓLOGO

sus deseables caracterı́sticas de interpretabilidad y sencillez en la práctica.


De forma sencilla se plantea también en este primer capı́tulo el conocido problema
de la dimensionalidad. Desde dicha motivación se introducen métodos que permiten
salvar dicho problema, como son los modelos de regresión aditivos no paramétri-
cos. Dichos modelos se caracterizan fundamentalmente porque la naturaleza de los
efectos de las variables explicativas sobre la variable de respuesta se considera de
forma individual. Esto obviamente permite ganar en simplicidad y también en in-
terpretabilidad.
Asociado a los métodos de regresión no paramétrica (univariantes o multivari-
antes) se introduce uno de los problemas técnicos cruciales en la práctica, la elección
del parámetro de suavizado o ancho de banda que define la complejidad del modelo.
Desde el punto de vista téorico se formula el problema de selección y se perfilan los
distintos métodos diseñados para su selección automática. En concreto se distingue
entre los métodos basados en la metodologı́a plug-in, los basados en el criterio de
validación cruzada (cross-validation) y los procedimientos basados en Bootstrap.
Una vez expuestos los elementos teóricos necesarios comienza el capı́tulo dos,
donde se hace un estudio profundo de los aspectos computacionales asociados a
dichos métodos. El software analizado es el entorno de análisis y programación es-
tadı́stica R y en contreto algunos de los libros especı́ficos de funciones, actualmente
disponibles en la web http://cran.es.r-project.org, para la aplicación práctica
de los métodos de regresión no paramétricos. Nuestra atención se ha centrado fun-
damentalmente en los libros kernSmooth, locpol, locfit y sm, si bien existen
funciones disponibles en otros libros (stats, monreg, lokern, loess, lowess, np,
psplines, etc.). Asociado a alguna aplicación de datos concreta se ilustrará también
el uso de alguna de estas funciones adicionales.
De estos libros de R se ha hecho una descripción casi exhaustiva, obviando 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 en el capı́tulo primero.
Hemos de destacar que todo el trabajo aquı́ desarrollado está sujeto a la necesaria
y continua actualización, dado el rápido avance en esta materia computacional. En
este sentido para cada libro se ha especificado la versión utilizada incorporando
dentro de la última (hasta septiembre de 2009) versión de R.
Para finalizar este trabajo se desarrollan en el capı́tulo tres algunas aplicaciones
prácticas. Nos hemos centrado en modelos de regresión univariante, haciendo uso de
algunas de las funciones analizadas en el capı́tulo dos. Se han ilustrado los métodos
de regresión no paramétrica para distintos conjuntos de datos. Hemos querido re-
alizar dichas ilustraciones usando datos reales (disponibles en libros de R) y también
mediante ejercicios de simulación. Con esto pretendemos iniciarnos en el método
habitualmente usado en la investigación para la validación práctica de las nuevas
metodologı́as propuestas. En la resolución de estos ejercicios prácticos hemos uti-
lizado varias funciones disponibles para el mismo problema. Esto nos ha permitido
ÍNDICE GENERAL 3

realizar conclusiones acerca de dichos procedimientos.


A modo de conclusión podemos decir que este trabajo nos ha permitido un
acercamiento a los métodos de regresión no paramétrica más habituales con un
enfoque eminentemente práctico. Las ilustraciones desarrolladas con datos permiten
explorar el modo en que actualmente se puede trabajar en R, para dar soluciones
al problema de regresión no paramétrico. Los métodos de regresión polinomial local
ofrecen una sencilla vı́a de solución, suficientemente documentada e implementada
en diversos libros de R. No obstante sigue siendo necesaria la incorporación de nuevas
funciones, que permitan la implementación de novedosas técnicas, que ocupan las
publicaciones actuales en dicha materia. Estamos seguros de que es cuestión de
no mucho tiempo y entre nuestros objetivos está el de intentar colaborar en dicha
tarea. El inicio de este propósito se traduce en el trabajo que actualmente tiene en
sus manos.

Nisa Boukichou Abdelkader


Granada, 27 de septiembre de 2009
4 ÍNDICE GENERAL
Capı́tulo 1

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

los residuos εi son variables aleatorias independientes (vv.aa.ii.) con media


cero y varianza σ 2 (Xi ),
y la función m es desconocida y se define como la función de regresión, m(x) =
E[Y |X = x].

Un planteamiento tal corresponde a un modelo de regresión de tipo univariante,


esto es, con tan sólo una variable explicativa, basado en un diseño aleatorio, donde
las observaciones constituyen una muestra aleatoria de la población (X,Y). Además,
estamos considerando una situación general de heterocedasticidad, es decir, las
varianzas de los errores se suponen distintas.
Con tal planteamiento el interés se centra principalmente en los tres objetivos
siguientes:

1. Explorar y representar la relación existente entre la variable explicativa, X, y


la variable Y .
2. Predecir el comportamiento de Y para valores de la variable X aún no obser-
vados.

5
6 CAPÍTULO 1. INTRODUCCIÓN

3. Estimar las derivadas de m, ası́ como algunas propiedades relacionadas.

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:

- Los modelos de Regresión Paramétrica en general son sencillos y de cálculo


rápido. Además, el presuponer que tienen una forma definida y paramétrica
para la función de regresión, hace que se tengan garantizadas de antemano
las propiedades de las estimaciones resultantes. Sin embargo, se caracterizan
por ser métodos poco flexibles y de difı́cil adaptación en diversas situaciones
reales.

- El planteamiento no paramétrico por el contrario, permite una mayor flexibili-


dad y por eso, se considera una de las mejores herramientas de tipo explorato-
rio. No obstante, el no realizar muchas hipótesis sobre la estructura subyacente
en los datos se traduce en soluciones mucho más complejas y con un mayor
coste computacional.

En este trabajo nos centraremos en la teorı́a de Regresión No Paramétrica y de


hecho será la aproximación que desarrollaremos con más detalle en lo que sigue.

1.2. Estimación del modelo de Regresión No Pa-


ramétrica
La teorı́a y los métodos de suavizamiento o regresión no paramétrica han cobrado
un gran auge en las últimas décadas unido al avance en materia computacional. Una
revisón de los mismos se puede encontrar por ejemplo en los libros de Wand y
Jones (1995), Fan y Gijbels (1996) y Loader (1999). El creciente interés por estas
1.2. ESTIMACIÓN DEL MODELO DE REGRESIÓN NO PARAMÉTRICA 7

metodologı́as ha tenido dos razones principales: la primera, que los estadı́sticos se


dieron cuenta de que planteamientos puramente paramétricos no aportaban la flex-
ibilidad necesaria para la estimación de las curvas que aparecı́an en la práctica. Y
la segunda razón estaba ligada al avance de la informática y al desarrollo de un
hardware que posibilitaba el costoso cálculo de esos estimadores no paramétricos.
Los primeros estimadores de regresión no paramétrica propuestos fueron los sencillos
estimadores de tipo núcleo de Nadaraya (1964) y Watson (1964). Dichos estimadores
se han ido refinando y perfeccionando dentro de los denominados métodos de re-
gresión polinomial local, convirtı́endose en uno de los métodos más empleados por
diversos analistas en la actualidad.
Y centrando la atención en la adecuada elección de los parámetros decisivos en
el buen comportamiento de los estimadores de regresión resultantes, como son: el
ancho de banda ó parámetro de suavizado y el grado de los ajustes polinomiales
locales. A continuación, en Eubank (1988) se puede encontrar el siguiente postulado
que dice lo siguiente:

Supongamos que la función de regresión desconocida m, es suave entonces, pode-


mos esperar que las observaciones tomadas en puntos próximos a uno dado x puedan
darnos información del vector de dicha función en x.

Con este planteamiento y sobre el diagrama de dispersión de los datos, se trata


de definir unas bandas centradas en cada punto y de un ancho h, y calcular la esti-
mación en el punto utilizando tan sólo las observaciones que caen dentro. Además,
para obtener la curva de regresión estimada, la banda definida por el parámetro
h recorrerá todo el diagrama de dispersión de izquierda a derecha. No obstante
también, al parámetro h se le suele llamar ancho de banda o parámetro de suavizado.

Figura 1.1: Ancho de Banda


8 CAPÍTULO 1. INTRODUCCIÓN

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:

1. Estimadores tipo núcleo: realizan un promedio de las observaciones que


caen en cada banda. Se definen como:

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. Regresión Polinomial Local: realiza un ajuste polinomial con las observa-


ciones que caen en la banda. Se define como:

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

3. Suavizamiento por Splines: se define como la solución a un problema de


mı́nimos cuadrados penalizados. Y se calcula de la siguiente forma:

n
X Z
min n−1 {m(Xi ) − Yi }2 + λ (m(r) (x))2 dx (λ > 0)
i=1

4. Estimadores basados en Desarrollos en Serie Ortogonal o los que están


tan de moda denominados Wavelets, se definen como:
1.2. ESTIMACIÓN DEL MODELO DE REGRESIÓN NO PARAMÉTRICA 9

N
X
cN (x) =
m θbj qj (x)
j=1

donde:

n
X
θbj = n−1 qj (Xi )Yi
i=1

Ruppert, Wand y Carroll (2003) establecen los siguientes factores a tener en


cuenta a la hora de evaluar y decidir qué tipo de estimador no paramétrico utilizar
en la práctica:

1. Conveniencia. ¿Está disponible en el software de uso habitual o favorito por


el analista?

2. Facilidad para su implementación. Si no está disponible directamente, ¿es fácil


implementarlo en el lenguaje de programación habitual del analista?

3. Flexibilidad. Se trata de ver si el estimador es capaz de explicar un amplio


abanico de tipos de relaciones que pueden existir entre las variables de interés.

4. Simplicidad y sencillez. ¿Es intuitivo? esto es, si es fácil entender cómo el


método actúa sobre los datos para dar respuestas.

5. Tratabilidad: ¿es sencillo estudiar las propiedades matemáticas del estimador?.

6. Fiabilidad. Si se tiene garantı́a de que las respuestas proporcionadas por el


estimador son “verdad”.

7. Eficiencia. Si el estimador hace un uso de los datos eficiente.

8. Posibilidades de extensión a otras situaciones o problemas más complicados.

Este trabajo se desarrolla desde una perspectiva computacional y práctica, en


este sentido ponemos especial atención en los puntos 1, 2, 3 y 8 anteriores. Ası́,
desde tales premisas, los métodos de regresión polinomial local constituyen una
adecuada elección. De hecho se trata de un procedimiento sencillo y muy intuitivo,
que está implementado y ampliamente documentado en programas estadı́sticos y
lenguajes de programación de uso extendido. Destacan implementaciones en S-Plus,
MatLab y en R através de diversos libros especı́ficos.
A continuación describiremos con más detalle el procedimiento de regresión poli-
nomial local desde el punto de vista teórico.
10 CAPÍTULO 1. INTRODUCCIÓN

1.3. Regresión Polinomial Local


Si suponemos que la función de regresión,m tiene p derivadas en un punto x0 ,
entonces vı́a el teorema de Taylor tenemos una aproximación de este tipo para los
valores en un entorno de x0 .
m′′ (x0 ) m(p) (x0 )
m(x) ≈ m(x0 ) + m′ (x0 )(x − x0 ) + (x − x0 )2 + ... + (x − x0 )p
2! p!
Luego, esto justifica que se puede aproximar localmente m por funciones polinómi-
cas de grado p.
p
X
Pp (x) = βj (x − x0 )j
j=0

Ası́, se obtienen estimaciones de los coeficientes βbj con j = 0, . . . , p y entonces,


observando la expresión, vemos que la estimación del término independiente β̂0
será un estimador de m en x0 y el resto de coeficientes βbj proporcionarán esti-
maciones de sus derivadas.

Por eso, con el fin de estimar m localmente mediante polinomios de grado p


consideraremos un problema de mı́nimos cuadrados ponderados:

 2
n 
X p
X 
min Yi −

βj (Xi − x0 )j  kh (Xi − x0 )
i=1 j=0

donde:

h es un parámetro denominado ancho de banda o parámetro de suavizado


que controla las observaciones que caen en cada entorno.

Kh (u) = h−1 K( uh ), donde la función K(·), se denomina función núcleo.


Dicha función define las ponderaciones que se asignan a cada observación en
el entorno local considerado. Habitualmente se supone una densidad simétrica
y con soporte compacto.

y p es el grado del ajuste polinomial local.

Además,como casos particulares se puede obtener el conocido estimador núcleo


de Nadaraya-Watson, que supone realizar ajustes polinomiales locales de grado cero,
y también cuando el ajuste polinomial es de grado uno, se obtiene el denominado es-
timador lineal local. Si bien los ajustes constantes has sido estudiados y ampliamente
1.3. REGRESIÓN POLINOMIAL LOCAL 11

utilizados por teóricos y analistas de datos, es el ajuste lineal el que ha mostrado


ser más conveniente y el más usado actualmente en la práctica (en este sentido es
interesante la discusión del artı́culo de Cleveland (1979).
Como anteriormente hemos mencionado la definición del estimador esta deter-
minado por tres parámetros: el ancho de banda, h, la función núcleo y el grado
p.
El ancho de banda se define como un parámetro positivo cuyo rango en prin-
cipio será la amplitud del intervalo de estimación. No obstante la elección de dicho
parámetro constituye uno de los aspectos cruciales del procedimiento de estimación.
Las buenas propiedades del estimador resultante dependerá en gran medida de la
elección que se haga de dicho parámetro. En este sentido existe una compensación
(trade-off en inglés) entre flexiblidad y complejidad que es contralada a través de di-
cho parámetro. Ası́, si dicho parámetro se toma muy pequeño, tan sólo observaciones
muy próximas al punto de estimación intervendrán en el cálculo del estimador, de-
scribiendo muy bien comportamientos locales pero obtendremos una curva estimada
muy variable. Si por el contrario, dicho parámetro se toma muy grande, las estima-
ciones en cada punto se verán afectadas por observaciones en puntos alejados de
forma que difı́cilmente se podrán recoger los comportamientos locales, dando lugar
a grandes sesgos y como consecuencia obtendremos poca variabilidad. Nótese por
tanto que una práctica con anchos de banda muy grandes se traduce en proced-
imientos computacionalmente costosos.
Ası́, desde un punto de vista teórico, la elección del ancho de banda tendrá que
buscar una adecuada compensación entre sesgo y varianza. Y desde un punto de
vista práctico supondrá la elección de la complejidad del modelo.
Por otro lado, con la elección del grado de los ajustes polinomiales nos ocurre
algo similar. Es decir, la utilización de ajustes de grado cero ó uno nos darán es-
timaciones con poca variabilidad, muy suaves, pero con sesgos muy elevados. Por
el contrario, cuando los ajustes son con grados mayores (dos ó tres) nos permitirán
mayor adaptabilidad, o sea, menores sesgos pero, obtendremos mayor varianza.
Luego, del mismo modo que para la elección del ancho de banda es necesario una
compensación entre sesgo y varianza, para elegir p se buscará también la compen-
sación óptima entre sesgo y varianza.
Y finalmente, la función núcleo, K, define la forma de los pesos que se asocian a
cada observación dentro de la banda definida y por tanto, determina su importancia
en el cálculo de la estimación. Para dicha función es habitual el uso de alguna de las
siguientes densidades:

1. Triangular: k(u) = (1 − |u|)1|u|≤1

2. Epanechnikov: k(u) = 43 (1 − u2 )1|u|≤1


15
3. Biponderado: k(u) = 16
(1 − u2 )2 1|u|≤1
12 CAPÍTULO 1. INTRODUCCIÓN

2
4. Gaussiano: k(u) = (2π)−1 exp( −x2 )1|u|≤1

En la práctica, la elección del núcleo no afecta al buen comportamiento de las


estimaciones resultantes, por lo que considerar una función u otra atiende funda-
mentalmente a razones técnicas.
Por otro lado, tenemos que el ancho de banda y el grado del polinomio necesitan
una compensación entre el sesgo y la varianza, por tanto, se definen a continuación
criterios para medir dicho compromiso y asimismo, la consecuente bondad de las
estimaciones.
Luego, entre las diversas medidas que se pueden definir, hemos considerado las
siguientes:

- El Error Cuadrático Medio Condicional en su versión local (MSE):


h i
MSE(m dh (x0 ) − m(x0 ))2
dh (x0 )) = EY /X (m

- El Error Cuadrático Medio Condicional en su versión global (MISE):


Z 
MISE(m
dh ) = EY /X dh (x) − m(x))2 dx
(m

Por tanto, como sabemos el error cuadrático medio se puede descomponer en


un término de sesgo al cuadrado más uno de varianza, por lo que podemos asumir
que este criterio permitirá la compensación entre sesgo y varianza anteriormente
mencionado.
n o2
dh (x0 )) = EY /X [m
M SE(m dh (x0 )] − m(x0 ) + V arY /X (m
dh (x0 ))
| {z } | {z }
sesgo2 varianza

En cuanto, a la elección entre un criterio u otro dependerá de que busquemos


optimalidad en cada punto (MSE) o bien, que busquemos la optimalidad conjunta
en todo el intervalo de estimación (MISE).
A continuación, veremos varios procedimientos de estimación de h o también
denominados selectores del ancho de banda o métodos se selección de la complejidad
del modelo.
1.4. MÉTODOS DE SELECCIÓN DE LA COMPLEJIDAD DEL MODELO 13

1.4. Métodos de selección de la complejidad del


modelo
A) Métodos Plug-in

La idea que subyace en este tipo de técnicas es que a partir de la expresión


óptima teórica del ancho de banda, se proponen estimadores de lo desconocido
que se incrustarán en dicha expresión teórica. No obstante, aunque estos pro-
cedimientos comparten una misma filosofı́a, podemos hacer una clasificación
de los mismos en dos categorı́as:

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

B) Otros métodos de selección automática basados en los datos:


Se basan en la minimización de criterios de error relacionados con con los
anteriores MSE y MISE pero conocidos, como es la suma residual de cuadrados
para obtener la selección del parámetro. Además, dentro del mismo destacamos
algunas de las elecciones más habituales, como son:
14 CAPÍTULO 1. INTRODUCCIÓN

• La validación cruzada por mı́nimos cuadrados.


• La validación cruzada generalizada.
• El criterio de información de Akaike.
• El error de predicción finito.
• El selector de Shibata.
• La T de Rice.

C) Procedimientos basados en aproximaciones Bootstrap


La metodologı́a bootstrap tiene como propósito ganar información acerca de
la distribución de un estimador. Sin embargo, en regresión no paramétrica
la metodologı́a bootstrap es utilizada fundamentalmente para dos tareas: la
primera es la de elegir el parámetro de suavizamiento o ancho de banda y la
segunda es la de construir intervalos de confianza para la curva de regresión.

1.5. Extensión multivariante


Consideramos ahora la extensión del modelo (1.1) al caso en que se considera
más de una covariable. De este modo sea Xi un vector de D covariables y el modelo
general de regresión multivariante heterocedástico dado por:

Yi = m(Xi ) + εi (1.2)

donde la función σ(x) = V ar[Y |X = x] es finita, y los residuos, εi , son vari-


ables independientes e idénticamente distribuidas, con media cero, varianza σ 2 (Xi )
y son independientes de los vectores aleatorios, Xi . La función de regresión, m(x) =
E[Y |X = x], con x = (x1 , . . . , xD )T .
El modelo de regresión lineal multivariante supone que la relación entre la vari-
able de respuesta Y y cada una de las variables independientes es lineal. A veces,
es evidente que esta relación no es lineal, por lo que hay que considerar modelos
que sean más flexibles. Las técnicas de regresión no paramétricas responden a esta
flexibilidad ya que no imponen condiciones sobre la forma de la función D-variante,
m(x).
En esta situación, los estimadores más comunes para m(x) son versiones mul-
tivariantes de los estimadores tipo núcleo (como los polinomiales locales descritos
anteriormente) o splines de suavizamiento. Ruppert y Wand (1994) introducen la
extensión multivariante del estimador polinomial local. A continuación describimos
el estimador polinomial local para el caso general de grado p y D > 1. Consideramos
el siguiente problema de mı́nimos cuadrados ponderados:
1.5. EXTENSIÓN MULTIVARIANTE 15

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

donde: β = {βl1 ,...,lD : l1 + . . . + lD = L} y L = {0, . . . , p} es un vector de coefi-


cientes, H es una matriz de dimensión D × D simétrica, definida positiva; K(·) es
una función núcleo no negativa D-variante y KH (u) = |H|−1/2 K(H −1/2 u).
A la matriz H se le denomina matriz ancho de banda, dado que es la extensión
multivariante del parámetro ancho de banda univariante. Si denotamos por βbj , j =
0, . . . , p, a las soluciones del problema anterior entonces, usando el desarrollo de
Taylor, el estimador polinómico local vendrá dado por la primera de ellas, esto es:

cp (x) = βb0,...,0
m

El problema en forma matricial y su solución, se definen mediante:

mı́n (Y − Xx β)T Wx,H (Y − Xx β)


β

 −1
cp (x) = eT1 XTx Wx,H Xx
m XTx Wx,H Y

donde e1 es un vector (pD + 1), con un 1 en la primera posición y 0 en el resto,


Y = (Y1 , . . . , Yn )T ,
 
1 (X1 − x)T · · · ((X1 − x)p )T
 . .. ... .. 
Xx = 
 .. . . 

1 (Xn − x)T · · · ((Xn − x)p )T
y

Wx,H = diag {KH (X1 − x), . . . , KH (Xn − x)}

Casos particulares:

p = 0, este coincide con la versión multivariante del estimador núcleo de


Nadaraya-Watson:

Pn
i=1 KH (Xi − x)Yi
c0 (x) = P
m n
i=1 KH (Xi − x)
16 CAPÍTULO 1. INTRODUCCIÓN

p = 1, es el estimador lineal local multivariante (Ruppert y Wand, 1994):


 −1
c1 (x) = eT1 XTx,H Wx,H Xx
m XTx Wx,H Y

1.5.1. El problema de la dimensionalidad


Aunque la generalización al caso multidimensional de la mayorı́a de técnicas
de suavizamiento es posible, aparece un problema importante conocido como: el
problema de la dimensionalidad, (en inglés the curse of dimensionality, Bell-
man,1961).
Este problema se refiere al hecho de que cuando estamos estimando, considerando
un entorno con un número fijo de datos, y tenemos una superficie de gran dimensión,
dicho entorno puede ser demasiado grande como para ser llamado local, es decir,
si un entorno local contiene 10 datos de cada variable, entonces el correspondiente
entorno local D − dimensional contiene 10D datos.
Como consecuencia se necesitan conjuntos de datos mucho más grandes incluso
cuando D no es muy elevado, y en la práctica puede que tales conjuntos no estén
disponibles.
Otro problema que presentan los estimadores multivariantes es la falta de inter-
pretabilidad, ya que será difı́cil de visualizarlos gráficamente. No es posible repre-
sentar superficies para D > 2.
También resulta un inconveniente el excesivo coste computacional de las versiones
multivariantes, que requieren un gran número de operaciones. Esto hace que en la
práctica los suavizadores multidimensionales sólo se apliquen hasta dimensiones 2
ó 3.
Los problemas anteriores nos llevan a plantear modelos alternativos que eviten
estos inconvenientes, como los que se comentan en este trabajo y que reciben el
nombre de modelos aditivos.
Los modelos aditivos se presentan como una herramienta útil para el análisis de
datos. Estos modelos mantienen una importante caracterı́stica de interpretación de
los modelos lineales, al tener representada cada variable de forma separada. Ası́ la
naturaleza de los efectos de una variable sobre la variable de respuesta no depende
de los valores de las otras variables.
Los modelos aditivos fueron formulados por Friedman y Stuetzle, (1981) y con-
stituı́an el centro del algoritmo ACE de Breiman y Friedman(1985).

1.5.2. Modelos aditivos no paramétricos


Propuestos por Hastie y Tibshirani (1990), son una técnica de regresión no
paramétrica multivariante muy utilizada. Frente a otras técnicas de regresión no
1.6. SELECCIÓN DEL PARÁMETRO ANCHO DE BANDA 17

paramétrica multivariante, los modelos aditivos pueden interpretar fácilmente los


efectos individuales de las variables independientes sobre la variable dependiente,
sin tener en cuenta que el número de variables sea elevado. Si partimos del modelo
de regresión múltiple heterocedástico (1.2), el modelo aditivo supone que la función,
m, se puede escribir como la suma de funciones univariantes de cada una de las
variables independientes, que se suponen suaves; es decir:
h i
m(x) = E Y |X = (x1 , . . . , xD )T = α + m1 (x1 ) + . . . + mD (xD )

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

1.6. Selección del parámetro ancho de banda


La selección de una matriz de anchos de banda en el caso general multivariante,
H, a partir de los datos, ha sido mucho menos considerado en la literatura que el
problema en el caso univariante, en el que interviene un único ancho de banda.
En el caso de los modelos aditivos, el parámetro es un vector que define el grado
de suavizamiento empleado en cada componente del modelo y puede considerar un
ancho de banda diferente para cada una de las componentes aditivas o un único
parámetro común para todas ellas.
Al igual que en el caso univariante se pueden utilizar diversos métodos de se-
lección del parámetro ancho de banda. Los más destacados son el método plug-in y
el método de validación cruzada. Para una revisión de estos métodos se pueden ver
en el libro de Hastie y Tibshirani (1990) y en el de Martı́nez Miranda et al., (2008).
18 CAPÍTULO 1. INTRODUCCIÓN

El método de validación cruzada de este modelo se puede encontrar en el libro


de Kim, Linton y Hengartner, 1999; en el de Kauermann y Opsomer, 2003 y en el
de Nielsen y Sperlich, 2005.
Y para los métodos plug-in ver los libros de Opsomer y Ruppert, 1997; el de
Severance-Lossin y Sperlich, 1997 y el de Mammen y Park, 2005.
Capı́tulo 2

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.

2.2. Libro KernSmooth


En este libro llamado KernSmooth se trabajará con funciones para el suavizado
del núcleo y la estimación de densidades correspondientes al texto de Wand y Jones
(1995). Dicho libro corresponde a la actualización del 24-05-2009, versión 2.23-2 y
esta sujeta a cualquier modificación a dı́a de hoy porque esta en constante actual-
ización.
Además, nos vamos a encontrar en este libro diferentes funciones con las que
podremos trabajar el tema que nos ocupa como es la regresión no paramétrica. Los
detalles de cada una de las funciones se verán en cada sección de las mismas con
más detenimiento pero, básicamente tratan de calcular el parámetro de selección, el
estimador de densidad, el cálculo de los bins y la función de regresión.

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

Valor devuelto por la función: esta función devuelve un gráfico de la función


de probabilidad.

Ejemplo de uso:

> data(geyser, package="MASS")


> x <- geyser$duration
2.2. LIBRO KERNSMOOTH 21

> est <- bkde(x, bandwidth=0.25)


> plot(est, type="l")

0.5
0.4
0.3
est$y

0.2
0.1
0.0

0 1 2 3 4 5 6

est$x

Figura 2.1: KernSmooth de bkde

Función bkde2D

Descripción: devuelve la red de puntos y la matriz de densidad estimada in-


ducida. El núcleo es la densidad normal bivariada.

Función:

bkde2D(x, bandwidth, gridsize = c(51L, 51L), range.x, truncate = TRUE)

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:

> data(geyser, package="MASS")


> x <- cbind(geyser$duration, geyser$waiting)
22 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

> est <- bkde2D(x, bandwidth=c(0.7, 7))


> contour(est$x1, est$x2, est$fhat)
> persp(est$fhat)

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

Figura 2.2: KernSmooth de bkde2D1


Z

est$fhat

Figura 2.3: KernSmooth de bkde2D2

Función bkfe

Descripción: calcula una estimación aproximada (binned ) para la estimación


tipo núcleo de una función de densidad. El núcleo es la densidad normal estándar.
2.2. LIBRO KERNSMOOTH 23

Función:

bkfe(x, drv, bandwidth, gridsize = 401L, range.x, binned = FALSE,


truncate = TRUE)

donde:

El drv: es el orden de la derivada en la función de densidad.

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:

> data(geyser, package="MASS")


> x <- geyser$duration
> est <- bkfe(x, drv=4, bandwidth=0.3)
> est

[1] 33.04156

Función dpih

Descripción: Se utiliza directamente el método plug-in para seleccionar el tamaño


del bin de un estimador de tipo histograma.

NOTA: Plug-in puede ser asintótico y no asintótico, y si se usa iteraciones para


llegar a la solución óptima pueden ser plug-in iterativo y plug-in no iterativo (di-
recto).

Función:

dpih(x, scalest = "minim", level = 2L, gridsize = 401L,


range.x = range(x), truncate = TRUE)

donde:

El minim es el mı́nimo de la desviación tı́pica estándar (stdev ) y del rango


intercuartilico (iqr ) dividido por 1’349.
24 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

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:

> data(geyser, package="MASS")


> x <- geyser$duration
> h <- dpih(x)
> bins <- seq(min(x)-0.1, max(x)+0.1+h, by=h)
> hist(x, breaks=bins)

> h <- dpih(x)


> h

[1] 0.2088382

> bins <- seq(min(x)-0.1, max(x)+0.1+h, by=h)


> bins

[1] 0.7333333 0.9421715 1.1510096 1.3598478 1.5686859 1.7775241 1.9863623


[8] 2.1952004 2.4040386 2.6128767 2.8217149 3.0305530 3.2393912 3.4482294
[15] 3.6570675 3.8659057 4.0747438 4.2835820 4.4924202 4.7012583 4.9100965
[22] 5.1189346 5.3277728 5.5366110 5.7454491

Histogram of x
60
50
40
Frequency

30
20
10
0

1 2 3 4 5

Figura 2.4: KernSmooth de dpih


2.2. LIBRO KERNSMOOTH 25

Función dpik

Descripción: Se utiliza directamente el método plug-in para seleccionar el ancho


de banda de la densidad estimada tipo núcleo.

Función:

dpik(x, scalest = "minim", level = 2L, kernel = "normal",


canonical = FALSE, gridsize = 401L, range.x = range(x),
truncate = TRUE)

donde:

El minim es el mı́nimo de la desviación tı́pica estándar, stdev y del rango


intercuartı́lico, iqr dividido por 1.349.

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:

> data(geyser, package="MASS")


> x <- geyser$duration
> h <- dpik(x)
> h

[1] 0.1434183

> est <- bkde(x, bandwidth=h)


> plot(est,type="l")
26 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

0.6
0.4
est$y

0.2
0.0

1 2 3 4 5 6

est$x

Figura 2.5: KernSmooth de dpik

Función dpill

Descripción: Se utiliza el método plug-in para la selección del ancho de banda


de un estimador lineal local con núcleo gaussiano, descrito por Ruppert, Sheather y
Wand (1995).

Función:

dpill(x, y, blockmax = 5, divisor = 20, trim = 0.01, proptrun = 0.05,


gridsize = 401L, range.x, truncate = TRUE)

donde:

El blockmax es el número máximo de bloques de los datos para la construcción


de un parámetro inicial estimado.

El trim es la proporción de la muestra de cada uno de los extremos recortados


en la dirección x antes de aplicar el método plug-in.

El proptrun es la proporción de la serie de x en cada extremo truncado en la


función estimada.
2.2. LIBRO KERNSMOOTH 27

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:

> local({pkg <- select.list(sort(.packages(all.available = TRUE)))


+ if(nchar(pkg)) library(pkg, character.only=TRUE)})
KernSmooth 2.23 loaded
Copyright M. P. Wand 1997-2009

> data(geyser, package = "MASS")


> x <- geyser$duration
> y <- geyser$waiting
> plot(x, y)
> h <- dpill(x, y)
> h

[1] 0.2342897

> fit <- locpoly(x, y, bandwidth = h)


> lines(fit)
110
100
90
80
y

70
60
50

1 2 3 4 5

Figura 2.6: KernSmooth de dpill


28 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

Función locpoly

Descripción: Estima una función de densidad de probabilidad, una función de


regresión o sus derivadas utilizando polinomios locales.

Función:

locpoly(x, y, drv = 0L, degree, kernel = "normal",


bandwidth, gridsize = 401L, bwdisc = 25,
range.x, binned = FALSE, truncate = TRUE)

donde:

El drv es el orden de la derivada para ser estimada.

El bwdisc es el número de anchos de banda equiespaciados logaritmicamente


utilizados para acelerar el cálculo.

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:

> data(geyser, package = "MASS")


> # local linear density estimate
> x <- geyser$duration
> est <- locpoly(x, bandwidth = 0.25)
> plot(est, type = "l")

> # local linear regression estimate


> y <- geyser$waiting
> plot(x, y)

> fit <- locpoly(x, y, bandwidth = 0.25)


> lines(fit)
2.2. LIBRO KERNSMOOTH 29

0.5
0.4
0.3
est$y

0.2
0.1
0.0

1 2 3 4 5

est$x

Figura 2.7: KernSmooth de locpoly


110
100
90
80
y

70
60
50

1 2 3 4 5

Figura 2.8: KernSmooth de locpoly


30 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

2.3. Libro Locpol

En este libro se recogen funciones que calculan estimadores de tipo polinomial


local, según se describen en Fan y Gijbels (1996) o Wand y Jones (1995). Dicho libro
corresponde a la actualización del 17-04-2009, versión es del 0.2-0.
Dentro de este libro se recogen funciones para calcular cantidades útiles asociadas
a los núcleos, el estimador de densidad, la estimación polinomial local ası́ como
selectores del parámetro ancho de banda de tipo plug-in y validación cruzada.

Función compKernVals

Descripción: permiten calcular valores útiles relacionados con el núcleo.

Funciones:

computeRK(kernel, lower=dom(kernel)[[1]], upper=dom(kernel)[[2]],


subdivisions = 25)

computeK4(kernel, lower=dom(kernel)[[1]], upper=dom(kernel)[[2]],


subdivisions = 25)

computeMu(i, kernel, lower=dom(kernel)[[1]], upper=dom(kernel)[[2]],


subdivisions = 25)

computeMu0(kernel, lower=dom(kernel)[[1]], upper=dom(kernel)[[2]],


subdivisions = 25)

Kconvol(kernel,lower=dom(kernel)[[1]],upper=dom(kernel)[[2]],
subdivisions = 25)

donde:

lower, upper: son los lı́mites de integración inferior y superior.

Valor devuelto por las funciones: estas funciones devuelven un valor numérico
que son del tipo:

computeK4 : es el cuarto fin de autoconvolución de K.

computeRK : es el segundo fin de autoconvolución de K.


2.3. LIBRO LOCPOL 31

computeMu0 : es el integrante de K.

computeMu2 : es el segundo momento de orden K.

computeMu: es el i-ésimo momento de orden K.

Kconvol : es la autoconvolución de K.

Ejemplo de uso:

> g <- function(kernels)


+ {
+ mu0 <- sapply(kernels,function(x) computeMu0(x,))
+ mu0.ok <- sapply(kernels,mu0K)
+ mu2 <- sapply(kernels,function(x) computeMu(2,x))
+ mu2.ok <- sapply(kernels,mu2K)
+ Rk.ok <- sapply(kernels,RK)
+ RK <- sapply(kernels,function(x) computeRK(x))
+ K4 <- sapply(kernels,function(x) computeK4(x))
+ res <- data.frame(mu0,mu0.ok,mu2,mu2.ok,RK,Rk.ok,K4)
+ res
+ }
> g(kernels=c(EpaK,gaussK,TriweigK,TrianK))

mu0 mu0.ok mu2 mu2.ok RK Rk.ok K4


1 1 1 0.2000000 0.200000 0.6000000 0.6000000 0.4337657
2 1 1 1.0000000 1.000000 0.2820948 0.2820948 0.1994711
3 1 1 0.1111111 0.111111 0.8158508 0.8158510 0.5879019
4 1 1 0.1666667 0.166667 0.6666667 0.6666670 0.4793655

## Sacamos los valores de cada función individualmente pero


## son los mismos que se observan en la tabla anterior.

> 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

Descripción: calcula el selector mediante validación cruzada del ancho de banda


para el estimador de la densidad de Parsen-Rosenblatt.

Función:

denCVBwSelC(x, kernel = gaussK, weig = rep(1, length(x)),


interval = .lokestOptInt)

donde:

weig: es un vector de pesos para las observaciones.

Valor devuelto por la función: esta función devuelve un valor numérico con
el ancho de banda.

Ejemplo de uso:

> stdy <- function(size=100,rVar=rnorm,dVar=dnorm,kernel=gaussK,x=NULL)


+ {
34 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

+ if( is.null(x) ) x <- rVar(size)


+ Tc <- system.time( dbwc <- denCVBwSelC(x,kernel) )[3]
+ ucvT <- system.time( ucvBw <- bw.ucv(x,lower=0.00001,upper=2.0) )[3]
+ nrdT <- system.time( nrdBw <- bw.nrd(x) )[3]
+ {
+ xeval <- seq( min(x)+dbwc , max(x)-dbwc ,length=50)
+ hist(x,probability=TRUE)
+ lines(xeval,trueDen <- dVar(xeval),col="red")
+ lines(density(x),col="cyan")
+ xevalDenc <- PRDenEstC(x,xeval,dbwc,kernel)
+ dencMSE <- mean( (trueDen-xevalDenc)^2 )
+ xevalucvDen <- PRDenEstC(x,xeval,ucvBw,kernel)
+ ucvMSE <- mean( (trueDen-xevalucvDen)^2 )
+ xevalDenNrd <- PRDenEstC(x,xeval,nrdBw,kernel)
+ nrdMSE <- mean( (trueDen-xevalDenNrd)^2 )
+ lines(xevalDenc,col="green")
+ lines(xevalucvDen,col="blue")
+ lines(xevalDenNrd,col="grey")
+ }
+ return( cbind( bwVal=c(evalC=dbwc,ucvBw=ucvBw,nrdBw=nrdBw),
+ mse=c(dencMSE,ucvMSE,nrdMSE),
+ time=c(Tc,ucvT,nrdT) ) )
+ }

> stdy(100,kernel=gaussK)

bwVal mse time


evalC 0.1806189 0.5476062 6.92
ucvBw 0.1846771 0.5474982 0.06
nrdBw 0.3460004 0.5448560 0.01

> stdy(100,rVar=rexp,dVar=dexp,kernel=gaussK)

bwVal mse time


evalC 0.1197885 4.646692 7.59
ucvBw 0.1209562 4.646678 0.00
nrdBw 0.3183121 4.647766 0.00

> stdy(200,rVar=rexp,dVar=dexp,kernel=gaussK)
2.3. LIBRO LOCPOL 35

bwVal mse time


evalC 0.06563341 8.532414 33.04
ucvBw 0.06655133 8.532399 0.01
nrdBw 0.28667317 8.533728 0.00

## check stdy with other kernel, distributions

Histogram of x
0.5
0.4
0.3
Density

0.2
0.1
0.0

−2 −1 0 1

Figura 2.9: Locpol de denCVBwSelC1


Histogram of x
0.8
0.6
Density

0.4
0.2
0.0

0 1 2 3 4 5

Figura 2.10: Locpol de denCVBwSelC2


36 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

Histogram of x

0.6
0.5
0.4
Density

0.3
0.2
0.1
0.0

0 2 4 6 8

Figura 2.11: Locpol de denCVBwSelC3

Función equivKernel

Descripción: calcula el núcleo equivalente asociado a la estimación polinómica


local de la función de regresión o sus derivadas.

Función:

equivKernel(kernel,nu,deg,lower=dom(kernel)[[1]],upper=dom(kernel)[[2]],
subdivisions=25)

donde:

nu: es el orden de derivadas a estimar.

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

> f <- equivKernel(gaussK,0,3)


> curve(f(x),-3,3,add=TRUE,col="blue")

> ## Draw several Equivalent local polynomial kernels

> 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

Figura 2.12: Locpol de equivKernel


1.0
0.5
EpaK(x)

0.0
−0.5

−3 −2 −1 0 1 2 3

Figura 2.13: Locpol de equivKernel


38 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

1.0
0.5
EpaK(x)

0.0
−0.5

−3 −2 −1 0 1 2 3

Figura 2.14: Locpol de equivKernel


1.0
0.5
EpaK(x)

0.0
−0.5

−3 −2 −1 0 1 2 3

Figura 2.15: Locpol de equivKernel


2.3. LIBRO LOCPOL 39

Función KernelChars

Descripción: para un determinado núcleo devuelve algunos de los valores numéri-


cos más comúnmente utilizados para funciones relacionadas con ellos.

Funciones: aquı́ tenemos las mismas que en el punto 2.2.1.

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

> g <- function(kernels)


+ {
+ mu0 <- sapply(kernels,function(x) computeMu0(x,))
+ mu0.ok <- sapply(kernels,mu0K)
+ mu2 <- sapply(kernels,function(x) computeMu(2,x))
+ mu2.ok <- sapply(kernels,mu2K)
+ Rk.ok <- sapply(kernels,RK)
+ RK <- sapply(kernels,function(x) computeRK(x))
+ K4 <- sapply(kernels,function(x) computeK4(x))
+ res <- data.frame(mu0,mu0.ok,mu2,mu2.ok,RK,Rk.ok,K4)
+ res
+ }
> g(kernels=c(EpaK,gaussK,TriweigK,TrianK))

mu0 mu0.ok mu2 mu2.ok RK Rk.ok K4


1 1 1 0.2000000 0.200000 0.6000000 0.6000000 0.4337657
2 1 1 1.0000000 1.000000 0.2820948 0.2820948 0.1994711
40 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

3 1 1 0.1111111 0.111111 0.8158508 0.8158510 0.5879019


4 1 1 0.1666667 0.166667 0.6666667 0.6666670 0.4793655

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:

p: es el grado del polinomio local a estimar.

Valor devuelto por las funciones: ambas funciones devuelven valores numéri-
cos.

Función Kernels

Descripción: definición de los núcleos utilizados en la estimación polinomial


local.

Funciones:

-- CosK(x)
-- EpaK(x)
-- Epa2K(x)
-- gaussK(x)
-- ...
2.3. LIBRO LOCPOL 41

Función locCteWeights

Descripción: pesos asociados al estimador polinomial local de grado cero (o


grado uno, locLinWeightsC.

Funciones:

locCteWeightsC(x, xeval, bw, kernel, weig = rep(1, length(x)))

locLinWeightsC(x, xeval, bw, kernel, weig = rep(1, length(x)))

locWeightsEval(lpweig, y)

locWeightsEvalC(lpweig, y)

donde:

xeval: es un vector con los puntos de evaluación de los pesos.

lpweig: son pesos (X T W X)− 1X T W evaluados en la matriz xeval.

Valor devuelto por las funciones:

locCteWeightsC y locLinWeightsC devuelven una lista con dos componentes


que son:

– den : estimación de (n ∗ bw ∗ f (x))p + 1.

– locWeig : (X T W X)− 1X T W evaluado en la matriz xeval.

locWeightsEvalC y locWeightsEval devuelven un vector con la estimación. Y


realizan el producto matricial entre locWeig y y, para obtener la estimación
dada por los puntos de xeval.

Ejemplo de uso:

> size <- 200


> sigma <- 0.25
42 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

> deg <- 1


> kernel <- EpaK
> bw <- .25
> xeval <- 0:100/100
> regFun <- function(x) x^3
> x <- runif(size)
> y <- regFun(x) + rnorm(x, sd = sigma)
> d <- data.frame(x, y)
> lcw <- locCteWeightsC(d$x, xeval, bw, kernel)$locWeig
> lce <- locWeightsEval(lcw, y)
> lceB <- locCteSmootherC(d$x, d$y, xeval, bw, kernel)$beta0
> mean((lce-lceB)^2)

[1] 1.582489e-32

> llw <- locLinWeightsC(d$x, xeval, bw, kernel)$locWeig


> lle <- locWeightsEval(llw, y)
> lleB <- locLinSmootherC(d$x, d$y, xeval, bw, kernel)$beta0
> mean((lle-lleB)^2)

[1] 5.319263e-32

Función locpol (caso 1)

Descripción: fórmula para el cálculo asociado la estimación polinomial local.

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:

xevalLen: es la longitud de xeval si este no se especifica.

Valor devuelto por la función: devuelve una lista que contiene entre otros
componentes los siguientes:

mf: modelo de marco para los datos y la fórmula.

data: hoja de datos con datos.

weig: vector de pesos para cada observaciones.

xeval: vector de puntos de evaluación.

bw: suavizado de parámetros, ancho de banda.

kernel: núcleo usado, ver núcleos.

kName: nombre del núcleo, una cadena con el nombre del núcleo.

deg: estimación del grado (p) del polinomio local.

X,Y: nombre de los datos de la respuesta y de la covarianza. También, se


utilizan en lpF it para el nombre de los datos ajustados.

residuals: residuos del polinomio local ajustado.

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:

> N <- 250


> xeval <- 0:100/100

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

95% Conf. Int. for x−Points

+
1.1

+ +
+
++
++ +
+
+ + ++ + + +
++ + ++ +
1.0

+ +
+ +
+ + + + +
+ + +
+ +
+ +++
+ +
+ + ++ + + ++
++ +
+
+ + + + ++ + + +
+ +
+ ++ + + +
0.9

+ +
++ + + + + + + + ++
+ +
+
+ + + ++
+ + + + +
+
+ + + + + ++ ++ +
+ + + +
+ + +
+ + +
+ + +
+ + + + +
+ + + + + ++ +
0.8

+
y

+
+ +
+ ++ + + ++ + ++
+ + +
+ + + + + + + + + +
+ + +
+ ++ + + ++ + + +
+ ++ ++ + + +
++ + + +
+ + + ++ + +
+ + + +
+ + +
+ ++ +
0.7

+
++ + + + ++
+ +++ + +
+
+
+ + + + +
+
++ +
++
+ + +
+ +
0.6

+
+
+

+ +
0.5

0.0 0.2 0.4 0.6 0.8 1.0

Figura 2.16: Locpol de locpol1


2.3. LIBRO LOCPOL 45

95% Conf. Int. for x−Points

1.4
+
+

1.2
+ ++ +
+
+ + + +
+ +
+ + + + +
+ + +
+
+ + + +
++
+
+
+ + + + +
+

1.0
+ + +
+ + + + + + + + +
+ ++ +
++ +
+ + +
+ + ++ + ++ +
+ +
+ + ++ + + ++
++ + + + + + + + + + + ++
+

y
+ + + + +
+ + +
+ + + + + + + +
+ + + + + + +
+ + + + +
+ + + ++ ++ +

0.8
+ ++ +
+ + ++ + ++ + +
+ +
+ + + + + ++ +
+
+ +++ + + +
+ ++ + + +
+ + + + + + +
+ + + + + +
+
+ + ++ ++ ++ +
+ + + + +
+ + +
+
+
+ + + ++ +
+ +
+ + + +
+ + + ++ + + +
+
0.6

+ ++
+ ++ ++ + +
++ +
+ +
+
+
+ + +
+ + +
+ ++
0.4

+
+

0.0 0.2 0.4 0.6 0.8 1.0

Figura 2.17: Locpol de locpol2


2.0
1.5
y

1.0
0.5

0.0 0.2 0.4 0.6 0.8 1.0

Figura 2.18: Locpol de locpol3


2.0
1.5
y

1.0
0.5

0.0 0.2 0.4 0.6 0.8 1.0

Figura 2.19: Locpol de locpol4


46 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

Función locpol (caso 2)

Descripción: calcula directamente la estimación polinomial local de la función


de regresión.

Función:
locCteSmootherC(x, y, xeval, bw, kernel, weig = rep(1, length(y)))

locLinSmootherC(x, y, xeval, bw, kernel, weig = rep(1, length(y)))

locCuadSmootherC(x, y, xeval, bw, kernel, weig = rep(1, length(y)))

locPolSmootherC(x, y, xeval, bw, deg, kernel, DET = FALSE,


weig = rep(1, length(y)))

looLocPolSmootherC(x, y, bw, deg, kernel, weig = rep(1, length(y)),


DET = FALSE)
donde:

DET: es el Booleano que se pide para calcular el cálculo del determinante si


la matriz es X T W X.

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.

beta0, beta1, beta2,...: estimación de la i-ésima derivada de la función de re-


gresión.

den: estimación de (n ∗ bw ∗ f (x))p + 1.

Ejemplo de uso:

> N <- 100


> xeval <- 0:10/10
> d <- data.frame(x = runif(N))
2.3. LIBRO LOCPOL 47

> 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

> ## Non random


> d$y <- d$x^2 - d$x + 1
> d$y
[1] 0.7612712 0.7559905 0.7522013 0.8848619 0.8160407 0.7507679 0.7964555
[8] 0.7856257 0.9741636 0.9471402 0.9154741 0.8486005 0.7595106 0.7562525
[15] 0.9431480 0.9800950 0.9716219 0.8589399 0.7505613 0.7940482 0.7525843
[22] 0.7895587 0.7531085 0.8553279 0.7591280 0.9631150 0.9631849 0.8603828
[29] 0.7903537 0.7556701 0.7860397 0.8094275 0.7536389 0.7867965 0.8181295
[36] 0.9376779 0.7546431 0.8301950 0.7556629 0.8893358 0.9162690 0.7812961
[43] 0.7538522 0.7552131 0.7965644 0.8778957 0.8928852 0.7509552 0.8604513
[50] 0.7935019 0.7500432 0.8074889 0.8835923 0.7947588 0.7504915 0.7627245
[57] 0.9235209 0.9114959 0.7629582 0.8350024 0.8640522 0.7598914 0.8609709
[64] 0.9384282 0.7897166 0.7922242 0.7500432 0.7503208 0.9851169 0.7852533
[71] 0.7550881 0.9455074 0.9149992 0.9838134 0.8332296 0.7501226 0.8569621
[78] 0.9153462 0.8034103 0.8810769 0.7504405 0.9838679 0.7711603 0.8152093
[85] 0.7521302 0.9085868 0.9313345 0.7854696 0.7500239 0.9594925 0.8544892
[92] 0.7874924 0.8297123 0.7909301 0.7507330 0.7631920 0.9656503 0.8223636
[99] 0.7850518 0.7722768

> cuest <- locCuadSmootherC(d$x, d$y ,xeval, bw, EpaK)


> cuest

x beta0 beta1 beta2 den


1 0.0 1.00 -1.00000e+00 2 0.02372248
2 0.1 0.91 -8.00000e-01 2 8.02909644
3 0.2 0.84 -6.00000e-01 2 23.31658125
4 0.3 0.79 -4.00000e-01 2 11.78540653
5 0.4 0.76 -2.00000e-01 2 38.67861685
6 0.5 0.75 1.93709e-16 2 35.01524608
7 0.6 0.76 2.00000e-01 2 28.50127243
8 0.7 0.79 4.00000e-01 2 6.56710512
9 0.8 0.84 6.00000e-01 2 19.20445392
10 0.9 0.91 8.00000e-01 2 8.74252631
11 1.0 1.00 1.00000e+00 2 0.01881323
48 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

> lpest2 <- locPolSmootherC(d$x, d$y , xeval, bw, 2, EpaK)


> lpest2

x beta0 beta1 beta2


1 0.0 1.00 -1.00000e+00 2
2 0.1 0.91 -8.00000e-01 2
3 0.2 0.84 -6.00000e-01 2
4 0.3 0.79 -4.00000e-01 2
5 0.4 0.76 -2.00000e-01 2
6 0.5 0.75 9.48996e-16 2
7 0.6 0.76 2.00000e-01 2
8 0.7 0.79 4.00000e-01 2
9 0.8 0.84 6.00000e-01 2
10 0.9 0.91 8.00000e-01 2
11 1.0 1.00 1.00000e+00 2

> print(cbind(x = xeval, fx, cuad0 = cuest$beta0, lp0 = lpest2$beta0,


cuad1 = cuest$beta1, lp1=lpest2$beta1))

x fx cuad0 lp0 cuad1 lp1


[1,] 0.0 1.00 1.00 1.00 -1.00000e+00 -1.00000e+00
[2,] 0.1 0.91 0.91 0.91 -8.00000e-01 -8.00000e-01
[3,] 0.2 0.84 0.84 0.84 -6.00000e-01 -6.00000e-01
[4,] 0.3 0.79 0.79 0.79 -4.00000e-01 -4.00000e-01
[5,] 0.4 0.76 0.76 0.76 -2.00000e-01 -2.00000e-01
[6,] 0.5 0.75 0.75 0.75 1.93709e-16 9.48996e-16
[7,] 0.6 0.76 0.76 0.76 2.00000e-01 2.00000e-01
[8,] 0.7 0.79 0.79 0.79 4.00000e-01 4.00000e-01
[9,] 0.8 0.84 0.84 0.84 6.00000e-01 6.00000e-01
[10,] 0.9 0.91 0.91 0.91 8.00000e-01 8.00000e-01
[11,] 1.0 1.00 1.00 1.00 1.00000e+00 1.00000e+00

> d$y <- d$x^2 - d$x + 1 + rnorm(d$x, sd = 0.1)


> d$y

[1] 0.6723636 0.8448013 0.6243922 0.8162543 0.7436355 0.6866786 0.7271204


[8] 0.8505989 1.0953380 0.9551620 0.8478272 0.9471580 0.8222345 0.7517749
[15] 0.9601393 1.0679246 1.1700375 0.7825367 0.6269945 0.7835987 0.7351159
[22] 0.8048367 0.6544773 0.9297912 0.7927135 1.0375346 1.1104370 0.7743744
[29] 0.7696472 0.7438772 0.8958657 0.8276265 0.7252702 0.8883434 0.6869968
[36] 0.8876989 0.9026008 0.8190183 0.9027349 0.6894363 0.9984543 0.8354297
[43] 0.6733276 0.6779314 0.7221547 0.8123858 0.8134340 0.8745750 0.8664553
2.3. LIBRO LOCPOL 49

[50] 0.8047627 0.8801028 0.6856138 0.9211008 0.8376500 0.7492864 0.5999255


[57] 0.8460743 1.0463443 0.6829823 0.8607412 0.9401312 0.7307411 0.6731402
[64] 0.8374226 0.7110618 0.8485211 0.7864358 0.7215284 0.9580189 0.6532467
[71] 0.7706758 0.9308003 0.9222196 1.0207491 0.8385355 0.7530619 0.7516319
[78] 0.9301271 0.8300982 0.8937102 0.5815393 0.9806565 0.6800853 0.7677295
[85] 0.8154858 1.0819505 0.7909390 0.9901345 0.5212752 1.0151708 1.0160035
[92] 0.7293871 0.8928125 0.8333529 0.8743793 0.6063388 0.8478267 0.8197416
[99] 0.8457371 0.8609747

> cuest <- locCuadSmootherC(d$x,d$y , xeval, bw, EpaK)


> cuest

x beta0 beta1 beta2 den


1 0.0 1.1696954 -4.82196709 41.562041 0.02372248
2 0.1 0.8791549 -1.52413568 24.858571 8.02909644
3 0.2 0.8136628 -0.54206496 6.356705 23.31658125
4 0.3 0.7869036 -0.73315011 -9.195076 11.78540653
5 0.4 0.7310876 -0.22747304 7.882866 38.67861685
6 0.5 0.7329695 -0.06783130 4.586677 35.01524608
7 0.6 0.7619366 0.51090384 2.573981 28.50127243
8 0.7 0.8089766 0.07681645 -5.305648 6.56710512
9 0.8 0.8248833 0.62602660 7.108892 19.20445392
10 0.9 0.8967816 0.85090352 8.014109 8.74252631
11 1.0 1.0870074 5.53515036 86.530261 0.01881323

> lpest2 <- locPolSmootherC(d$x,d$y , xeval, bw, 2, EpaK)


> lpest2

x beta0 beta1 beta2


1 0.0 1.1696954 -4.82196709 41.562041
2 0.1 0.8791549 -1.52413568 24.858571
3 0.2 0.8136628 -0.54206496 6.356705
4 0.3 0.7869036 -0.73315011 -9.195076
5 0.4 0.7310876 -0.22747304 7.882866
6 0.5 0.7329695 -0.06783130 4.586677
7 0.6 0.7619366 0.51090384 2.573981
8 0.7 0.8089766 0.07681645 -5.305648
9 0.8 0.8248833 0.62602660 7.108892
10 0.9 0.8967816 0.85090352 8.014109
11 1.0 1.0870074 5.53515036 86.530261

> lpest3 <- locPolSmootherC(d$x,d$y , xeval, bw, 3, EpaK)


50 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

> lpest3

x beta0 beta1 beta2 beta3


1 0.0 0.5804087 39.0917900 -1761.581230 32073.140200
2 0.1 0.8791243 -1.5169100 24.921877 -8.022927
3 0.2 0.8144113 -0.7355235 5.935609 148.187404
4 0.3 0.7906162 0.1022015 -8.019882 -742.843339
5 0.4 0.7218013 1.1560714 5.543538 -1033.073360
6 0.5 0.7316335 -0.5044145 5.830562 410.750916
7 0.6 0.7684981 0.8838808 1.012286 -278.143321
8 0.7 0.8052345 -1.1792922 1.192569 1065.659358
9 0.8 0.8250382 0.6029547 7.136487 18.045586
10 0.9 0.8984336 1.0882845 6.575599 -266.262808
11 1.0 1.0834538 5.2542255 75.285771 -191.756862

> cbind(x = xeval, fx, cuad0 = cuest$beta0, lp20 = lpest2$beta0,


+ lp30 = lpest3$beta0, cuad1 = cuest$beta1, lp21 = lpest2$beta1,
+ lp31 = lpest3$beta1)

x fx cuad0 lp20 lp30 cuad1 lp21 lp31


[1,] 0.0 1.00 1.1696954 1.1696954 0.5804087 -4.82196709 -4.82196709 39.0917900
[2,] 0.1 0.91 0.8791549 0.8791549 0.8791243 -1.52413568 -1.52413568 -1.5169100
[3,] 0.2 0.84 0.8136628 0.8136628 0.8144113 -0.54206496 -0.54206496 -0.7355235
[4,] 0.3 0.79 0.7869036 0.7869036 0.7906162 -0.73315011 -0.73315011 0.1022015
[5,] 0.4 0.76 0.7310876 0.7310876 0.7218013 -0.22747304 -0.22747304 1.1560714
[6,] 0.5 0.75 0.7329695 0.7329695 0.7316335 -0.06783130 -0.06783130 -0.5044145
[7,] 0.6 0.76 0.7619366 0.7619366 0.7684981 0.51090384 0.51090384 0.8838808
[8,] 0.7 0.79 0.8089766 0.8089766 0.8052345 0.07681645 0.07681645 -1.1792922
[9,] 0.8 0.84 0.8248833 0.8248833 0.8250382 0.62602660 0.62602660 0.6029547
[10,] 0.9 0.91 0.8967816 0.8967816 0.8984336 0.85090352 0.85090352 1.0882845
[11,] 1.0 1.00 1.0870074 1.0870074 1.0834538 5.53515036 5.53515036 5.2542255

> print(cbind(x = xeval, fx, cuad0 = cuest$beta0, lp20 = lpest2$beta0,


+ lp30 = lpest3$beta0, cuad1 = cuest$beta1, lp21 = lpest2$beta1,
+ lp31 = lpest3$beta1))

Función pluginBw

Descripción: implementa un selector del ancho de banda de tipo plug-in para


la función de regresión. El método se describe en el texto de Fan y Gijbels (1996)
2.3. LIBRO LOCPOL 51

páginas 110-112, y utiliza estimaciones piloto según al regla del pulgar (Rule of
thumb.

Función:

pluginBw(x, y, deg, kernel, weig = rep(1,length(y)))

Valor devuelto por la función: esta función devuelve un valor numérico.

Ejemplo de uso:

> size <- 200


> sigma <- 0.25
> deg <- 1
> kernel <- EpaK
> xeval <- 0:100/100
> regFun <- function(x) x^3
> x <- runif(size)
> y <- regFun(x) + rnorm(x, sd = sigma)
> d <- data.frame(x, y)

> cvBwSel <- regCVBwSelC(d$x,d$y, deg, kernel, interval = c(0, 0.25))


> cvBwSel

[1] 0.1962416

> thBwSel <- thumbBw(d$x, d$y, deg, kernel)


> thBwSel

[1] 0.1993822

> piBwSel <- pluginBw(d$x, d$y, deg, kernel)


> piBwSel

[1] 0.1268736

> est <- function(bw, dat, x) return(locPolSmootherC(dat$x,dat$y, x,


+ bw, deg, kernel)$beta0)

> ise <- function(val, est) return(sum((val - est)^2 * xeval[[2]]))


52 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

> plot(d$x, d$y)

> trueVal <- regFun(xeval)


> trueVal

[1] 0.000000 0.000001 0.000008 0.000027 0.000064 0.000125 0.000216 0.000343


[9] 0.000512 0.000729 0.001000 0.001331 0.001728 0.002197 0.002744 0.003375
[17] 0.004096 0.004913 0.005832 0.006859 0.008000 0.009261 0.010648 0.012167
[25] 0.013824 0.015625 0.017576 0.019683 0.021952 0.024389 0.027000 0.029791
[33] 0.032768 0.035937 0.039304 0.042875 0.046656 0.050653 0.054872 0.059319
[41] 0.064000 0.068921 0.074088 0.079507 0.085184 0.091125 0.097336 0.103823
[49] 0.110592 0.117649 0.125000 0.132651 0.140608 0.148877 0.157464 0.166375
[57] 0.175616 0.185193 0.195112 0.205379 0.216000 0.226981 0.238328 0.250047
[65] 0.262144 0.274625 0.287496 0.300763 0.314432 0.328509 0.343000 0.357911
[73] 0.373248 0.389017 0.405224 0.421875 0.438976 0.456533 0.474552 0.493039
[81] 0.512000 0.531441 0.551368 0.571787 0.592704 0.614125 0.636056 0.658503
[89] 0.681472 0.704969 0.729000 0.753571 0.778688 0.804357 0.830584 0.857375
[97] 0.884736 0.912673 0.941192 0.970299 1.000000

> lines(xeval, trueVal, col = "red")


> xevalRes <- est(cvBwSel, d, xeval)
> cvIse <- ise(trueVal, xevalRes)
> lines(xeval, xevalRes, col = "blue")
> xevalRes <- est(thBwSel, d, xeval)
> thIse <- ise(trueVal, xevalRes)
> xevalRes <- est(piBwSel, d, xeval)
> piIse <- ise(trueVal, xevalRes)
> lines(xeval, xevalRes, col = "blue", lty = "dashed")
> res <- rbind( bw = c(cvBwSel, thBwSel, piBwSel),
+ ise = c(cvIse, thIse, piIse) )
> colnames(res) <- c("CV", "th", "PI")
> res

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

0.0 0.2 0.4 0.6 0.8 1.0

d$x

Figura 2.20: Locpol de pluginBw1


1.0
0.5
d$y

0.0
−0.5

0.0 0.2 0.4 0.6 0.8 1.0

d$x

Figura 2.21: Locpol de pluginBw2


54 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

Función PRDenEstC

Descripción: estimador Parsen-Rosenblat de densidad univariante.

Función:

PRDenEstC(x, xeval, bw, kernel, weig = rep(1, length(x)))

Valor devuelto por la función: esta función devuelve una hoja de datos de
la forma: (x, den).

Ejemplo de uso:

> N <- 100


> x <- runif(N)
> xeval <- 0:10/10
> b0.125 <- PRDenEstC(x, xeval, 0.125, EpaK)
> b0.125

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

> b0.05 <- PRDenEstC(x, xeval, 0.05, EpaK)


> b0.05

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

> cbind(x = xeval, fx = 1, b0.125 = b0.125$den, b0.05 = b0.05$den)

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

Descripción: implementa el método por validación cruzada para la selección


del ancho de banda del estimador de regresión polinomial local.

Función:

regCVBwSelC(x, y, deg, kernel=gaussK,weig=rep(1,length(y)),


interval=.lokestOptInt)

Valor devuelto por la función: esta función devuelve un valor numérico, el


ancho de banda seleccionado.

Ejemplo de uso:

> size <- 200


> sigma <- 0.25
56 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

> deg <- 1


> kernel <- EpaK
> xeval <- 0:100/100
> regFun <- function(x) x^3
> x <- runif(size)
> y <- regFun(x) + rnorm(x, sd = sigma)
> d <- data.frame(x, y)

> cvBwSel <- regCVBwSelC(d$x,d$y, deg, kernel, interval = c(0, 0.25))


> cvBwSel

[1] 0.1962416

> thBwSel <- thumbBw(d$x, d$y, deg, kernel)


> thBwSel

[1] 0.1993822

> piBwSel <- pluginBw(d$x, d$y, deg, kernel)


> piBwSel

[1] 0.1268736

> est <- function(bw, dat, x) return(locPolSmootherC(dat$x,dat$y, x,


+ bw, deg, kernel)$beta0)
> ise <- function(val, est) return(sum((val - est)^2 * xeval[[2]]))
> plot(d$x, d$y)
> trueVal <- regFun(xeval)
> trueVal

[1] 0.000000 0.000001 0.000008 0.000027 0.000064 0.000125 0.000216 0.000343


[9] 0.000512 0.000729 0.001000 0.001331 0.001728 0.002197 0.002744 0.003375
[17] 0.004096 0.004913 0.005832 0.006859 0.008000 0.009261 0.010648 0.012167
[25] 0.013824 0.015625 0.017576 0.019683 0.021952 0.024389 0.027000 0.029791
[33] 0.032768 0.035937 0.039304 0.042875 0.046656 0.050653 0.054872 0.059319
[41] 0.064000 0.068921 0.074088 0.079507 0.085184 0.091125 0.097336 0.103823
[49] 0.110592 0.117649 0.125000 0.132651 0.140608 0.148877 0.157464 0.166375
[57] 0.175616 0.185193 0.195112 0.205379 0.216000 0.226981 0.238328 0.250047
[65] 0.262144 0.274625 0.287496 0.300763 0.314432 0.328509 0.343000 0.357911
[73] 0.373248 0.389017 0.405224 0.421875 0.438976 0.456533 0.474552 0.493039
[81] 0.512000 0.531441 0.551368 0.571787 0.592704 0.614125 0.636056 0.658503
[89] 0.681472 0.704969 0.729000 0.753571 0.778688 0.804357 0.830584 0.857375
2.3. LIBRO LOCPOL 57

[97] 0.884736 0.912673 0.941192 0.970299 1.000000

> lines(xeval, trueVal, col = "red")


> xevalRes <- est(cvBwSel, d, xeval)
> cvIse <- ise(trueVal, xevalRes)
> lines(xeval, xevalRes, col = "blue")
> xevalRes <- est(thBwSel, d, xeval)
> thIse <- ise(trueVal, xevalRes)
> xevalRes <- est(piBwSel, d, xeval)
> piIse <- ise(trueVal, xevalRes)
> lines(xeval, xevalRes, col = "blue", lty = "dashed")
> res <- rbind( bw = c(cvBwSel, thBwSel, piBwSel),
+ ise = c(cvIse, thIse, piIse) )
> colnames(res) <- c("CV", "th", "PI")
> res

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

0.0 0.2 0.4 0.6 0.8 1.0

d$x

Figura 2.22: Locpol de regCVBwSelC


58 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

Función selKernel

Descripción: utilización de los atributos del núcleo para seleccionar núcleos.


Esta función se utiliza principalmente para fines internos.

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

Descripción: calcula un suavizador elemental de las respuestas, definido como


el promedio ponderado por el núcleo de las respuestas observadas. La versión simp-
leSqSmootherC es igual sólo que promediando las respuestas al cuadrado.

Función:

simpleSmootherC(x, y, xeval, bw, kernel, weig = rep(1, length(y)))

simpleSqSmootherC(x, y, xeval, bw, kernel)

Valor devuelto por las funciones: ambas funciones devuelven una hoja de
datos con:

x: puntos de evaluación de x.

reg: valores de suavizado en los puntos de x.

Ejemplo de uso:

> size <- 1000


> x <- runif(100)
> bw <- 0.125
> kernel <- EpaK
2.3. LIBRO LOCPOL 59

> xeval <- 1:9/10


> y <- rep(1,100)
> ## x kern. aver. should give density f(x)
> prDen <- PRDenEstC(x,xeval,bw,kernel)$den
> prDen

[1] 1.0888622 0.8859709 0.8785186 1.0515013 0.9550039 1.3555096 1.1455056


[8] 0.5906089 0.7851241

> ssDen <- simpleSmootherC(x,y,xeval,bw,kernel)$reg


> ssDen

[1] 1.0888622 0.8859709 0.8785186 1.0515013 0.9550039 1.3555096 1.1455056


[8] 0.5906089 0.7851241

> all(abs(prDen-ssDen)<1e-15)

[1] TRUE

> ## x kern. aver. should be f(x)*R2(K) aprox.


> s2Den <- simpleSqSmootherC(x,y,xeval,bw,kernel)$reg
> s2Den

[1] 0.6397285 0.5396532 0.5139364 0.6437790 0.5363702 0.8570298 0.6951637


[8] 0.3604343 0.4755898

> summary( abs(prDen*RK(kernel)-s2Den) )

Min. 1st Qu. Median Mean 3rd Qu. Max.


0.004515 0.007860 0.012880 0.016280 0.013590 0.043720

> summary( abs(1*RK(kernel)-s2Den) )

Min. 1st Qu. Median Mean 3rd Qu. Max.


0.03973 0.06035 0.08606 0.11220 0.12440 0.25700

> ## x kern. aver. should be f(x)*R2(K) aprox.


> for(n in c(1000,1e4,1e5))
+ {
+ s2D <- simpleSqSmootherC(runif(n),rep(1,n),xeval,bw,kernel)$reg
+ cat("\n",n,"\n")
60 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

+ print( summary( abs(1*RK(kernel)-s2D) ) )


+ }

1000

Min. 1st Qu. Median Mean 3rd Qu. Max.


0.0009869 0.0150400 0.0264600 0.0371300 0.0441600 0.1071000

10000

Min. 1st Qu. Median Mean 3rd Qu. Max.


0.001878 0.007167 0.010570 0.013100 0.021160 0.024560

1e+05

Min. 1st Qu. Median Mean 3rd Qu. Max.


0.0008332 0.0015290 0.0049780 0.0051580 0.0092530 0.0117500

Función thumbBw

Descripción: implementa la regla del pulgar descrita en el texto de Fan y Gijbels


(1996) para la selección del ancho de banda en regresión polinomial local.

Función:

thumbBw(x, y, deg, kernel, weig = rep(1, length(y)))

compDerEst(x, y, p, weig = rep(1, length(y)))

Valor devuelto por las funciones: la función thumbBw devuelve un único


valor numérico, mientras que compDerEst devuelve una hoja de datos cuyos com-
ponentes son los siguientes:

x: valores de x.

y: valores de y.

res: residuos de la estimación paramétrica.


2.3. LIBRO LOCPOL 61

der: derivada estimada de los valores de x.

Ejemplo de uso:

> size <- 200


> sigma <- 0.25
> deg <- 1
> kernel <- EpaK
> xeval <- 0:100/100
> regFun <- function(x) x^3
> x <- runif(size)
> y <- regFun(x) + rnorm(x, sd = sigma)
> d <- data.frame(x, y)
> cvBwSel <- regCVBwSelC(d$x,d$y, deg, kernel, interval = c(0, 0.25))
> cvBwSel

[1] 0.1962416

> thBwSel <- thumbBw(d$x, d$y, deg, kernel)


> thBwSel

[1] 0.1993822

> piBwSel <- pluginBw(d$x, d$y, deg, kernel)


> piBwSel

[1] 0.1268736

> est <- function(bw, dat, x) return(locPolSmootherC(dat$x,dat$y, x,


+ bw, deg, kernel)$beta0)
> ise <- function(val, est) return(sum((val - est)^2 * xeval[[2]]))
> plot(d$x, d$y)
> trueVal <- regFun(xeval)
> trueVal

[1] 0.000000 0.000001 0.000008 0.000027 0.000064 0.000125 0.000216 0.000343


[9] 0.000512 0.000729 0.001000 0.001331 0.001728 0.002197 0.002744 0.003375
[17] 0.004096 0.004913 0.005832 0.006859 0.008000 0.009261 0.010648 0.012167
[25] 0.013824 0.015625 0.017576 0.019683 0.021952 0.024389 0.027000 0.029791
[33] 0.032768 0.035937 0.039304 0.042875 0.046656 0.050653 0.054872 0.059319
[41] 0.064000 0.068921 0.074088 0.079507 0.085184 0.091125 0.097336 0.103823
62 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

[49] 0.110592 0.117649 0.125000 0.132651 0.140608 0.148877 0.157464 0.166375


[57] 0.175616 0.185193 0.195112 0.205379 0.216000 0.226981 0.238328 0.250047
[65] 0.262144 0.274625 0.287496 0.300763 0.314432 0.328509 0.343000 0.357911
[73] 0.373248 0.389017 0.405224 0.421875 0.438976 0.456533 0.474552 0.493039
[81] 0.512000 0.531441 0.551368 0.571787 0.592704 0.614125 0.636056 0.658503
[89] 0.681472 0.704969 0.729000 0.753571 0.778688 0.804357 0.830584 0.857375
[97] 0.884736 0.912673 0.941192 0.970299 1.000000

> lines(xeval, trueVal, col = "red")


> xevalRes <- est(cvBwSel, d, xeval)
> cvIse <- ise(trueVal, xevalRes)
> lines(xeval, xevalRes, col = "blue")
> xevalRes <- est(thBwSel, d, xeval)
> thIse <- ise(trueVal, xevalRes)
> xevalRes <- est(piBwSel, d, xeval)
> piIse <- ise(trueVal, xevalRes)
> lines(xeval, xevalRes, col = "blue", lty = "dashed")
> res <- rbind( bw = c(cvBwSel, thBwSel, piBwSel),
+ ise = c(cvIse, thIse, piIse) )
> colnames(res) <- c("CV", "th", "PI")
> res

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

0.0 0.2 0.4 0.6 0.8 1.0

d$x

Figura 2.23: Locpol de thumbBw


2.4. LIBRO LOCFIT 63

2.4. Libro Locfit

En este libro llamado Locfit se implementan funciones asociadas al cálculo de


la regresión polinomial local, la verosimilitud y la densidad estimada. Los métodos
implementados se pueden consultar en los textos de Cook y Weisberg (1994), Loader
(1999). Dicho libro corresponde a la actualización del 17-04-2009, versión 1.5-4.
El libro contiene muchas funciones, en este trabajo nos centramos tan sólo en
aquellas asociadas al estimador de la densidad y de regresión de tipo polinomial local.
Ası́ como aquellas que permiten la selección del parámetro de suavizado asociado.

Funciones que calculan la densidad estimada

Función density.lf : proporciona un interfaz para el cálculo de la función de


densidad.

Uso de la función:

density.lf(x, n = 50, window = "gaussian", width, from, to,


cut = if(iwindow == 4.) 0.75 else 0.5,
ev = lfgrid(mg = n, ll = from, ur = to),
deg = 0, family = "density", link = "ident", ...)

donde:

• window: es el tipo de ventana que se utiliza para la estimación.

• from: es el lı́mite inferior para el dominio de estimación.

• to: es el lı́mite superior para el dominio de estimación.

• cut: es la expansión de los controles por defecto del dominio.

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

> density(geyser, window="tria")

Call:
density.default(x = geyser, window = "tria")

Data: geyser (107 obs.); Bandwidth ’bw’ = 0.3677


x y
Min. :0.5668 Min. :0.0000
1st Qu.:1.9334 1st Qu.:0.0605
Median :3.3000 Median :0.1560
Mean :3.3000 Mean :0.1828
3rd Qu.:4.6666 3rd Qu.:0.2568
Max. :6.0332 Max. :0.4834

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:

gam.lf(x, y, w, xeval, ...)


2.4. LIBRO LOCFIT 65

donde:

• w: son los pesos a priori.

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:

locfit(formula, data=sys.frame(sys.parent()), weights=1, cens=0, base=0,


subset, geth=FALSE, ..., lfproc=locfit.raw)

donde:

• formula: es la fórmula del modelo; por ejmplo, y~lp(x) para un modelo de


regresión; ~lp(x) para un modelo de densidad estimada. Es recomend-
able, usar para lp() los RHS, especialmente cuando por defecto no se
utilizan los parámetros de suavización.

• subset: son las observaciones de subconjuntos en la hoja de datos.

• geth: no utilizar; siempre se pone geth = F ALSE.

• lfproc: es una de las funciones de procesamiento para calcular el ajuste


local. El valor predeterminado es locfit.raw(). Otras opciones incluyen
locfit.robust(), locfit.censor() y locfit.quasi().

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:

> # fit and plot a univariate local regression


> data(ethanol, package="locfit")
> fit <- locfit(NOx ~ E, data=ethanol)
> plot(fit, get.data=TRUE)

> # a bivariate local regression with smaller smoothing parameter


> fit <- locfit(NOx~lp(E,C,nn=0.5,scale=0), data=ethanol)
> plot(fit)
66 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

> # density estimation


> data(geyser, data="locfit")
> fit <- locfit( ~ lp(geyser, nn=0.1, h=0.8))
> plot(fit,get.data=TRUE)

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

0.6 0.7 0.8 0.9 1.0 1.1 1.2

Figura 2.24: Locfit de locfit1


18

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.6 0.7 0.8 0.9 1.0 1.1 1.2

Figura 2.25: Locfit de locfit2


0.7
0.6
0.5
0.4
density

0.3
0.2
0.1
0.0

2.0 2.5 3.0 3.5 4.0 4.5 5.0

geyser

Figura 2.26: Locfit de locfit3


2.4. LIBRO LOCFIT 67

Funciones que calculan el parámetro de suavizado

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:

• a: es un vector de anchos de banda piloto.

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)

> # the plug-in curve. Multiplying by gf=2.5 corresponds


> # to Locfit’s standard scaling for the Gaussian kernel.
> plot(gf*z[, 2], gf*z[, 1], type = "l", xlab = "Pilot Bandwidth k",
+ ylab = "Bandwidth h")

> # Add the assumed curve.


> lines(gf * z[, 3], gf * z[, 1], lty = 2)
> legend(gf*0.05, gf*0.4, lty = 1:2,
+ legend = c("Plug-in", "SJ assumed"))
68 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

1.0
Plug−in
SJ assumed

0.8
Bandwidth h

0.6
0.4
0.2

0.5 1.0 1.5

Pilot Bandwidth k

Figura 2.27: Locfit de sjpi

2.5. Libro sm

En este libro incluye métodos de regresión no paramétrica y estimacion núcleo


de la densidad descritos en el texto de Bowman y Azzalini (1997). Dicho libro cor-
responde a la actualización del 19-04-2009, versión es del 2.2-3.
El libro contiene múltiples funciones que no serán descritas aqui. De hecho nos
centramos tan sólo en aquellas asociadas al estimador de la densidad y de regresión
de tipo polinomial local, en concreto aquellas que permiten la selección del parámetro
de suavizado asociado.

Estimacion núcleo de la función de densidad


La función sm.density calcula la estimación de la densidad de los datos en
una, dos ó tres dimensiones. En dos dimensiones, una variedad de representaciones
gráficas pueden ser seleccionadas, y en tres dimensiones, puede representarse una
superficie de contorno.
uso de la función:
sm.density(x, h, model = "none", weights = NA, group=NA, ...)

Valor devuelto por la función: esta función devuelve una lista que contiene los
2.5. LIBRO SM 69

valores de la estimación de la densidad en los puntos de evaluación, el parámetro de


suavización, los pesos del parámetro de suavización y los pesos del núcleo. También,
para los datos de uno ó dos dimensiones, se proporciona el error estándar de la
estimación y los extremos sueprior e inferior de una banda de la variabilidad.

Ejemplo de uso:

> # A one-dimensional example


> y <- rnorm(50)
> sm.density(y, model = "Normal")
> # sm.density(y, panel = TRUE)

> # A two-dimensional example


> y <- cbind(rnorm(50), rnorm(50))
> sm.density(y, display = "image")

> # A three-dimensional example


> y <- cbind(rnorm(50), rnorm(50), rnorm(50))
> sm.density(y)
0.5
0.4
Probability density function

0.3
0.2
0.1
0.0

−2 0 2 4

Figura 2.28: sm de sm-density1


3
2
1
y[2]

0
−1
−2

−1 0 1 2

y[1]

Figura 2.29: sm de sm-density2


70 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

Figura 2.30: sm de sm-density3

Cálculo del parámetro de suavizado

La función h.select selecciona un parámetro de suavización para la densidad


estimada en una ó dos dimensiones y para la regresión no paramétrica con una
ó dos covariables.

Uso de la función:

h.select(x, y = NA, weights = NA, group = NA, ...)

Valor devuelto por la función: esta función devuelve el valor del parámetro
de suavización seleccionado.

Ejemplo de uso:

> x <- rnorm(50)


> h.select(x)

[1] 0.4766912

> h.select(x, method = "sj")

[1] 0.4164856
2.5. LIBRO SM 71

> x <- matrix(rnorm(100), ncol = 2)


> h.select(x)

[1] 0.5315978 0.4961265

> sm.density(x, method = "cv")

> x <- rnorm(50)


> y <- x^2 + rnorm(50)
> h.select(x, y)

[1] 0.3869072

> sm.regression(x, y, method = "aicc")

> x <- matrix(rnorm(100), ncol = 2)


> y <- x[,1]^2 + x[,2]^2 + rnorm(50)
> h.select(x, y, method = "cv", structure.2d = "common")

[1] 0.4695942 0.4695942

> 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

Figura 2.31: sm de sm1


72 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

5
4
3
y

2
1
0
−1

−1 0 1 2

Figura 2.32: sm de sm2

4
y

1
x[2

0 2
]

1
−1 0
x[1]
−1

Figura 2.33: sm de sm3


2.5. LIBRO SM 73

La función hcv utiliza la técnica de validación cruzada para seleccionar un


parámetro de suavización adecuado para la construcción de la densidad esti-
mada o la curva de regresión no paramétrica en una ó dos dimensiones.

Uso de la función:

hcv(x, y = NA, hstart = NA, hend = NA, ...)

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:

> # Density estimation


> x <- rnorm(50)
> par(mfrow=c(1,2))
> h.cv <- hcv(x, display="lines", ngrid=32)
> sm.density(x, h=hcv(x))

> # Nonparametric regression


> x <- seq(0, 1, length = 50)
> y <- rnorm(50, sin(2 * pi * x), 0.2)
> par(mfrow=c(1,2))
> h.cv <- hcv(x, y, display="lines", ngrid=32)
> sm.regression(x, y, h=hcv(x, y))
74 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R
−0.24
−0.26

0.6
−0.28

Probability density function


−0.30

0.4
CV

−0.32

0.2
−0.34
−0.36

0.0

0.2 0.4 0.6 0.8 −3 −1 1 2 3


h x
Figura 2.34: sm de sm4
10

1.0
8

0.5
6
CV

0.0
y

−0.5
4

−1.0
2

0.05 0.15 0.25 0.0 0.4 0.8


h x
Figura 2.35: sm de sm5
2.5. LIBRO SM 75

La función hnorm evalúa el parámetro de suavización, asintóticamente óptimo,


para estimar una función de densidad cuando la distribución subyacente es
normal.

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:

> x <- rnorm(50)


> hnorm(x)

[1] 0.4273578

La función hsj utiliza el método plug-in de Sheather-Jones para la selección


de un parámetro de suavización, que es adecuado para la construcción de la
densidad estimada unidimensional.

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:

> x <- rnorm(50)


> hsj(x)

[1] 0.3350144
76 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

Estimación de la función de regresión

Función sm.discontinuity: utiliza una comparación de izquierda a derecha


de las curvas de regresión no paramétricas para evaluar la evidencia de la
presencia de una ó más discontinuidades en una curva de regresión ó en la
superficie.

Uso de la función:

sm.discontinuity(x, y, h, hd, ...)

donde:

• hd: es un parámetro de suavizado que se utiliza para suavizar las difer-


encias del lado izquierdo y derecho de las estimaciones de la regresión no
paramétrica.

Valor devuelto por la función: esta función devuelve una lista que contiene
los siguientes elementos:

• p: es el p-valor para la prueba de la hipótesis nula de que no se presentan


discontinuidades.

• sigma: es la desviación estándar estimada de los errores.

• eval.points: son los puntos de evaluación de las estimaciones de la re-


gresión no paramétrica.

• st.diff: es un vector o matriz de las diferencias estandarizadas entre el


lado izquierdo y derecho de los estimadores en los puntos de evaluación.

• diffmat: cuando x es un vector, este contiene la ubicación y las diferencias


estandarizadas, donde este último es mayor que 2,5.

• angle: cuando x es una matriz, este contiene los ángulos estimados en las
diferencias estandarizadas que fueron construidas.

• h: es el parámetro de suavización principal.

• hd: es el parámetro de suavización utilizado para la doble suavización.


2.5. LIBRO SM 77

Ejemplo de uso:

> par(mfrow = c(3, 2))


> provide.data(nile)
> sm.discontinuity(Year, Volume, hd = 0)

Test of continuity: significance = 0.006

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

> sm.discontinuity(Year, Volume)

Test of continuity: significance = 0.009

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

> ind <- (Year > 1898)


> plot(Year, Volume)
> h <- h.select(Year, Volume)
> sm.regression(Year[ ind], Volume[ ind], h, add = TRUE)
78 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

> hvec <- 1:15


> p <- numeric(0)
> for (h in hvec) {
+ result <- sm.discontinuity(Year, Volume, h,
+ display = "none", verbose = 0)
+ p <- c(p, result$p)
+ }

> plot(hvec, p, type = "l", ylim = c(0, max(p)), xlab = "h")


> lines(range(hvec), c(0.05, 0.05), lty = 2)
> provide.data(trawl)
> Position <- cbind(Longitude, Latitude)
> ind <- (Longitude < 143.8)
> sm.regression(Position[ind,], Score1[ind], theta = 35, phi = 30)
> sm.discontinuity(Position[ind,], Score1[ind], col = "blue")

Test of continuity: significance = 0.016

> # The following example takes longer to run.


> # Alternative values for nside are 32 and 64.
> # Alternative values of yjump are 1 and 0.5.

> par(mfrow = c(1, 1))


> nside <- 16
> yjump <- 2
> x1 <- seq(0, 1, length = nside)
> x2 <- seq(0, 1, length = nside)
> x <- expand.grid(x1, x2)
> x <- cbind(x1 = x[, 1], x2 = x[, 2])
> y <- rnorm(nside * nside)
> ind <- (sqrt((x[, 1] - 0.5)^2 + (x[, 2] - 0.5)^2) <= 0.25)
> y[ind] <- y[ind] + yjump
> image(x1, x2, matrix(y, ncol = nside))
> sm.discontinuity(x, y, df = 20, add = TRUE)

Test of continuity: significance = 0.005


2.5. LIBRO SM 79

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

Figura 2.36: sm de sm-discontinuity1


1.0
0.8
0.6
x2

0.4

4 2.
5
3

3.5

4.5
0.2
0.0

0.0 0.2 0.4 0.6 0.8 1.0

x1

Figura 2.37: sm de sm-discontinuity2


80 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

Función sm.monotonicity utiliza la idea de un .ancho de banda crı́tico”para


evaluar la evidencia de que una curva de regresión es no monótona.

Uso de la función:

sm.monotonicity(x, y, N = rep(1, length(y)), h,


type = "continuous", ...)

Valor devuelto por la función: esta función devuelve una lista que contiene
los siguientes elementos:

• p: es el p-valor para la prueba de la hipótesis nula que la curva de verdad


es monótona.

• hcrit: es el parámetro de suavización crı́tico. Este es el valor más pequeño


que cuando se aplica a los datos observados, hace la curva monótona.

• h: es el parámetro de suavización utilizado para la doble suavización.

Ejemplo de uso:

> # Radiocarbon dating data


> provide.data(radioc)

Data file being loaded

> ind <- (Cal.age>5000 & Cal.age<6000)


> cal.age <- Cal.age[ind]
> rc.age <- Rc.age[ind]

> sm.monotonicity(cal.age, rc.age, method = "aicc", nboot = 200)

The smallest h which produces an increasing curve is 56.436


Standard deviation of estimated errors is: 25.603
Smoothing parameter used for estimation of residuals is: 27.875
Test of monotonicity: p = 0.06

> # Hosmer & Lemeshow birth data


> provide.data(birth)

Data file being loaded


2.5. LIBRO SM 81

> sm.monotonicity(Lwt[Smoke == "N"], Low[Smoke == "N"],


+ type = "binomial")

The smallest h which produces a decreasing curve is 36.495


Test of monotonicity: p = 0.35

5200
5000
rc.age

4800
4600

5000 5200 5400 5600 5800 6000

cal.age

Figura 2.38: sm de sm-monotonicity1


1.0
0.8
Low[Smoke == "N"]

0.6
0.4
0.2
0.0

100 150 200

Lwt[Smoke == "N"]

Figura 2.39: sm de sm-monotonicity2


82 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

Función sm.regression crea una estimación de la regresión no paramétrica


de los datos, que constan de una sola variable respuesta y una ó dos covari-
ables. En dos dimensiones se produce una perspectiva, una imagen (image),
un contorno (slice) ó una parcela rgl de la superficie de regresión estimada.

Uso de la función:

sm.regression(x, y, h, design.mat = NA, model = "none",


weights = NA, group = NA, ...)

donde:

• design.mat: es la matriz de diseño utilizada para producir y, cuando estos


se suponen que son los residuos de un modelo lineal.

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)

Data file being loaded

> Zone92 <- (Year == 0 & Zone == 1)


> Position <- cbind(Longitude - 143, Latitude)
> dimnames(Position)[[2]][1] <- "Longitude - 143"
> par(mfrow = c(2, 2))

> sm.regression(Longitude, Score1, method = "aicc", col = "red",


+ model = "linear")
2.5. LIBRO SM 83

Test of linear model: significance = 0

> sm.regression(Position[Zone92, ], Score1[Zone92],


+ display = "image", theta = 120)

> sm.regression(Position[Zone92, ], Score1[Zone92], df = 12,


+ col = "se", theta = 120)

> sm.regression(Position[Zone92, ], Score1[Zone92], df = 12,


+ col = "se", model = "linear", theta = 120)

Test of linear model: significance = 0.031

> par(mfrow = c(1, 1))

> sm.regression(Position[Zone92, 2:1], Score1[Zone92],


+ display = "rgl", df = 12)

> sm.regression(Position[Zone92, 2:1], Score1[Zone92],


+ display = "rgl", df = 12, alpha = c(0.9, 1), col = "se",
+ model = "linear")

Test of linear model: significance = 0.031

> sm.regression(Position[Zone92, 1], Score1[Zone92],


+ panel = TRUE)

> sm.regression(Position[Zone92, ], Score1[Zone92],


+ panel = TRUE)

> sm.regression(Position[Zone92, ], Score1[Zone92],


+ panel = TRUE, display = "rgl")
84 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R

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

Longitude Longitude − 143

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

Figura 2.41: sm de sm-regression2

Figura 2.42: sm de sm-regression3


2.5. LIBRO SM 85

df = 6 h = 0.0948

2.0
1.5
Score1[Zone92]

1.0
0.5
0.0

0.0 0.2 0.4 0.6 0.8

Position[Zone92, 1]

Figura 2.43: sm de sm-regression4


df = 12 h = ( 0.167 , 0.0863 )

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

Figura 2.44: sm de sm-regression5

Figura 2.45: sm de sm-regression6


86 CAPÍTULO 2. SOFTWARE DISPONIBLE EN R
Capı́tulo 3

Aplicación práctica

3.1. Estudio con datos reales


En el siguiente estudio vamos a considerar los datos que se encuentran en el
libro ”MASS”, en concreto el objeto de tipo hoja de datos geyser. Estos datos
corresponden a un estudio sobre las erupciones de los géiseres del Old Faithful en el
Parque Nacional de Yellowstone, Wyoming.
La versión que aquı́ consideramos se describe en el libro de Azzalini y Bow-
man (1990) y corresponde a la medición continua desde el 1 de Agosto hasta el
15 de Agosto de 1985. Además, algunas mediciones de la duración nocturna fueron
codificadas como 2, 3 ó 4 minutos, tras haber sido inicialmente descrito como corto,
mediano ó largo.
Geyser es una hoja de datos con 299 observaciones y dos variables, las cuales
son: duration que es el tiempo del número de erupciones (en minutos) y waiting que
es el tiempo de espera para la próxima erupción.
Con los datos de la hoja de datos geyser, procederemos a ilustrar los métodos de
regresión no paramétrica univariantes descritos en el capı́tulo 1 de este trabajo. Si
bien ilustraremos otros métodos notables (en este caso consideraremos un suaviza-
miento por Spline según Heckman y Ramsay 1996), como ya se indicó en dicho
capı́tulo, nuestro interés se centrará fundamentalmente en el estimador polinómico
local. Para ello utilizaremos las funciones disponibles en los libros KernSmooth y
locpol, que fueron ampliamente descritos en el capı́tulo 2.
Para ajustar el estimador polinómico local de grado p utilizaremos la función
locpoly del libro KernSmooth. El uso de dicha función lo haremos considerando en
primer lugar una elección arbitraria del parámetro de suavizado o ancho de banda.
En este caso hemos considerado h = 0,25, no obstante tal y como ilustraremos
después, es posible utilizar elecciones automáticas, más refinadas, como los criterio
de selección cross-validation y plug-in discutidos en el capı́tulo 1.
En cuanto a la función núcleo considerada, la función locpoly por defecto usa

87
88 CAPÍTULO 3. APLICACIÓN PRÁCTICA

núcleos normales (argumento kernel =”normal”), y en este ejemplo hemos dejado


dicha elección por defecto. De este modo compararemos el resultado usando difer-
entes grados para lo cual hemos generado el siguiente código:

> data(geyser, package = "MASS")


> names(geyser)

[1] "waiting" "duration"

> x <- geyser$duration


> y <- geyser$waiting
> plot(x, y)

> fit <- locpoly(x, y, bandwidth = 0.25,degree=1)


> lines(fit,col="red")

> fit <- locpoly(x, y, bandwidth = 0.25,degree=0)


> lines(fit,col="blue")

> fit <- locpoly(x, y, bandwidth = 0.25,degree=2)


> lines(fit,col="green")

> fit <- locpoly(x, y, bandwidth = 0.25,degree=3)


> lines(fit,col="orange")

> legend(1,60,legend=c("p=1", "p=0", "p=2", "p=3"),lty=1,


+ col=c("red", "blue", "green", "orange"))
3.1. ESTUDIO CON DATOS REALES 89

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

Como se puede observar en la Figura 3.1 conforme vamos aumentando el grado


del estimador polinómico local, las estimaciones son más irregulares, intentando
capturar en mayor medida las observaciones consideradas. Nótese que como ya se
discutió en el capı́tulo 1, esto supone estimaciones que pagan la disminución en el
sesgo con un incremento notable de la variabilidad. También es notable ver cómo
el incremento de p = 1 hasta p = 2 no supone una mejora del modelo (ni en sesgo
ni en variabilidad), de hecho como también se discutió al inicio de este trabajo es
preferible usar grados impares frente a los inmediatamente consecutivos pares (ver el
libro de Fan y Gijbels 1996 para una discusión más detallada y algunos resultados
numéricos).
Finalmente podemos ver cómo las diferencias entre el estimador de Nadaraya-
Watson que considera ajustes locales constantes (p = 0) presenta las mayores difer-
encias en la proximidades a las fronteras, esto es debido a que los ajustes lineales
locales (p = 1) permiten una corrección automática de los efectos frontera (para
más detalles se puede ver el libro de Wand y Jones 1994 o Fan y Gijbels 1996).
A continuación vamos a ilustrar otro método de suavizamiento para dichos datos,
en concreto un estimador de tipo spline. Existen funciones para dicho propósito en
varios libros de R (SemiPar, ssplines, esplines, etc.), además de la función smooth.spline
dentro del libro base stats. En este caso hemos considerado esta última función y
la hemos comparado con el resultado ofrecido por la función sm.spline, que imple-
menta el estimador descrito en Heckman y Ramsay (1996), y que está contenida
90 CAPÍTULO 3. APLICACIÓN PRÁCTICA

en el libro pspline. Dicho estimador se define con un parámetro de suavizado que


por defecto considera un criterio basado en validación cruzada o validación cruzada
generalizada.
Nosotros dejamos las definiciones por defecto que considera dicha función. A
efectos comparativos también hemos incluido el estimador lineal local con ancho
de banda plug-in (más detalles sobre dicho procedimiento se darán en el ejemplo
siguiente, Figura 3.3). De este modo, el código generado para dicho ajuste y los
resultados ofrecidos son los siguientes:

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

Figura 3.2: Estimador de tipo spline.


3.1. ESTUDIO CON DATOS REALES 91

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)

Smoothing Parameter (Spar): 5.388047e-05


Equivalent Degrees of Freedom (Df): 32.3831
GCV Criterion: 31.59988
CV Criterion: 60.01679

> geyser.sts

Call:
smooth.spline(x = x, y = y)

Smoothing Parameter spar= 1.044891 lambda= 0.05174406 (12 iterations)


Equivalent Degrees of Freedom (Df): 3.366694
Penalized Criterion: 9604.32
GCV: 110.0222

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.

Selectores basados en Validación Cruzada: la función regCVBwSelC, que


se puede encontrar en el capı́tulo 2 de este trabajo en el libro Locpol, y la
función h.select del libro sm.

Usando dichas funciones nuestro objetivo es el calcular el estimador lineal local,


usando distintos parámetros ancho de banda. En concreto parámetros según métodos
plug-in y validación cruzada. Además de ilustrar el resultado final, podremos discutir
las particularidades que conllevan la aplicación de cada uno de ellos.
Dado que nuestro objetivo en este momento es el parámetro de suavizado, volve-
mos a fijar la elección de la función núcleo de tipo gausiano y, como ya hemos
comentado antes, fijamos ajustes de grado p = 1. El código generado para tales
propósitos es el siguiente:

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

Figura 3.3: Estimador lineal local con distintos h.


94 CAPÍTULO 3. APLICACIÓN PRÁCTICA

3.2. Estudio con datos simulados


Ilustraremos ahora los métodos de regresión no paramétrica y en concreto el es-
timador polinomial local a partir de datos simulados. Nuestro objetivo ahora será el
de cuantificar la bondad de las estimaciones (dado que conocemos los modelos ex-
actos) y además ilustrar aspectos interesantes del problema de regresión con será el
del efecto del tamaño muestral y la variabilidad de la muestra considerada.
De este modo estudiaremos el comportamiento de los estimadores con distintos
tamaños de muestra (n = 25, 50, 100y500) y con distintas desviaciones tı́picas para
los residuos del modelo (0,3, 0,4y0,1).
De esta forma lo que se pretende es observar la convergencia de la curva teórica
y asimismo ver cómo el problema de estimación se hace más difı́cil de resolver a
medida que vamos aumentando el valor de la desviación tı́pica de los residuos del
modelo.
Para realizar lo anterior consideramos el siguiente modelo de regresió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

Figura 3.4: Estimación polinomial local a partir de datos simulados. El tamaño


muestral es 100 y la desviación tı́pica residual 0,4

Como se puede observar en la Figura 3.4, el gráfico cuando p = 0 y p = 1 son muy


parecidos los estimadores salvo en la frontera, debido a que p = 1 permite corregir
de forma automática los efectos frontera. Los resultados para p = 3 muestran una
mayor irregularidad.
96 CAPÍTULO 3. APLICACIÓN PRÁCTICA

Consideramos ahora una disminución en el tamaño muestral hasta n = 25 man-


teniendo el mismo σ = 0,4 (caso 2). El código generado a tal efecto es análogo,
cambiando n<-25, y los resultados obtenidos se muestran en la Figura 3.5.

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

−2.0 −1.5 −1.0 −0.5 0.0 0.5 1.0 1.5

Figura 3.5: Estimación polinomial local a partir de datos simulados. El tamaño


muestral es 25 y la desviación tı́pica residual 0,4

Como se puede observar en el gráfico cuando hemos disminuido el tamaño mues-


tral a 25 vemos que los estimadores presentan bastantes irregularidades, sobre todo
cuando intentamos ajustar un polinomio de grado alto (p = 3).
Considerando ahora un tamaño de muestra intermedio de n = 50 (caso 3), y
usando un código similar en R obtenemos los resultados que se muestran en la Figura
3.6.

Datos simulados

Curva teórica
ajuste p=0
2

ajuste p=1
ajuste p=3
1
y

0
−1

−2 −1 0 1 2

Figura 3.6: Estimación polinomial local a partir de datos simulados. El tamaño


muestral es 50 y la desviación tı́pica residual 0,4
3.2. ESTUDIO CON DATOS SIMULADOS 97

La convergencia a la curva teórica la podemos observar considerando un tamaño


de muestra elevado como n = 500 (caso 4).

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

Figura 3.7: Estimación polinomial local a partir de datos simulados. El tamaño


muestral es 500 y la desviación tı́pica residual 0,4

A continuación ilustraremos el comportamiento de los estimadores lineales locales


con diferentes métodos de selección del parámetro de suavizado. Nos centramos
en el caso 1 en el que se simularon n = 100 datos con σ = 0,4. Los métodos
considerados son el selector basado en validación cruzada calculado usando la función
regCVBwSelC, el de tipo plug-in calculado usando pluginBw y el calculado según
la simple regla del pulgar, ofrecido por la función thumbBw, todas ellas contenidas
en el libro locpol. La comparación de los métodos la haremos vı́a la raı́z cuadrada
del error definido en 3.1. El código generado para ello se muestra a continuación:

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

cvBwSel <- regCVBwSelC(x,y, deg=p, kernel=nucleo)


teoricos <- regFun(xgrid)
estimados <- est(cvBwSel, x,y,xgrid,p,nucleo)
cvError <- error(teoricos, estimados)
thBwSel <- thumbBw(x, y, deg=p, kernel=nucleo)
estimados <- est(thBwSel, x,y,xgrid,p,nucleo)
thError <- error(teoricos, estimados)
piBwSel <- pluginBw(x, y, deg=p, kernel=nucleo)
estimados <- est(piBwSel, x,y,xgrid,p,nucleo)
piError <- error(teoricos, estimados)
resultado <- list(n=n,cv=cvError,th=thError,pi=piError)
resultado

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

De dichos resultados se puede observar que el comportamiento de los métodos


plug-in es ligeramente superior a validación cruzada. No obstante la diferencia se
hace menos patente en tamaños de muestra lı́mite. También es de destacar que
cuando se consideran pocos datos n = 25 no es posible el cálculo del selector de tipo
plug-in. Esto es debido a que dichos métodos requieren estimaciones de las derivadas
que no son posibles en este caso.
Finalmente, repetiremos el ejercicio de comparación de los selectores variando la
dificultad del problema de estimación. Esto lo haremos variando la desviación tı́pica
de los residuos del modelo, considerando σ = 0,001, 0,1, 0,5. El tamaño de muestral
lo mantenemos en n = 100.

cv th pi

sigma= 0.001 0.01265973 0.08732214 0.03904589


sigma= 0.1 0.06306383 0.0912005 0.06364838
sigma= 0.5 0.2278124 0.1755693 0.1888333
Bibliografı́a 99

Desde la tabla de resultados obtenidos se observa un paralelismo entre aumentar


el tamaño muestral y reducir la variabilidad residual. Cuando hay alta variabilidad
muetral σ = 0,5 validación cruzada ofrece resultados pobres. En este caso son los
selectores de tipo plug-in y en particular la sencilla regla del pulgar.
100 Bibliografı́a
Bibliografı́a

[1] Wand, M. P. and Jones, M. C. (1995). Kernel Smoothing. Chapman and


Hall, London.
[2] Wand, M. P. (1994). Fast Computation of Multivariate Kernel Estimators.
Journal of Computational and Graphical Statistics, 3, 433-445.
[3] Sheather, S. J. and Jones, M. C. (1991). A reliable data-based bandwidth
selection method for kernel density estimation. Journal of the Royal Statistical
Society, Series B, 53, 683–690.
[4] Scott, D. W. (1979). On optimal and data-based histograms. Biometrika, 66,
605–610.
[5] Wand, M. P. (1995). Data-based choice of histogram binwidth. University of
New South Wales, Australian Graduate School of Management Working Paper
Series No. 95–011.
[6] Ruppert, D., Sheather, S. J. and Wand, M. P. (1995). An effective band-
width selector for local least squares regression. Journal of the American Statis-
tical Association, 90, 1257–1270.
[7] John Fox, 2002. Nonparametric Regression. Appendix to An R and S-PLUS
Companion to Applied Regression.
[8] Fan, J. and Gijbels, I. Local polynomial modelling and its applications. Chap-
man and Hall, London (1996).
[9] Wand, M. P. and Jones, M. C. Kernel smoothing. Chapman and Hall Ltd.,
London (1995).
[10] Cristóbal, J. A. and Alcalá, J. T. (2000). Nonparametric regression esti-
mators for length biased data. J. Statist. Plann. Inference, 89, pp. 145-168.
[11] Ahmad, Ibrahim A. (1995). On multivariate kernel estimation for samples
from weighted distributions. Statistics and Probability Letters, 22, num. 2, pp.
121-129

101
102 Bibliografı́a

[12] Härdle W. (1990). Smoothing techniques. Springer Series in Statistics, New


York (1991).

[13] Loader, C. (1999). Local Regression and Likelihood. Springer, New York.

[14] Consult the Web page http://www.locfit.info/.

[15] Cleveland, W. and Grosse, E. (1991). Computational Methods for Local


Regression. Statistics and Computing 1.

[16] Sheather, S. J. and Jones, M. C. (1991). A reliable data-based bandwidth


selection method for kernel density estimation. JRSS-B 53, 683-690.

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

[19] Bowman, A.W., Pope, A. and Ismail, B. (2006). Detecting discontinuities


in nonparametric regression curves and surfaces. Statistics and Computing, 16,
377–390.

[20] Bowman, A.W., Jones, M.C. and Gijbels, I. (1998). Testing monotonicity
of regression. J.Comp.Graph.Stat. 7, 489-500.

[21] Bowman, A.W. (2006). Comparing nonparametric surfaces. Statistical Mod-


elling, 6, 279-299.

[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

[27] Venables, W. N. and Ripley, B. D. (2002). Modern Applied Statistics with


S. Fourth edition. Springer.

[28] Heckman, N. and Ramsay, J. O. (1996). Spline smoothing with model based
penalties. McGill University, unpublished manuscript.

[29] Martı́nez Miranda, M.D., Raya Miranda, R., González Manteiga, W.


and González Carmona, A. (2008). A bootstrap local bandwidth selector for
additive models. Journal of Computational and Graphical Statistics, 17,38-55.

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

[31] Kim,W., Linton, O.B., and Hengartner, N.W. (1999). A Computationally


Efficient Oracle Estimator for Additive Nonparametric Regression with Boot-
strap Confidence Intervals. Journal of Computational and Graphical Statistics,
8, 278–297.

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

[35] Severance-Lossin, E., and Sperlich, S. (1997). Estimation of Deriva-


tives for Additive Separable Models. Discussion paper, SBF 373. Humboldt-
University, Berlin.

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

[44] Friedman, J.H. and Stuetzle, W. (1981). Projection pursuit regression.


Journal of the American Statistical Association, Vol. 76, No. 376, pp. 817-823.

[45] Breiman, L. and Friedman, J.H. (1985). Estimating optimal transforma-


tions for multiple regression and correlation (with discussion). Journal of the
American Statistical Association, Vol. 80, pp. 580-619.

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

[48] Kim,W., Linton, O.B., and Hengartner, N.W. (1997). A nimble


method of estimating additive nonparametric regression. Electronic article,
http://www.stats.yale.edu.

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

[50] Cook and Weisberg (1994). An Introduction to Regression Graphics. Wiley,


New York.

También podría gustarte