Cuando ajustamos un modelo a datos, corremos el riesgo de que -como dice McElreath- nuestros modelos se entusiasmen demasiado con nuestros datos. En ese caso, estaremos sobre-ajustando el modelo y tendremos mala performance prediciendo datos nuevos. Otra consecuencia de esto son los errores de magnitud y de signo (M y S). Si hacemos análisis Bayesianos podemos tratar de evitar que esto ocurra usando previas “regularizadoras”. Por ejemplo, si estamos haciendo una regresión con variables predictoras estandarizadas, una previa normal(0, 1)
implica que a priori no esperamos que la magnitud de los coeficientes de regresión sea muy gande. Qué tan informativas son nuestras previas va a depender del sistema bajo estudio y del tamaño de la muestra.
Por ejemplo, en una regresión con muchas (\(p\)) variables predictoras tenemos:
\[ y_i \sim N (\mu_i, \sigma^2 ), \\ \mu_i = \alpha + \sum_{j = 1}^{p} \left( x_{ij} \beta_j \right),\\ \text{para } i \text{ en } 1 \cdots n\\ \]
La idea de regularización es tratar de evitar el sobreajuste logrando “encojer” los valores de los \(\beta\) (shrinkage).
Para la ordenada al origen (\(\alpha\)) normalmente usamos previas poco informativas.
Los “horseshoe priors” son un tipo de achicamiento global (global shrinkage), porque tenemos un parámetro que tunea cuánto regularizamos los coeficientes.
\[ \beta_j \sim N(0, \tau^2 \lambda_{j}^2) \\ \lambda_j \sim \text{Cauchy}^{+} (0,1)\\ \]
En este caso, \(\tau\) es un parámetro global que tiende a hacer que los \(\beta\) se encojan hacia \(0\), mientras que la previa Cauchy tiene una cola larga que permite que algunos de los \(\beta\) se alejen de cero. Cuanto más cerca de cero está \(\tau\), mayor va a ser el encojimiento hacia cero.
En una regresión gaussiana donde las covariables son independientes, centradas en cero, y con varianza \(s_j^2\), se puede mostrar que los \(\beta\) estimados (\(\bar{\beta}\)) van a ser aproximadamente
\[ \bar{\beta}_j = (1 - \kappa_j) \hat{\beta}_j \]
donde \(\hat{\beta}\) es el valor estimado sin restricción y \(\kappa_j\) es el factor de encojimiento para el coeficiente \(\beta_j\):
\[ \kappa_j = \frac{1}{1 + n \sigma^{-2} \tau^2 s_j^2 \lambda_j^2} \]
Cuando \(\kappa\) vale \(0\) no hay encojimiento y cuando \(\kappa\) vale \(1\) el coeficiente \(\beta\) queda en cero. Vemos entonces que para valores fijos de \(s\). \(\tau\) y \(\lambda\), el grado de encojimiento disminuye con el tamaño de la muestra (\(n\)) y aumenta con la variabilidad no modelada (\(\sigma\)).
Pasando por alto detalles técnicos, si usamos previas Cauchy independientes para los \(\lambda_j\), y si fijamos a \(\tau\) en ciertos valores, la previa sobre el factor de encojimiento parece una herradura (horseshoe). De allí el nombre:
Con esta previa, esperamos que más o menos la mitad de los \(\beta\) tiendan a cero mientras que la otra mitad tenga poca restricción. El problema es cómo definir qué tan fuerte queremos que sea el encogimiento. Es decir, qué previa poner sobre \(\tau\). Otro potencial problema es que cuando \(\beta\) está lejos de cero, la estimación no está restringida (regularizada).
Una previa de tipo spike-and-slab en general está compuesta por una mezcla de Gaussianas:
\[ \beta_j \sim \lambda_j N(0, c^2) + (1 - \lambda_j) N(0, \epsilon^2), \\ \lambda_j \sim \text{Bernoulli}(\pi), \]
donde \(\epsilon \ll c\). La variable indicadora \(\lambda_j\) nos dice si \(\beta_j\) es cercana a cero (spike) o alejada de cero (slab). Muchas veces se deja \(\epsilon = 0\) de manera que el spike es de tipo delta. La probabilidad de inclusión \(\pi\) refleja nuestra creencia previa sobre qué fracción de los \(\beta\) va a estar alejado de cero. Si dejamos \(\epsilon = 0\), entonces podemos re-escribir esta previa como
\[ \beta_j \sim N(0, c^2 \lambda_j),\\ \lambda_l \sim \text{Bernoulli}(\pi), \]
Que es parecido al horseshoe, solo que en vez de ser contínuo, \(\lambda\) es \(0\) o \(1\).
Piironen y Vehtari proponen un “horseshoe regularizado”
\[ \beta_j \sim N(0, \tau^2 \tilde{\lambda}_j^2),\\ \tilde{\lambda}_j^2 = \frac{c^2 \lambda_j^2}{c^2 + \tau^2 \lambda_j^2} \]
Donde \(c > 0\) actúa regularizando los \(\beta\) que quedan lejos de cero. Es decir, cuando \(\beta_j\) no es cercano a cero, su previa es aproximadamente \(N(0, c^2)\).
En lugar de dejar fijo a \(c\), Piironen y Vehtari proponen usar una previa Gamma inversa para este parámetro. Esta es la versión de “horseshoe” que está implementada en brms
.