Extraer patrones y relaciones de los datos
Dpto. de Fundamentos del Análisis Económico. Universidad de Alicante
La modelización mediante métodos estadísticos permite
Encontrar patrones
Interpretar datos
El estadístico varía entre muestras.
¿Cómo de fiable es este estadístico en una muestra?
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\)
Idea: Usar la ÚNICA muestra como si fuera la población → generar variación “similar” a la muestral
Aprendizaje automático (machine learning, ML) o estadístico (statiscal learning): conjunto de técnicas algorítmicas para extraer información de los datos
Aprendizaje supervisado: para cada medida de \(X\) hay una respuesta asociada \(Y\)
Aprendizaje no supervisado: no hay una respuesta asociada, aprendemos rasgos no medidos
\[ \small Y = f(X) + \varepsilon \]
Modelo para la variable dependiente en función de
factores observados (predictores/características)
factores no observados (\(\small \varepsilon\))
\(f\) representa la relación sistemática que \(X\) (género, educación, etc.) ofrece sobre \(Y\) (ej. renta)
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!
Según la naturaleza de \(Y\) tenemos:
Problemas de Regresión: \(Y\) cuantitativa (salario, ventas, precio)
Problemas de Clasificación: \(Y\) cualitativa (compra/no compra, categoría producto)
Dos enfoques para 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 sin supuestos funcionales
\[\quad \small \color{blue}{ventas = \beta_0 + \beta_1 renta + \beta_2 descuento + u}\]
Constante \(\small \color{blue}{\beta_0= E(ventas|renta=0, descuento=0)}\)
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)
también \(\small \beta_1 = E(ventas|renta=x+1,descuento=d)-E(ventas|renta=x,descuento=d)\)
Para variables discretas binarias \(\small \color{blue}{\beta_2 = E(ventas|renta=x,descuento=1)-E(ventas|renta=x,descuento=0)}\)
Objetivo: estimar los coeficientes poblacionales desconocidos a partir de una muestra
Los coeficientes estimados minimizan la Suma Cuadrática de Residuos, \(\small \hat{e}\) (errores de estimación): es decir , las distancias entre
los datos observados: \(\small y_i\)
y los datos predichos por el modelo estimado \(\small \hat{y}_i=\hat{\beta}_0+\hat{\beta}_1 X_1+ \dots + \hat{\beta}_k X_p\)
\[ \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, 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 resultadosIncorporar información cualitativa: incluimos una variable binaria (dummy) para cada categoría, excepto una (grupo de referencia)
Cada coeficiente es el efecto diferencial de ese grupo respecto al grupo de referencia
Las dummies se crean automáticamente con factores (sin orden)
fastDummiesModelizar relaciones no lineales entre la variable dependiente y las explicativas
El modelo lineal asume efecto constante \(\frac{\partial Y}{\partial X_j} = \beta_j\), PERO en la realidad observamos
Solución: Transformar variables para capturar estas no linealidades
# Y ~ log(X): semi-elasticidad / rendimientos decrecientes
lm(data = descuento, ventas ~ log(renta) + descuento)
# log(Y) ~ log(X): elasticidad constante
lm(data = descuento, log(ventas) ~ log(renta) + descuento)
# log(Y) ~ X: semi-elasticidad / crecimiento exponencial
lm(data = descuento, log(ventas) ~ renta + descuento)La “pendiente” cambia con el valor de la otra variable: \(\small{\frac{\partial ventas}{\partial mujer} = \beta_1 + \beta_3 mujer}\)
Deben incluirse siempre los factores principales (NO sólo 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() (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") # claseUn modelo es mejor cuanto mejor se ajusten sus predicciones 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)
Una función de pérdida (o coste) evalúa cómo valoramos las desviaciones
Mean Square Error (Error Cuadrático Medio): \(\small \color{blue}{MSE(y,\widehat{y})={\frac{1}{n}\sum_{i=1}^{n}\left(y-\widehat{y}\right)^2}}\)
penaliza grandes desviaciones
\(\small \color{blue}{R^2}\) y \(\small \color{blue}{R^2-ajustado}\): variantes solo para comparar modelos con la misma variable dependiente.
Root Mean Square Error: \(\small \color{blue}{RMSE(y,\widehat{y})=\sqrt{\frac{1}{n}\sum_{i=1}^{n}\left(y-\widehat{y}\right)^2}}\)
Mean Absolute Error: \(\small \color{blue}{MAE(y,\widehat{y})=\frac{1}{n}\sum_{i=1}^{n}\left|y-\widehat{y}\right|}\)
\[ \scriptsize \begin{align*} volume &= \beta_0 + \beta_1 \, \mathrm{hightemp} + \varepsilon \\ volume &= \beta_0 + \beta_1 \, \mathrm{hightemp} + \beta_2 \, \mathrm{hightemp}^2 + \varepsilon \\ &\vdots \\ volume &= \beta_0 + \beta_1 \, \mathrm{hightemp} + \dots + \beta_{22} \, \mathrm{hightemp}^{22} + \varepsilon \end{align*} \]
El objetivo de un modelo es predecir casos nuevos (no reproducir los datos vistos)
Las métricas (\(\small MSE\), \(R^2\)) calculadas en los mismos datos usados para estimar NO informan de esto: miden in-sample prediction, no out-sample prediction
Dividimos la muestra para usar datos diferentes para estimar y para calcular las métricas
Muestra de entrenamiento (train) donde se ajusta el modelo
Muestra de prueba (test) donde se calculan métricas con observaciones NO vistas antes por el modelo → evaluamos el mejor modelo para predecir casos nuevos
Siempre que aumenta la flexibilidad, el MSE
disminuye en la muestra de entrenamiento
tiene forma de U en la muestra de prueba
Nota: el MSE en entrenamiento es siempre menor que en prueba
\[ \small \text{Error Total} = \text{Sesgo}^2 + \text{Varianza} + \text{Error Irreducible} \]
Sesgo: diferencia entre predicción promedio y valor real por especificar mal \(f\)
Varianza: cuánto cambian las predicciones con diferentes datos
Al aumentar la complejidad ↓ sesgo pero ↑ varianza ⇒ encontrar una flexibilidad intermedia
No pueden minimizarse simultáneamente ambas fuentes de error: memorización (en entrenamiento) vs. generalización de resultados
El modelo predice la probabilidad de que una observación pertenezca a cada categoría ⇒ se asigna como clase predicha aquella con mayor probabilidad
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)NO tiene sentido diferencia de clases ⇒ no se puede calcular MSE y similares
Matriz de Confusión: tabular categorías observadas frente a las categorías predichas
CLASE OBSERVADA
|
||
|---|---|---|
| CLASE PREDICHA ↓ | POSITIVO (1) | NEGATIVO (0) |
| POSITIVO (1) | Verdadero Positivo [VP] | Falso Positivo [FP] (Error Tipo I) |
| NEGATIVO (0) | Falso Negativo [FN] (Error Tipo II) |
Verdadero Negativo [VN] |
\[ \scriptsize \color{blue}{ACCUR=\frac{VP+VN}{VP+FP+VN+FN}} \]
Tasa de verdaderos positivos o sensibilidad (recall) \[ \scriptsize \color{blue}{TVP=SENSIT=\frac{VP}{VP+FN}} \]
Tasa de verdaderos negativos o especificidad \[ \scriptsize \color{blue}{TVN=ESPECIF=\frac{VN}{VN+FP}} \]
Exactitud equilibrada: (Balanced Accuracy) media de la sensibilidad y de la especificidad
Precisión: \(\scriptsize PREC=\frac{VP}{VP+FP}\)
La familia de medidas \(\small F_{\beta}\): ratio de la importancia ponderada de la sensibilidad y de la precisión
La AUC es el área bajo la curva ROC: ofrece una medida agregada de rendimiento entre 0 (todas las clasificaciones incorrectas) y 1 (todas correctas)
Resume la curva ROC y permite comparar curvas que se cruzan
Con clases desequilibradas, se puede preferir en lugar de la ROC un gráfico de precisión frente sensibilidad (precision-recall) y su correspondiente AUC (PR-AUC)
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
La validación cruzada (cross-validation o rotation estimation) repite varias veces y de forma ordenada el proceso de partición en grupos de entrenamiento y prueba (similar a bootstrap)
Este método de evaluación de modelos:
Evita que los resultados sean sensibles a una partición concreta de los datos
Permite utilizar todas las observaciones de la muestra, tanto para estimar como para evaluar el modelo (aunque no a la vez)
Algunas variantes de Validación Cruzada (VC) son:
VC de K iteraciones (K-fold cross-validation o K-fold CV) (el más habitual)
VC aleatoria (Random cross-validation, RCV)
VC dejando uno fuera (Leave-one-out cross-validation, LOOCV)
VC dejando p fuera (Leave-p-out cross-validation, LpOCV)
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