2 votos

Ayuda para replicar en R los resultados de un artículo sobre Bayes

Me interesa reproducir los resultados sobre la intención del consumidor encontrados en Introducción al Bayes empírico por Casella.

He llegado hasta el cálculo de priores beta, pero me he quedado atascado ahí.

Esto es lo que tengo hasta ahora

>customer_intent_ungrouped <- tibble(intent = c(rep(0,293),rep(.1,26),rep(.2,21),rep(.3,21),rep(.4,10),rep(.5,9), rep(.6,12),rep(.7,13), rep(.8,11),rep(.9,10),rep(1.0,21)))

>customer_intent <-  customer_intent_ungrouped %>% count(intent)

>customer_intent$level <- cut(customer_intent$intent, breaks = c(0,.1,.4,.7,1,Inf), right = F, labels = c('none', 'low','med', 'high','very_high'))
>customer_intent_totals <- customer_intent  %>% group_by(level) %>% mutate(group_totals = sum(n)) 

Los datos resultantes son los siguientes

>customer_intent_totals 

   intent     n     level group_totals
    <dbl> <int>    <fctr>        <int>
 1    0.0   293      none          293
 2    0.1    26       low           68
 3    0.2    21       low           68
 4    0.3    21       low           68
 5    0.4    10       med           31
 6    0.5     9       med           31
 7    0.6    12       med           31
 8    0.7    13      high           34
 9    0.8    11      high           34
10    0.9    10      high           34
11    1.0    21 very_high           21

Creo, y aquí es donde podría estar equivocado, que estos son los datos que se utilizan para obtener estimaciones. alpha y beta para una distribución beta. Obtengo esos términos utilizando ebbr con el siguiente código.

customer_intent_totals %>% ebbr::ebb_fit_prior(x=n,n=group_totals)

El problema es que el documento, en la figura 5, indica un alfa = 0,25 y una beta = 0,43. Mis resultados son alfa = 0,84 y beta = 0,65. Mis resultados son alfa=0,84 y beta = 0,65. Esto conduce a resultados muy diferentes.

Al final estoy intentando obtener las mismas estimaciones empíricas de Bayes, en R, que está obteniendo el autor que son

intent_group   emp_bayes
0               0.07
.1-.3           .18
.4-.6           .36
.7-.9           .54
1               .67

1voto

user164061 Puntos 281

Bien encontrado +1. Se trata de un problema bastante áspero debido a las declaraciones confusas en las obras de referencia.

El artículo de Casella

A mí me parece que el artículo de Casella contiene un error al utilizar el $\alpha = 0.25$ y $\beta = 0.43$ .

Ya debería estar claro, a partir de una comprobación de cordura, que $\frac{0.25}{0.25+0.43}$ no da lugar en modo alguno al valor 0,172 de la media $\bar{l_s}$

(además, si rellena estos valores para $\alpha$ y $\beta$ en la ecuación (4.4), entonces no se llega al resultado de la ecuación (4.6)) .

No me queda claro qué hicieron ahí, para obtener estos resultados, pero un error en el álgebra parece fácil.

Expresión para $\alpha$ y $\beta$

Si tomamos su ecuación (4.5)

$$E(I_i^S) = \frac{\alpha}{\alpha+\beta} \\ var(I_i^S) = \frac{1}{10} \left( \frac{\alpha}{\alpha+\beta} \right) \left(1 - \frac{\alpha}{\alpha+\beta} \right) \left( \frac{\alpha + \beta + 10}{\alpha + \beta + 1}\right)$$

(Donde observamos que estos son los momentos para $I_i^S \sim \frac{1}{10} binomial(10,I_i^T)$ y no como se indica en su ecuación (4.2) $I_i^S \sim binomial(10,I_i^T)$ . Se trata de un matiz detallado, aunque importante, que tratan con un "esto puede, por supuesto, manejarse fácilmente, y no entraremos aquí en tanto detalle").

podemos escribir, utilizando simplificaciones $\mu = E(I_i^S)$ y $vr = var(I_i^S)$ lo siguiente:

$$\alpha = \frac{(\mu(1-\mu)-vr)\mu}{vr-\frac{1}{10}\mu(1-\mu)} \\ \beta = \alpha \frac{1-\mu}{\mu} $$

(existen muchas otras formas, la cuestión es que la expresión expresa ahora $\alpha$ y $\beta$ como funciones de $\mu$ y $vr$ )

Y obtenemos con media 0,172 y varianza 0,091 lo siguiente:

$$\alpha = 0.11 \quad, \qquad \beta=0.55$$

introduciéndolas en la ecuación (4.4) se obtiene una expresión muy parecida a la ecuación (4.6)

$$\hat{I}_i^S = (.401)(.172) + (.599) I_i^S $$

(El contraste con la ecuación (4.6) son los términos $.401$ y $.599$ en lugar de $.405$ y $.595$ . Obtendríamos estos términos exactamente para $\alpha=.25$ y $\beta=.43$ pero entonces el $.172$ término es completamente erróneo )

Así que este resultado vuelve a ser el mismo, y puede parecer que Casella, no vio razón para volver a comprobar las ecuaciones porque el resultado seguía siendo bueno (aún faltando el llamativo error en la expresión $\mu \neq \frac{0.25}{0.25+0.43}$ ).

El uso de ebbr

Hay algunos problemas en tus expresiones. En realidad no entiendo muy bien lo que intentas hacer. La siguiente es una expresión que funciona (utilizando el método de los momentos, que también se hace arriba y en el artículo de Casella):

> # number of successes (multiplying the intent data by 10)
> x <- c(rep(0,293),
       rep(1,26),
       rep(2,21),
       rep(3,21),
       rep(4,10),
       rep(5,9),
       rep(6,12),
       rep(7,13),
       rep(8,11),
       rep(9,10),
       rep(10,21))

> # total number of trials (n = 10 for every person according to the Morrison 1979 model)
> n <- rep(10,447)

> # table
> tab <-tibble(x=x,n=n)

> # beta-model (note this not really doing a beta-binomial distribution)
> tab %>% ebbr::ebb_fit_prior(x=intent,n=n,method = "mm")
Empirical Bayes binomial fit with method mm 
Parameters:
# A tibble: 1 x 2
       alpha      beta
       <dbl>     <dbl>
1 0.09694816 0.4680561

Obsérvese que existe una discrepancia. Esto se debe a que la función ebbr no está haciendo realmente una distribución beta-binomial. Lo que está haciendo es calcular las probabilidades en cada experimento binomial individual $p=x/n$ y haciendo cálculos sobre esos valores $p$ utilizando $\mu(p)$ y $var(p)$ en lugar de $\mu(x)$ y $var(x)$ . Esto resulta en:

$$\alpha = \frac{(\mu(1-\mu)-vr)\mu}{vr} \\ \beta = \alpha \frac{1-\mu}{\mu} $$

La diferencia con las expresiones anteriores es que no se tiene en cuenta la varianza de los datos, debida a la distribución binomial (no es una práctica muy correcta). La varianza de la distribución beta-binomial tiene un término adicional $n(\alpha + \beta + n)$ que sólo se tiene en cuenta en el paquete "ebbr" aproximando con $n^2$ (utilizando una simple división por n para todos los valores de x).

Otra nota

El artículo de Casella parece muy breve al explicar cómo obtienen la ecuación (4.4), que se parece a la ecuación (2.7), pero la relación no se explica y queda bastante vaga.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X