lunes, 17 de julio de 2017

Regresión no paramétrica: como la regresión paramétrica... pero no

Enrique Pinzón, Econometra Senior - Stata Corp.

Intro
La regresión no paramétrica es similar a la regresión lineal, la regresión Poisson, y las regresiones Logit y Probit, en tanto que se está prediciendo la media de un proceso, dado un conjunto de regresores. Si has trabajado con los modelos paramétricos que acabamos de mencionar u otros modelos que predicen medias, entonces ya sabes cómo funciona la regresión no paramétrica y puedes también trabajar con esa herramienta.
La diferencia principal entre los modelos paramétricos y no paramétricos son los supuestos sobre la forma funcional de la media y los regresores. Los modelos paramétricos asumen que la media es una función conocida de xβ, mientras que la regresión no paramétrica no impone supuestos sobre la forma funcional.
En la práctica, esto significa que la regresión no paramétrica produce estimados consistentes de la función de media, que son robustos a la mala especificación funcional. Pero no hay por qué detenernos ahí. Con el comando npregress de Stata 15, podemos obtener estimados de cómo cambia la media conforme cambian los regresores —ya sean discretos o continuos— y podemos utilizar la opción margins para responder otras preguntas sobre la función de media.
A continuación ilustraremos cómo utilizar npregress y cómo interpretar sus resultados. Como verás, los resultados se interpretan igual que interpretaríamos los resultados de una regresión paramétrica con margins.

Ejemplo de regresión
Para ilustrar esto, simularemos una serie donde el modelo verdadero satisface los supuestos de la regresión lineal. Utilizaremos un regresor continuo y un regresor discreto. El regresando depende de los regresores de la siguiente manera:

donde x es el regresor continua y a es el regreor discreto, con valores 0, 1 y 2. Generaremos los datos con el siguiente bloque de código:


Bloque 1. Código para generar los datos

Las más de las veces, el investigador no conoce la forma funcional de la media. Cuando se conoce la relación verdadera entre y, a y x, se puede utilizar regress para estimar la función de media. Por ahora, continuaremos el ejemplo como si no conociéramos la relación verdadera y estimaremos la función de media con el comando:
regress y c.x#c.x#c.x c.x#i.a
Luego, podemos estimar el promedio de la función de media, el efecto marginal promedio de x y los efectos de tratamiento promedio de a. Según el comando margins, el promedio de la función de media es 12.02 (Figura 1).
Figura 1. Salida del comando margins

La estimación del efecto marginal promedio de x, obtenida con la opción dydx(x), es de 3.96 (Figura 2).
Figura 2. Salida del comando margins, dydx(x)

Y la estimación del efecto de tratamiento promedio para a = 1, relativo a a = 0, es de -9.78; para el efecto de a = 2, relativo a a = 0, obtenemos 3.02 (Figura 3).
Figura 3. Salida del comando margins, dydx(a)

Ahora utilizaremos el comando npregress para estimar la función de media, sin imponer supuestos sobre la forma funcional (Figura 4).
Figura 4. Estimación con el comando npregress

El promedio de los estimados de la media es de 12.34; el efecto marginal promedio de x se reporta como 3.62; la estimación del efecto de tratamiento promedio para a = 1 es de -9.88; y la estimación del efecto de tratamiento promedio para a = 2 es de 3.17. Todos estos valores son razonablemente cercanos a los que obtuvimos con el comando regress, utilizando el hecho de que conocemos la verdadera forma funcional de la media.
Además, el intervalo de confianza de cada estimado incluye tanto el valor verdadero simulado como el estimado obtenido con regress. Esto nos lleva a otro punto importante. En general, los intervalos de confianza que obtenemos con npregress son más amplios que los que se obtienen con un regress de la forma funcional correcta. Esto no es de sorprender. La regresión no paramétrica es consistente, pero no puede ser más eficiente que ajustar un modelo paramétrico bien especificado.
En este ejemplo, utilizar regress y margins conociendo la forma funcional es equivalente a utilizar npregress. Se obtienen estimados similares y los resultados tienen la misma interpretación.
Ejemplo con variable dependiente binaria
La variable dependiente de nuestro primer ejemplo era continua. Sin embargo, se puede también estimar una media condicional —que es lo mismo que una probabilidad condicional— para una variable dependiente binaria.
Utilizando el mismo seed de 111 y el mismo tamaño de muestra, nuestro modelo verdadero será esta vez:

donde

y a una vez más toma los valores discretos 0, 1 y 2. Los resultados de una estimación logit se muestran en la Figura 5.
Figura 5. Resultados de estimación logit

El promedio de las medias condicionales estimadas es de 0.304, y es igual a la probabilidad promedio de "éxito"; el efecto marginal estimado de x es 0.169, el efecto de tratamiento promedio para a = 1 se estima como -0.181, y el efecto de tratamiento promedio para a = 2 como -0.350.
Veamos si npregress puede obtener resultados similares sin saber de antemano que la forma funcional es logística (Figura 6).
Figura 6. Salida de npregress para modelo logístico

El estimado de la media condicional es 0.309, el efecto marginal estimado de x es 0.172, el efecto de tratamiento promedio para a = 1 se estima como -0.177, y el efecto de tratamiento promedio para a = 2 como -0.352. La regresión no paramétrica logró el objetivo.
Contestando otras preguntas
El comando npregress proporciona estimados de efectos marginales y efectos de tratamiento como parte de su salida, pero también podemos obtener respuestas a otras preguntas importantes utilizando el comando margins.
Regresemos al ejemplo de la regresión y supongamos que queremos obtener el valor de la función de media para diferentes valores del regresor x, promediando sobre a (Figura 7).
Figura 7. Salida de margins

Luego, utilizando el comando marginsplot, podemos obtener la Figura 8.
Figura 8. Valor ajustado para diferentes valores de x (promedio sobre a)

En la Figura 8 podemos apreciar que, conforme x aumenta, también aumenta el valor ajustado, si bien de manera no lineal.
Por otra parte, podríamos graficar la función de media para los mismos valores de x, pero, en vez de promediar sobre a, podemos obtener la media esperada para cada valor de a. El comando sería:
margins a, at(x1=(1(.5)3)) vce(bootstrap, reps(100) seed(111))
Utilizando marginsplot, podemos visualizar el resultado (Figura 9).
Figura 9. Valores ajustados para diferentes valores de x y a

Podemos observar en la Figura 9 que el efecto de x sobre la media es distinto para diferentes valores de a. Dado que nuestro modelo tiene únicamente dos regresores, la Figura 9 contiene toda la información de la función de media.
Podríamos incluso preguntar cuál es el efecto promedio de un aumento del 10% en x. En este caso, al decir "promedio"nos referimos a aumentar 10% el x de cada observación de la serie. x podría ser, por ejemplo, una oferta en una tienda departamental, y nos preguntamos qué sucederá si aumentamos la oferta otro 10% (Figura 10).
Figura 10. Efecto de aumentar x un 10%

Podemos utilizar los comandos margins y npregress juntos para obtener efectos en diferentes valores de los datos, efectos promedio para la población, y contestar cualquier otra pregunta que sería apropiada en un contexto paramétrico.
Conclusión
El comando npregress es capaz de estimar una función de media para todo tipo de variables dependientes —continuas, binarias, de conteo, y más. La interpretación de los resultados es equivalente a la interpretación de los resultados de un modelo binario, al igual que lo es la interpretación de las salidas del comando margins. Lo que hace que npregress sea especial es que no necesitamos asumir una forma funcional. Con los modelos paramétricos, nuestras inferencias probablemente carezcan de sentido si no conocemos la verdadera forma funcional. Con npregress, nuestras inferencias son válidas independientemente de la verdadera forma funcional.

3 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  2. ¿El stata 14 tiene regresión no paramétrica? He visto que tiene regresión para rangos intercuartilicos ¿Seria similar?

    ResponderBorrar
    Respuestas
    1. ¡Hola! Aquí podrás ver todas las características que Stata 14 tiene: http://stata.multion.com/

      Borrar