BLOQUE 3 - UNED · desarrollado se encuentra probablemente en el programa R, también de libre...
Transcript of BLOQUE 3 - UNED · desarrollado se encuentra probablemente en el programa R, también de libre...
BLOQUE 3
MÉTODOS DE REGRESIÓN NO PARAMÉTRICA
Preliminares Para seguir adecuadamente estos apuntes es preciso dominar la teoría y los ejercicios de los
anteriores módulos. Igualmente es deseable tener a mano un manual de econometría básica.
Recuerda que estos apuntes pueden contener errores tipográficos. Cualquier comentario a
los mismos es bienvenido.
Introducción: Histogramas y Kernels
Un histograma es una primera aproximación a la estimación de un histograma de densidades. El
histograma con el que hemos trabajado en bloques precedentes es un histograma de frecuencias,
el área total que representa no suma 1, y por tanto no son válidos para estimar densidades. Ahora
estamos interesados en localizar una función que integre 1.
Para calcular el histograma necesitamos, a parte de una muestra, un origen y para los bins y una
anchura del bin que denotamos por h (revisar ejercicio 5). Este parámetro es conocido por
smoothing parameter o parámetro de suavizado porque es el parámetro clave para producir
histogramas suaves (smooth): Valores bajos de h generan histogramas con mucha variación,
mientras que valores altos para h generan formas suavizadas. El siguiente gráfico que recoge
varios histogramas de frecuencias para variables normales estándar puede ser ilustrativo:
Si llamamos al contenedor o bin k-ésimo, donde tk – tk+1 = h, para todo k; y si
denominamos por vk al número de observaciones que caen en el k-ésimo bin, entonces
donde I es la función indicatriz de pertenencia al bin k-
ésimo, es un estimador de la densidad que integra 1.
Ejemplo
Vamos a realizar este cálculo para una distribución estándar normal:
n = 1000;
x = randn(n,1);
Calculamos el historgrama con la función hist, utilizando el valor por
Bk [tk ,tk1)
fHIST vk
nh
1
nhIBk (Xi ); x en Bk
i1
n
defecto de 10 bins.
% Histograma.
[vk,bc] = hist(x);
% Anchura del bin.
h = bc(2)- bc(1);
El estimador del histograma lo hacemos así. Obsérvese que tenemos que
ajustar el output de hist para asegurar que el estimador de la densidad
es teóricamente correcto. Obtengamos el estimador de nuestra función en
el punto x0=0.
xo = 0;
% Buscamos todos los centros de bines menores a x0.
ind = find(bc < xo);
% xo deberia estar entre estos dos centros
b1 = bc(ind(end));
b2 = bc(ind(end)+1);
% Lo asignamos al bin más cercano.
if (xo-b1) < (b2-xo) % entonces va al 1er bin
fhat = vk(ind(end))/(n*h);
else
fhat = vk(ind(end)+1)/(n*h);
end
El resultado es fhat = 0.3477. El valor verdadero de una normal estándar evaluada en 0 es
. Por lo que estamos bastante cercanos, pero no exáctamente iguales al verdadero valor.
Prueba a ver qué te sale a ti, y en el primer ejercicio que entregues me comentas el resultado.
En este ejemplo hemos usado una anchura (h) dada por defecto en el comando hist. Sin embargo
en las gráficas anteriores hemos visto que su elección es relevante. Este es un tema que ha
generado mucha literatura. A continuación daré algunos de los resultados que nos puedan resultar
más operativos en economía.
Supongamos que tenemos un estimador de una función poblacional en un punto x, y
estamos interesado en conocer algo sobre la calidad del estimador respecto a la verdadera
función. Una medida habitual de esta calidad es el MSE (error cuadrático medio)
1 / 2
f (x)
MSE( f (x)) E[( f (x) f (x))2]Var( f (x))Sesgo2( f (x)).
En caso de que se trate de un estimador de densidad , es posible bajo ciertas condiciones,
definir una cota superior para MSE de :
Así, el primer sumando en la desigualdad acota superiormente la varianza, y el segundo sumando
acota superiormente el sesgo al cuadrado. De este modo podemos observar fácilmente que
sucede cuando h varía.
Podríamos querer minimizar el MSE del estimador de densidad variando h. Valores pequeños de h
conducen a reducciones en el sesgo del estimador de la densidad y, a la vez, a mayores varianzas
en el mismo. Se produce justamente el trade-off entre varianza y sesgo que hemos visto en la
primera figura. Se hace necesario entonces tener alguna(s) regla o norma para seleccionar h. Una
norma básica es la Regla de Sturges, que indica el número, k, adecuado de contenedores (bins) en
el histograma:
El ancho del bin h se obtiene dividiendo el rango muestral entre el número obtenido con la regla,
k. Existen muchas otras reglas el alumno interesado en este particular puede solicitarme más
literatura.
Un problema importante que presenta el histograma de densidad como estimador de la función
de densidad es que no es una función continua, y proporciona una visión un tanto abrupta y poco
eficaz para representaciones generales. Una forma fundamental de generalizar el estimador y así
evitar los problemas del mismo consiste en reemplazar la función indicatriz I(.) por una función K
que denominamos Kernel, y que satisface la condición:
.
En tal caso el estimador kernel será
fHIST (x)
fHIST (x)
MSE( fHIST (x)) f (k )
nh 2
kh2 , con x en Bk , y donde var( fHIST (x))
f (k )
nh
hf (k ) f (t)dtBk
para algún k en Bk , y finalmente k es una constante positiva tal que
para todo k , x en Bk resulta que el sesgo(fHIST (x)) f (k ) f (x) k k x kh.
k 1 log2 n.
K(x)dx
1
fKer (x) 1
nhKx Xi
h
.
i1
n
La función fKer hereda las propiedades de continuidad y diferenciablidad del Kernel. Para ilustrar
el procedimiento veamos en qué consiste:
Pasos básicos:
1.- Elegir: kernel, h, y dominio (valores de x) sobre los que evaluar f(x).
2.- Para cada Xi evaluar el kernel en todo x del dominio:
El resultado de esto es un conjunto de n curvas, una para cada punto Xi.
3.- Ponderar cada curva por 1/h.
4.- Para cada x, hacer la media de las curvas ponderadas.
Ejemplo básico: Para un conjunto de datos, mostramos cómo obtener estimador kernel de la
densidad, usando para ello la distribución estándar normal como kernel.
% Generate standard normal random variables.
n = 10;
data = randn(1,n);
% We will get the density estimate at these x values.
x = linspace(-4,4,50);
fhat = zeros(size(x));
h = 1.06*n^(-1/5);
hold on
for i=1:n
% get each kernel function evaluated at x
% centered at data
f = exp(-(1/(2*h^2))*(x-data(i)).^2)/sqrt(2*pi)/h;
plot(x,f/(n*h));
fhat = fhat+f/(n);
end
plot(x,fhat);
hold off
El resultado es el siguiente:
K i Kx Xi
h
, i 1,...,n.
EJERCICIO 9. Identifica cada uno de los pasos básicos indicados anteriormente en el código que he
generado. Posteriormente, utiliza el código anterior para comprobar cómo evoluciona la forma de
la curva a medida que variamos la anchura h. Para ello, contempla usar n=100 observaciones de
una normal estándar, y los siguientes h=0.84, 0.42, 0.21, 0.11. Finalmente, en lugar de utilizar el
kernel normal utiliza este otro: , en el resto de los casos K(t) = 0.
Debido a la relevancia de la elección del parámetro que controla la anchura, h, estamos
interesados en conocer cómo determinar los valores apropiados para h. Para kernel normales se
puede demostrar que el ancho de ventana (anchura) óptimo es:
Junto con la elección del parámetro h, también hemos tenido que elegir la función kernel. Sin
embargo esta elección es menos importante toda vez que el efecto del kernel se reduce de
manera importante al ir tomando medias. En la práctica habitual la determinación del kernel se
debe a cuestiones computacionales o a requisitos de diferenciabilidad requeridos en la estimación.
La siguiente tabla recoge los más habituales.
23( ) (1 ) 1 1
4K t t si t
1/5* 1/5 1/54 3 1.06 .Kerh n n
Que gráficamente son:
EJERCICIO 10. Matlab tiene la función ksdensity. Con uso de la ayuda reproduce el ejercicio 1
utilizando esta función. Los usuarios de Octave tienen la función kernel_density y
kernel_bandwidth. Estos últimos usuarios pueden intentar, sin embargo, ver si el código de
ksdensity funciona en Octave. Para conseguir el código podéis localizarlo en la web del curso.
EJERCICIO 11. Una atracción turística que ha sido muy estudiada históricamente se caracteriza por
emular un geiser. Una de las variables más relevantes es el tiempo de espera (minutos) entre una
erupción y otra consecutiva. Conocer las características de la variable “tiempo de espera” ayuda a
las autoridades del parque de atracciones a controlar otras variables de interés. Los datos geyser
contienen la información necesaria para arrojar luz sobre el comportamiento de la variable
aleatoria. Se pide:
a. Si asumimos un modelo paramétrico como la distribución normal, dibujar la función de
densidad correspondiente a los datos geyser.
b. Si por el contrario adoptamos un enfoque noparamétrico, dibuja la densidad estimada
mediante un kernel.
c. Compara una y otra. ¿Qué conclusiones puedes sacar?
Regresión No paramétrica
En esta sección es necesario recordar mínimamente los elementos básicos de econometría. Existe
bastante software (‘empaquetado’ o ‘enlatado’) contrastado para la práctica econométrica, tanto
software comercial como libre. Claro ejemplo de esto último es GRETL, qué es instalable en varios
entornos. Respecto a MATLAB y OCTAVE está disponible un módulo denominado ‘econometrics’
que tienen programadas muchas funciones habituales en la práctica econométrica. Es más difícil
encontrar repertorios relativos a econometría no paramétrica. A estos efectos el software más
desarrollado se encuentra probablemente en el programa R, también de libre disposición.
Por otro lado, las técnicas de regresión no paramétricas no suelen explicarse en los cursos
introductorios de econometría, pese a la relevancia que están adquieriendo en la actualidad en la
investigación teórica y aplicada en técnicas econométricas. Esta sección pretende iniciar al
estudiante, a un nivel muy elemental, en este tópico.
El análisis de regresión es quizás la herramientas más utilizada de todo el conjunto de
herramientas para el análisis de datos. La regresión modeliza el comportamiento esperado de una
variable dependiente -y- dado un vector de variables explicativas (regresores) que covarían
posiblemente con y. El modelo básico es la regresión lineal respecto a los parámetros del modelos
(atención: no respecto de la variables en sí), por ejemplo:
y01X12X2...kXk .
Este modelo es paramétrico porque asumimos un modelo explícito para la relación entre la
variable a explicar - y – y las explicativas X. Por eso decimos que se trata del modelo de regresión
lineal paramétrico, que también se puede expersar de forma más útil y compacta así:
yi Xi ' i, i 1,...,n,
donde Xi ° k, y un vector k1 de parámetros desconocidos.
La estimación de mínimos cuadrados para un vector de errores E(i)0 y var(i)2, es
(X'X)-1X'y, y es un vector nx1,X[Xi], para i1,...,n.
EJERCICIO 12. Descarga el conjunto de datos REGRESION, y calcula el estimador de mínimos
cuadrados considerando la primera variable como variable a explicar. Luego, con el modelo
estimado, calcula el vector de residuos, y haz un gráfico de la variable original, los valores
estimados y los residuos. Finalmente, repite el ejercicio con el siguiente código para el estimador:
bhat = X\Y; %%bhat es el estimador de beta. ¿Aprecias alguna
diferencia?
Un modelo más general que el lineal paramétrico sería este otro
yi g(Xi,)i, i 1,...,n ,
donde la función g tiene un forma funcional conocida con un vector parámetros (betas)
desconocido. En este caso, en ciertas circunstancias, la estimación mínimo cuadrática o bien los
mínimos cuadrados nolineales podrían servir para estimar adecuadamente el vector de
parámetros. También en este caso estaríamos bajo un esquema paramétrico en el que asumimos
que conocemos la forma funcional. Los métodos de regresión noparamétrica precisamente no
requieren que se hagan asunciones a propósito de la forma funcional del proceso generador de
datos. Simplemente asume que la variable de estudio existe y que satisface ciertas condiciones de
regularidad (por ejemplo, diferenciabilidad) y condiciones sobre los momentos. Ahora bien, al
poner menos restricciones que en caso paramétrico, serán necesarias más observaciones que las
requeridas por la técnicas parmétrica para alcanzar el mismo grado de precisión que
obtendríamos bajo un modelo correctamente especificado paramétrico.
Consideremos el modelo de regresión noparamétrico siguiente:
yi g(Xi )i, i 1,...,n.
Las realizaciones muestrales (yi , Xi) son iid. La función g es desconocida. En caso de que sea
diferenciable (smooth), entonces podemos estimarla utilizando kernels. La fución g(x) se
interpreta como la media condicionada de y dada la realización del vector X=x, esto es
g(x)E[yi Xi x] .
De hecho, se puede demostrar que E[y X] es la función óptima de X para predecir la variable
explicativa y, en el sentido de que el error de predicción medio será mínimo para la clase de todas
las funciones continuas.
Si denominamos a fy,x (x,y), f (x) y fy x
(x, y) como la función de distribución de probabilidad
(PDF) conjunta de (y,X), la PDF marginal de X, y la PDF condicionada de y X , respectivamente, y
recordando que fy x(x,y) fy,x(x,y) / f (x) , se tiene que
E[y X] y fy x
(x,y)dy yfy,x(x,y) dy
f (x):g(x)
La estimación de las funciones , ( , ), ( )y xf x y f x se realiza por kernels del tipo a los estudiados en la
sección anterior. La cuestión es por tanto cómo estimar la integral. Realizando algunas
operaciones se llega a la expresión
1
1 1
1
ˆ ( ) , donde .
ni
iin n ji
i i ii jn i
i
X xy K
X xX xhg x y w w K K
X x h hK
h
Es decir, el estimador E(y/X) es simplemente una media ponderada de Yi con pesos
(ponderaciones) wi. Desde el punto de vista teórico es posible demostrar que este estimador es
consistente, es decir, g(x)p
g(x). A este estimador se le denomina estimador Nadaraya-Watson
y también estimador kernel local constante de g(x).
Para el caso en que Xi es un vector q-dimensional, la expresión del estimador sería la misma con la
salvedad de que ahora 1
1
... ,qii i
q
X xX x X xK k k
h h h
siendo hq el parámetro
smooth asociado con la variable Xq.
EJERCICIO 13. Estimador Nadaraya-Watson.
A partir de la siguiente generación de ruido.
x = linspace(0, 4 * pi,100);
y = sin(x) + 0.75*randn(size(x));
Crea una función inline para poder evaluar los pesos usando un kernel
normal: Para ello, haz un help inline, y úsala con la siguiente
expresión:
mystrg='(2*pi*h^2)^(-1/2)*exp(-0.5*((x - mu)/h).^2)';
wfun = FUNCIÓN INLINE ADECUADA PARA mystrg;
%Obtener la estimación para cada valor de x, y almacénalos en yhatnw
yhatnw = zeros(size(x));
n = length(x);
% Fijamos el width en 1.
h = 1;
% Calculamos el smooth para cada valor en x
for i = 1:n
w = wfun(h,x(i),x);
yhatnw(i) = EXPRESIÓN DEL ESTIMADOR NADARAYA-WATSON para cada i;
end
Ahora dibuja los datos originales junto con la curva estimada.
A continuación, y sobre el script anterior, implementa el siguiente estimador conocido como estimador no paramétrico Priestley-Chao:
gPC (x) 1
h(xi xi1)K
x xi n
yi
i1
n
Ahora estarás estimando dos curvas. Representa gráficamente ambas.
Sin embargo, el método Nadaraya-Watson, que ajusta una constante local, puede ser fácilmente
generalizable y estimar g(x) con un estimador kernel noparamétrico local lineal o incluso
polinómico. Los estimadores locales lineales además automáticamente proveen de un estimador
respuesta, esto es, la derivada de g(x), mientras que el orden p-ésimo del método polinómico local
puede llegar hasta la derivada de orden p.
Los estimadores kernel locales polinómicos consisten en obtener una estimación de Yo en el punto
Xo ajustando un polinomico de grado p utilizando para ello mínimos cuadrados ponderados. En
definitiva se quiere ponderar los puntos en base a su distancia al punto Xo (los puntos cercanos
tendrán mayor peso que los alejados). Los pesos se obtienen de la altura de una función kernel
centrada en Xo.
La expresión del estimador kernel localmente polinómico en un punto x es:
0 1(Xi x) 2(Xi x)2 ...p(Xi x)
p
usando los puntos (Xi,Yi) y por medio de mínimos cuadrados ponderados. Los pesos están
definidos por la función kernel
Kh(Xi x) 1
hKXi x
h
.
El valor de la estimación en el punto x es 0 , donde i es tal que minimiza
Kh(Xi x)(Yi i1
n
0 1(Xi x) ... p(Xi x)p )2 .
Matricialmente el procedimiento para la estimación de mínimos cuadrados ponderados sería la
siguiente:
b (X 'xWxXx )1X 'xWxY, donde Y es el vector de respuestas de dimensión nx1,
y por otro lado,
Xx
1 X1 x ... X1 x p
: : ... :
1 Xn x ... Xn x p
, y W es una matriz n x n con los pesos en la diagnonal principal
wii Kh (Xi x).
El estimador y f (x) es el coeficiente del intercepto 0 del ajuste local, y por tanto lo podemos
obtener de
f (x) i '1(X 'xWxXx )1X 'xWxY, donde i '1
es un vector (p+1) x 1 con un uno en el primer lugar, y cero en el resto.
En el caso particular de p = 0, llegamos al estimador de Nadaraya-Watson, y para p = 1 llegamos al
estimador kernel local lineal.
EJERCICIO 14. Implementa el estimador kernel lineal local (p=1), y con exactamente los mismos
datos que en el ejercicio 13, replica dicho ejercicio.
En función de cuál sea el orden del estimador kernel polinómico local, el ancho de banda h (o
anchos de banda) será(n) diferente(s). No obstante esto no es el objeto de este curso y el lector
interesado puede hallar una variedad de métodos alternativos en Li y Racine (2007) para
seleccionarlos óptimamente.