Dpto. de Fundamentos del Análisis Económico. Universidad de Alicante
La modelización mediante métodos estadísticos permite
Encontrar patrones
Interpretar datos
Con todas las muestras potenciales de tamaño \(\small n\) conoceríamos la distribución muestral de un estadístico (información calculada en una muestra)
Suponiendo que los datos son normales, la media tiene una distribución normal
Teorema Central del Límite: para datos de cualquier distribución, \(\overline{Y} \overset{a}{\sim} N(\mu, \sigma^2/n)\) cuando \(n \to \infty\)
Tomar muchas remuestras (muestras de Bootstrap) con reemplazamiento
Este procedimiento permite generar variación (de remuestras) a partir de una única muestra
La distribución muestral bootstrap NO es la distribución muestral, pero aproxima sus aspectos principales sin supuestos (normalidad, TCL)
Aprendizaje supervisado: escenarios en los que para cada observación de las mediciones \(X_i\) hay una respuesta asociada \(Y_i\) (“supervisa” el aprendizaje)
Aprendizaje no supervisado: no hay una respuesta asociada a las mediciones de \(X_i\) para supervisar el análisis que generará un modelo.
\[ \small Y = f(X) + \varepsilon \]
Modelo para la variable dependiente (de respuesta) en función de factores observados (predictores/características) y no observados (\(\small \varepsilon\))
Objetivos:
Predecir el valor esperado de \(\small Y\) para casos nuevos
Comprender cómo afectan al resultado esperado de \(\small Y\) cambios en los valores de las características
p.e., tiene la experiencia un efecto positivo o nula sobre la renta esperada
¡cuidado con afirmaciones de causalidad!
Dos formas de especificar la relación \(f\)
Modelo paramétrico: supone un forma de \(f\) que depende de parámetros desconocidos, p.e., lineal \(f(x) =\beta_0 + \beta_1 x_1 + \dots + \beta_k x_k\)
Modelo no paramétrico: ajustar \(f\) a los datos sin supuestos funcionales
La capacidad predictiva de un modelo mejora si incluimos más variables explicativas (modelo más flexible)
Dependiendo de la naturaleza de la variable dependiente, tenemos:
1.- Problemas de Regresión: variable de respuesta cuantitativa (toma valores numéricos)
2.- Problemas de Clasificación: variable de respuesta cualitativa (toma valores en una de \(C\) categorías o clases)
La constante \(\small \color{blue}{\beta_0= E(ventas|renta=0, descuento=0)}\): valor esperado de \(\small Y\), ventas, cuando todas las variables explicativas son cero
La pendiente de una variable continua \(\small \color{blue}{\beta_1 = \frac{\delta E(ventas|renta,descuento)}{\delta{renta}}}\): cambio esperado de \(\small Y\), ventas, cuando la variable explicativa, renta, aumenta en una unidad, manteniendo el resto de variables constantes (en este caso, un valor dado para descuento)
Para variables discretas binarias \(\small \color{blue}{\beta_2 = E(ventas|renta=x,descuento=1)-E(ventas|renta=x,descuento=0)}\): diferencia del valor esperado de \(\small Y\), ventas, para el grupo indicado por la variable (tienen descuento) respecto al grupo de referencia (no tienen descuento), mateniendo el resto de variables (en este caso, renta) constante
Objetivo: estimar los coeficientes poblacionales desconocidos a partir de una muestra
El error de estimación o residuo es \(\small \hat{e}_i = y_i - \hat{y}_i\), donde la predicción a partir del modelo estimado es \(\small \hat{y}_i=\hat{\beta}_0+\hat{\beta}_1 X_1+ \dots + \hat{\beta}_k X_p\)
Los coeficientes estimados son los que minimizan la Suma Cuadrática de Residuos: la suma total de distancias entre los datos observados y predichos
\[ \small SCR=\sum_{i=1}^{n} \hat{e}_i^2= \sum_{i=1}^{n} ( y_i - \hat{y}_i)^2 \]
Los parámetros del modelo \(f(.)\) estimado, en este caso los \(\small \beta_j\), son estadísticos con variabilidad muestral, medida por su error estándar \(\small se(\widehat{\beta}_j)\)
lm()
con la notación de fórmula crea un objeto lista con resultados Para incorporar información cualitativa en el modelo, se debe incluir una variable binaria para cada categoría, excepto una (grupo de referencia)
Los coeficientes de cada variable binaria son el efecto diferencial de ese grupo respecto al grupo de referencia
Al incluir un factor, se crean automáticamente las variables binarias
Podemos modelizar relaciones no lineales entre la variable dependiente y las explicativas incluyendo transformaciones de variables como logaritmos, polinomios, interacciones, etc.
PERO la interpretación del cambio de un regresor sobre \(\small Y\) es diferente
Incluyendo interacciones entre variables, el efecto de un regresor dependerá de otro regresor: la “pendiente” cambia con el valor de la otra variable
edad:renta
)Los resultados de (todos) estos modelos informan de la relación entre los regresores y la variables dependiente
“Correlación no implica causalidad”, salvo en ensayos científicos aleatorios controlados, también llamados pruebas A/B
Algunos sugieren “pruebas” para los problemas en el modelo lineal; eso es erróneo:
No linealidad: hemos visto que modeliza relaciones no lineales
No normalidad: innecesaria, con TCL o bootstrap.
Colinearidad: simplemente elimina la variable colineal.
Heterocedasticidad y autocorrelación: solo necesitamos errores estándar robustos
glm()
, de forma similar a lm()
; podemos incluir variables explicativas tanto cuantitativas como cualitativas, interacciones, etc.La regresión logística se puede generalizar a situaciones con múltiples clases (modelos multinomiales) con un índice lineal para cada clase \[ \small \Pr(Y=c|X)=\frac{e^{\beta_{0c}+\beta_{1c}X_1+\dots+\beta_{kc}X_k}}{\sum_{l=1}^{C}e^{\beta_{0l}+\beta_{1l}X_1+\dots+\beta_{kl}X_k}} \]
La librería glmnet()
permite la estimación de estos modelos
health <- read_csv("data/health_insurance.csv") %>%
mutate(across(where(is.character), ~parse_factor(.x)))
library(glmnet)
x <- model.matrix(product ~ age + gender, data = health)
mod.glmnet <- glmnet(x = x, y = health$product, family = "multinomial",
lambda = 0, type.multinomial = "grouped")
coef(mod.glmnet)
predict(mod.glmnet, newx=x, type = "response") # probabilidad de cada clase
predict(mod.glmnet, newx=x, type = "class") # clase
Un modelo es mejor si sus predicciones se ajusten mejor a las observaciones
El error de predicción es \(y - \widehat{y} = f(X) - \widehat{f}(X) + \varepsilon\)
\(f - \widehat{f}\) = error reducible (eligiendo modelo)
\(\varepsilon\) = error irreducible (variables no observadas)
La función de pérdida (o coste) evalúa cómo valoramos las desviaciones
Mean Square Error (Error Cuadrático Medio): \(\small MSE(y,\widehat{y})={\frac{1}{n}\sum_{i=1}^{n}\left(y-\widehat{y}\right)^2}\)
penaliza grandes desviaciones
\(\small R^2\) y \(\small R^2\)-ajustado son variantes del MSE, pero solo sirven para comparar modelos con la misma variable dependiente.
Root Mean Square Error: \(\small RMSE(y,\widehat{y})=\sqrt{\frac{1}{n}\sum_{i=1}^{n}\left(y-\widehat{y}\right)^2}\)
Mean Absolute Error: \(\small MAE(y,\widehat{y})=\frac{1}{n}\sum_{i=1}^{n}\left|y-\widehat{y}\right|\)
¿Cuál es el mejor modelo?
\(\small volume = \beta_0 + \beta_1 hightemp + \varepsilon\)
\(\small volume = \beta_0 + \beta_1 hightemp + \beta_2 hightemp^2 + \varepsilon\)
…
\(\small volume = \beta_0 + \beta_1 hightemp + \dots + \beta_{22} hightemp^{22} + \varepsilon\)
Las métricas de error (ej., \(\small MSE\)) suelen calcularse para predicciones de los mismos datos usados para ajustar/estimar el modelo (in-sample prediction)
PERO queremos saber qué tal se predicen casos nuevos (out-sample prediction)
Usar las métricas en muestras de entrenamiento implica problemas de “overfitting”: sobreajuste a las características de la muestra concreta
disminuye en la muestra de entrenamiento
tiene forma de U en la muestra de prueba
\[ \small E\left[\left(y-\widehat{f}(x)\right)^2\right] = E\left[\left(f(x)-\widehat{f}(x) + \varepsilon + E\left[\widehat{f}(x)\right]-E\left[\widehat{f}(x)\right] \right)^2\right] = \]
\[ \small =\underbrace{\left[E\left(\widehat{f}(x)\right)-f(x)\right]^2}_{(1)} + \underbrace{E\left(\left[\widehat{f}(x)-E\left(\widehat{f}(x)\right)\right]^2\right)}_{(2)}+Var(\varepsilon) \]
\(\small (1)=\left[Sesgo\left(\widehat{f}(x)\right)\right]^2\): error por supuestos erróneos en \(f\)
\(\small (2)=Var\left(\widehat{f}(x)\right)\): sensibilidad a fluctuaciones en el entrenamiento
censo <- read_csv("data/census.csv") %>%
mutate(income = parse_factor(income))
logit <- glm(data = censo, income ~ capital_gain,
family = "binomial")
prob.predict <- predict(logit, type = "response")
umbral <- 0.5
cat.predict <- if_else(prob.predict > umbral, 1, 0)
cbind(censo$income, cat.predict, prob.predict) %>% head(10)
CLASE OBSERVADA
|
||
---|---|---|
. | POSITIVO (1) | NEGATIVO (0) |
CLASE PREDICHA | ||
POSITIVO (1) | Verdadero Positivo [VP] | Falso Positivo [FP] |
(Error Tipo I) | ||
NEGATIVO (0) | Falso Negativo [FN] | Verdadero Negativo [VN] |
(Error Tipo II) |
\[ \scriptsize ACCUR=\frac{VP+VN}{VP+FP+VN+FN} \]
No es informativo cuando algunas clases son infrecuentes (datos desequilibrados)
La tasa de verdaderos positivos o sensibilidad (recall) es el porcentaje de verdaderos positivos sobre el total de positivos observados \[ \scriptsize TVP=SENSIT=\frac{VP}{VP+FN} \]
La tasa de verdaderos negativos o especificidad es el porcentaje de verdaderos negativos sobre el total de negativos observados \[ \scriptsize TVN=ESPECIF=\frac{VN}{VN+FP} \]
ej., tasa de “otras” opciones que se clasifican correctamente
Tasa de falsos positivos: \(\scriptsize TFP = 1 - TVN = 1 - ESPECIF\)
\[ \scriptsize PREC=\frac{VP}{VP+FP} \]
La familia de medidas \(\small F_{\beta}\) es una ratio de la importancia ponderada de la sensibilidad y de la precisión: \(\scriptsize F_{\beta}=\frac{(1+\beta)^2 \times SENSIT \times PREC}{\beta^2 \times SENSIT + PREC}\)
Para \(\scriptsize \beta<1\), se da menos importancia a la sensibilidad: los falsos positivos se consideran más costosos
Para \(\scriptsize \beta>1\), los falsos negativos son más costosos y para \(\scriptsize \beta=1\) son igualmente costosos
Existen múltiples funciones de pérdida (o coste de clasificación) posibles.
Las relacionadas con la curva de ganancia consideran el coste de alcanzar un cierto nivel de sensibilidad
Otras se basan en la función de verosimilud o la entropía como medidas de pérdida (ej. mean log loss)
Entrenamiento (80-90%): datos sobre los que se construye/estima el modelo
Prueba(20-10%): se usa el modelo construido para predecir y se evalúa con datos no vistos antes
¿Por qué renunciar a parte de los datos si sabemos que un tamaño muestral grande es importante? Evaluar correctamente un modelo lo es mucho más
La estimación del error en prueba puede ser volátil dependiendo de las observaciones incluidas en cada grupo
Para evitar que los datos sean sensibles a una partición concreta, se usa validación cruzada (cross-validation o rotation estimation)
Se repite varias veces y de forma ordenada el proceso de remuestreo para la partición en grupos de entrenamiento y prueba (similar a bootstrap)
Permite utilizar todas las observaciones de la muestra, tanto para estimar como para evaluar el modelo (aunque no a la vez)
Un subconjunto se usa como prueba y el K-1 restantes como entrenamiento
Se repite el proceso durante k iteraciones, con cada posible subconjunto de datos de prueba.
Se obtiene una métrica de error en cada iteración; se promedian para obtener un único resultado de evaluación
Es el tipo más habitual de validación cruzada
RCV: en cada iteración se realiza la particion aleatoria (con reemplazamiento) entre entrenamiento y prueba
Las observaciones pueden “repetir” como prueba
LOOCV (leave one out CV): solo una observación se usa como prueba en cada iteración y el resto como entrenamiento
Se realizan \(n\) iteraciones; se calcula una media sobre \(n\) resultados