-
Notifications
You must be signed in to change notification settings - Fork 27
/
09-analisis_bayesiano.Rmd
4387 lines (3433 loc) · 169 KB
/
09-analisis_bayesiano.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Análisis bayesiano
Para esta sección seguiremos principalmente @kruschke, sin embargo, para el
desarrollo de las notas también se utilizó @gelman-hill, @gelman-bayesian y
@bolstad.
Hasta ahora hemos estudiado métodos estadísticos frecuentistas (o clásicos),
el punto de vista frecuentista se basa en los siguientes puntos (@wasserman):
1. La probabilidad se refiere a un límite de frecuencias relativas, las
probabilidades son propiedades objetivas en el mundo real.
2. En un modelo, los parámetros son constantes fijas (desconocidas). Como
consecuencia, no se pueden realizar afirmaciones probabilísticas útiles en
relación a éstos.
3. Los procedimientos estadísticos deben diseñarse con el objetivo de tener
propiedades frecuentistas bien definidas. Por ejemplo, un intervalo de confianza
del $95\%$ debe contener el verdadero valor del parámetro con frecuencia límite
de al menos el $95\%$.
Por su parte, el paradigma Bayesiano se basa en los siguientes postulados:
1. La probabilidad describe grados de creencia, no frecuencias limite. Como
tal uno puede hacer afirmaciones probabilísticas acerca de muchas cosas y no
solo datos sujetos a variabilidad aleatoria. Por ejemplo, puedo decir: "La
probabilidad de que Einstein tomara una copa de te el $1^0$ de agosto de $1948$"
es $0.35$, esto no hace referencia a ninguna frecuencia relativa sino que
refleja la certeza que yo tengo de que la proposición sea verdadera.
2. Podemos hacer afirmaciones probabilísticas de parámetros.
3. Podemos hacer inferencia de un parámetro $\theta$ por medio de
distribuciones de probabilidad. Las infernecias como estimaciones puntuales y
estimaciones de intervalos se pueden extraer de dicha distribución.
Kruschke describe los puntos de arriba como dos ideas fundamentales del
análisis bayesiano:
* La inferencia bayesiana es la reubicación de creencias a lo largo de
posbilidades. _How often have I said to you that when you have eliminated the impossible, whatever remains, however improbable, must be the truth?_ (Doyle, 1890, chap. 6).
* Las posibilidades son valores de los parámetros en modelos descriptivos.
## Probabilidad subjetiva
¿Qué tanta certeza tienes de que una moneda acuñada por la casa de moneda
mexicana es justa? Si, en cambio, consideramos una moneda antigua y asimétrica,
¿creemos que es justa? En estos escenarios no estamos considerando la verdadera
probabilidad, inherente a la moneda, lo que queremos medir es el grado en que
creemos que cada probabilidad puede ocurrir.
Para especificar nuestras creencias debemos medir que tan verosímil pensamos
que es cada posible resultado. Describir con presición nuestras creencias puede
ser una tarea difícil, por lo que exploraremos como _calibrar_ las creencias
subjetivas.
#### Calibración {-}
Considera una pregunta sencilla que puede afectar a un viajero: ¿Qué tanto
crees que habrá una tormenta que ocasionará el cierre de la autopista
México-Acapulco en el puente del $20$ de noviembre? Como respuesta debes dar
un número entre $0$ y $1$ que refleje tus creencias. Una manera de seleccionar
dicho número es calibrar las creencias en relación a otros eventos cuyas
probabilidades son claras.
Como evento de comparación considera una experimento donde hay canicas en una
urna: $5$ rojas y $5$ blancas. Seleccionamos una canica al azar. Usaremos esta urna
como comparación para considerar la tormenta en la autopista. Ahora, considera
el siguiente par de apuestas de las cuales puedes elegir una:
* A. Obtienes $\$1000$ si hay una tormenta que ocasiona el cierre de la
autopista el próximo $20$ de noviembre.
* B. Obtienes $\$1000$ si seleccionas una canica roja de la urna que contiene
$5$ canicas rojas y $5$ blancas.
Si prefieres la apuesta B, quiere decir que consideras que la probabilidad de
tormenta es menor a $0.5$, por lo que al menos sabes que tu creencia subjetiva
de una la probabilidad de tormenta es menor a $0.5$. Podemos continuar con el proceso para tener una mejor estimación de la creencia subjetiva.
* A. Obtienes $\$1000$ si hay una tormenta que ocasiona el cierre de la
autopista
el próximo $20$ de noviembre.
* C. Obtienes $\$1000$ si seleccionas una canica roja de la urna que contiene
$1$ canica roja y $9$ blancas.
Si ahora seleccionas la apuesta $A$, esto querría decir que consideras que la
probabilidad de que ocurra una tormenta es mayor a $0.10$. Si consideramos ambas
comparaciones tenemos que tu probabilidad subjetiva se ubica entre $0.1$ y $0.5$.
![](img/manicule2.jpg) ¿Cuántos analfabetas dirías que había en México en
$2015$? Da un intervalo del $90\%$ de confianza para esta cantidad.
Más de calibración:
* Prueba de calibración de [Messy Matters](http://messymatters.com/calibration/).
* Más pruebas en [An Educated Guess](http://sethrylan.org/bayesian/index.html).
#### Descripción matemática de creencias subjetivas {-}
Cuando hay muchos posibles resultados de un evento es practicamente
imposible calibrar las creencias subjetivas para cada resultado, en su lugar,
podemos usar una función matemática.
Por ejemplo, puedes pensar que una mujer mexicana promedio mide 156 cm pero
estar abierto a la posibilidad de que el promedio sea un poco mayor o menor.
Es así que puedes describir tus creencias a través de una curva con forma
de campana y centrada en 156. No olvidemos que estamos describiendo
probabilidades, subjetivas o no deben cumplir los axiomas de probabilidad. Es
por esto que la curva debe conformar una distribuión de probabilidad.
Ahora, si $p(\theta)$ representa el grado de nuestra creencia en los valores de
$\theta$, entonces la media de $p(\theta)$ se puede pensar como un valor de
$\theta$ que representa nuestra creencia típica o central. Por su parte,
la varianza de $\theta$, que mide que tan dispersa esta la distribución, se
puede pensar como la incertidumbre entre los posibles valores.
## Regla de Bayes e inferencia bayesiana
Thomas Bayes ($1702-1761$) fue un matemático y ministro de la iglesia
presbiteriana, en $1764$ se publicó su famoso teorema.
Una aplicación crucial de la regla de Bayes es determinar la probabilidad de un
modelo dado un conjunto de datos. Lo que el modelo determina es la probabilidad
de los datos condicional a valores particulares de los parámetros y a la
estructura del modelo. Por su parte usamos la regla de Bayes para ir de la
probabilidad de los datos, dado el modelo, a la probabilidad del modelo, dados
los datos.
#### Ejemplo: Lanzamientos de monedas {-}
Comencemos recordando la regla de Bayes usando dos variables aleatorias
discretas. Lanzamos una moneda $3$ veces, sea $X$ la variable aleatoria
correspondiente al número de Águilas observadas y $Y$ registra el número de
cambios entre águilas y soles.
+ Escribe la distribución conjunta de las variables, y las distribuciones
marginales.
+ Considera la probabilidad de observar un cambio condicional a que observamos
un águila y compara con la probabilidad de observar un águila condicional a
que observamos un cambio.
Para entender probabilidad condicional podemos pensar en restringir nuestra
atención a una única fila o columna de la tabla.
**Ejemplo.** Supongamos que alguien lanza una moneda $3$ veces y nos informa que
la secuencia contiene exactamente un cambio. Dada esta información podemos
restringir nuestra atención a la fila correspondiente a un solo cambio. Sabemos
que ocurrió uno de los eventos de esa fila.
* Las probabilidades relativas de los eventos de esa fila no han cambiado pero
sabemos que la probabilidad total debe sumar uno, por lo que simplemente
normalizamos dividiendo entre $p(C=1)$.
* En este ejemplo, vemos que cuando no sabemos nada acerca del número de
cambios, todo lo que sabemos de número de águilas está contenido en la
distribución marginal de $X$, por otro lado, si sabemos que hubo un cambio
entonces sabemos que estamos en los escenarios de la fila correspondiente a un
cambio, y calculamos estas probabilidades condicionales.
* Es así que nos movemos de creencias iniciales (marginal) acerca de $X$ a
creecnias posteriores (condicional).
### Regla de Bayes en modelos y datos {-}
Una de las aplicaciones más importantes de la regla de Bayes es cuando las
variables fila y columna son datos y parámetros del modelo respectivamente.
Un modelo especifica la probabilidad de valores particulares dado la estructura
del modelo y valores de los parámetros. Por ejemplo en un modelo de lanzamientos
de monedas tenemos
$$p(x = A|\theta)=\theta$$,
$$p(x = S|\theta)= 1- \theta$$
De manera general, el modelo especifica:
$$p(\text{datos}|\text{valores de parámetros y estructura del modelo})$$
y usamos la regla de Bayes para convertir la expresión anterior a lo que
nos interesa de verdad, que es, que tanta certidumbre tenemos del modelo
condicional a los datos:
$$p(\text{valores de parámetros y estructura del modelo} | \text{datos})$$
Una vez que observamos los datos, usamos la regla de Bayes para determinar
o actualizar nuestras creencias de posibles parámetros y modelos.
Entonces:
<div class="caja">
* Cuantificamos la información (o incertidumbre) acerca del parámetro
desconocido $\theta$ mediante distribuciones de probabilidad.
* Antes de observar datos $x$, cuantificamos la información de $\theta$ externa
a $x$ en una __distribución a priori__:
$$p(\theta),$$
esto es, la distribución a priori resume nuestras creencias acerca del parámetro
ajenas a los datos. Por
otra parte, cuantificamos la información de $\theta$ asociada a $x$ mediante la
__distribución de verosimilitud__
$$p(x|\theta)$$
* Combinamos la información a priori y la información que provee $x$ mediante el
__teorema de Bayes__ obteniendo así la __distribución posterior__
$$p(\theta|x) \propto p(x|\theta)p(\theta).$$
* Las inferencias se obtienen de resúmenes de la distribución posterior.
</div>
#### Ejemplo: Ingesta calórica en estudiantes {-}
Supongamos que nos interesa aprender los hábitos alimenticios de los estudiantes
universitarios en México, y escuchamos que de acuerdo a investigaciones se
recomienda que un adulto promedio ingiera $2500$ kcal. Es así que **buscamos
conocer que proporción de los estudiantes siguen esta recomendación**, para ello
tomaremos una muestra aleatoria de estudiantes del ITAM.
* Denotemos por $\theta$ la proporción de estudiantes que ingieren en un día
$2500$ kcal o más. El valor de $\theta$ es desconocido, y desde el punto de
vista bayesiano cuando tenemos incertidumbre de algo (puede ser un parámetro o
una predicción) lo vemos como una variable aleatoria y por tanto tiene asociada
una distribución de probabilidad que actualizaremos conforme obtenemos
información (observamos datos).
1. Recordemos que la distribución $p(\theta)$ se conoce como la distribución
_a priori_ y representa nuestras creencias de los posibles valores que puede
tomar el parámetro. Supongamos que tras leer artículos y entrevistar
especialistas consideramos los posibles valores de $\theta$ y les asigmanos
pesos:
```{r, warning=FALSE, message=FALSE}
library(tidyverse)
theta <- seq(0.05, 0.95, 0.1)
pesos.prior <- c(1, 5.2, 8, 7.2, 4.6, 2.1, 0.7, 0.1, 0, 0)
prior <- pesos.prior/sum(pesos.prior)
prior_df <- tibble(theta, prior = round(prior, 3))
prior_df
```
2. Una vez que cuantificamos nuestro conocimiento (o la falta de este) sobre los
posibles valores que puede tomar $\theta$ especificamos la verosimilitud y la
distribución conjunta $p(x, \theta)$, donde $x = (x_1,...,x_N)$ veamos
la distribución de un estudiante en particular:
$$p(x_i|\theta) \sim Bernoulli(\theta),$$
para $i=1,...,N$, es decir, condicional a $\theta$ la probabilidad de que un
estudiante ingiera más de $2500$ calorías es $\theta$ y la función de
verosimilitud $p(x_1,...,x_N|\theta) = \mathcal{L}(\theta)$:
$$p(x_1,...,x_N|\theta) = \prod_{n=1}^N p(x_n|\theta)$$
$$= \theta^z(1 - \theta)^{N-z}$$
donde $z$ denota el número de estudiantes que ingirió al menos $2500$ kcal y
$N-z$ el número de estudiantes que ingirió menos de $2500$ kcal.
3. Ahora calculamos la __distribución posterior__ de $\theta$ usando la regla de
Bayes:
$$p(\theta|x) = \frac{p(x_1,...,x_N,\theta)}{p(x)}$$
$$\propto p(\theta)\mathcal{L}(\theta)$$
Vemos que la distribución posterior es proporcional al producto de la
verosimilitud y la distribución inicial, el denominador $p(x)$ no depende de
$\theta$ por lo que es constante (como función de $\theta$) y esta ahí para
normalizar la distribución posterior asegurando que tengamos una distribución
de probabilidad.
#### Inicial discreta {-}
Volviendo a nuestro ejemplo, usamos la inicial discreta que discutimos (tabla
de pesos normalizados) y supongamos que tomamos una muestra de $30$ alumnos de
los cuales $z=11$ ingieren al menos $2500$ kcal, calculemos la distribución
posterior de $\theta$, usando que
$$\mathcal{L}(\theta) = \theta^{z}(1-\theta)^{N-z}$$
con $0<\theta<1$
```{r, fig.height=2.6, fig.width=5}
library(LearnBayes)
N <- 30 # estudiantes
z <- 11 # éxitos
# Verosimilitud
Like <- theta ^ z * (1 - theta) ^ (N - z)
product <- Like * prior
# Distribución posterior (normalizamos)
post <- product / sum(product)
dists <- bind_cols(prior_df, post = post)
round(dists, 3)
# También podemos usar la función pdisc
pdisc(p = theta, prior = prior, data = c(z, N - z)) %>% round(3)
# Alargamos los datos para graficar
dists_l <- dists %>%
gather(dist, val, prior:post) %>%
mutate(dist = factor(dist, levels = c("prior", "post")))
ggplot(dists_l, aes(x = theta, y = val)) +
geom_bar(stat = "identity", fill = "darkgray") +
facet_wrap(~ dist) +
labs(x = expression(theta), y = expression(p(theta)))
```
![](img/manicule2.jpg) ¿Cómo se ve la distribución posterior si tomamos una muestra de tamaño $90$ donde observamos la misma proporción de éxitos.
Realiza los cálculos y graficala como un panel adicional de la gráfica
anterior.
* ¿Cómo definirías la distribución inicial si no tuvieras conocimiento de los
artículos y expertos?
#### Evidencia {-}
Ahora, en el teorema de Bayes también encontramos el término $p(x)$ que
denominamos la __evidencia__, también se conoce como verosimilitud
marginal.
La evidencia es la probabilidad de los datos de acuerdo al modelo y se calcula
sumando a lo largo de todos los posibles valores de los parámetros y ponderando
por nuestra certidumbre en esos valores de los parámetros.
Es importante notar que hablamos de valores de los parámetros $\theta$
únicamente en el contexto de un modelo particular pues este el que da sentido a
los parámetros. Podemos hacer evidente el modelo en la notación,
$$p(\theta|x,M)=\frac{p(x|\theta,M)p(\theta|M)}{p(x|M)}$$
en este contexto la evidencia se define como:
$$p(x|M)=\int p(x|\theta,M)p(\theta|M)d\theta$$
La notación anterior es conveniente sobre todo cuando estamos considerando
más de un modelo y queremos usar los datos para determinar la certeza que
tenemos en cada modelo. Supongamos que tenemos dos modelos $M_1$ y $M_2$,
entonces podemos calcular el cociente de $p(M_1|x)$ y $p(M_2|x)$ obteniendo:
$$\frac{p(M_1|x)}{p(M_2|x)} = \frac{p(x|M_1) \cdot p(M_1)}{p(x|M_2)\cdot p(M_2)}$$
El cociente de evidencia $\frac{p(x|M_1)}{p(x|M_2)}$ se conoce como __factor de
Bayes__, y $p(M_i)$ describe nuestras creencias iniciales en cada modelo.
La evidencia y el factor de Bayes no son muy usados en la práctica pero los
vemos por su valor conceptual.
#### Invarianza en el orden de los datos {-}
Vimos que la regla de Bayes nos permite pasar del conocimiento inicial
$p(\theta)$ al posterior $p(\theta|x)$ conforme recopilamos datos. Supongamos
ahora que observamos
más datos, los denotamos $x'$, podemos volver a actualizar nuestras creencias
pasando de $p(\theta|x)$ a $p(\theta|x,x')$. Entonces podemos preguntarnos si
nuestro conocimiento posterior cambia si actualizamos de acuerdo a $x$ primero
y después $x'$ o vice-versa. La respuesta es que si $p(x|\theta)$ y
$p(x'|\theta)$ son _iid_ entonces el orden en que actualizamos nuestro
conocimiento no afecta la distribución posterior.
La **invarianza al orden** tiene sentido intuitivamente: Si la función de
verosimilitud no depende del tiempo o del ordenamineto de los datos, entonces
la posterior tampoco tiene porque depender del ordenamiento de los datos.
<!--
#### Pasos de un análisis de datos bayesiano
Como vimos en los ejemplos, en general un análisis de datos bayesiano sigue los
siguientes pasos:
1. Identificar los datos releventes a nuestra pregunta de investigación, el tipo
de datos que vamos a describir, que variables se van a predecir, que variables
2. Definir el modelo descriptivo para los datos. La forma matemática y los
parámetros deben ser apropiados para los objetivos del análisis.
3. Especificar la distribución inicial de los parámetros.
4. Utilizar inferencia bayesiana para reubicar la credibilidad a lo largo de
los posibles valores de los parámetros.
5. Verificar que la distribución posterior replique los datos de manera
razonable, de no ser el caso considerar otros modelos descriptivos para los datos.
En el caso de un volado, los datos consisten en águilas y soles, y para el
modelo descriptivo necesitamos una expresión del función de verosimilitud:
$p(x|\theta)=\theta^x(1-\theta)^{1-x}$
esto es, $x$ tiene una distribución $Bernoulli(\theta)$.
El siguiente paso es determinar la distribución inicial sobre el espacio de
parámetros, como ejemplo, supongamos que solo hay $3$ valores de $\theta$ que consideramos $\theat \in \{(0.25, 0.5, 0.75)\}$, y asignamos las probabilidades
$p(\theta = 0.25) = 0.25$, $p(\theta = 0.5) = 0.5$ y $p(\theta = 0.75) = 0.25$
```{r}
theta <- c(0.25, 0.5, 0.75)
prior <- tibble(theta, p = c(0.25, 0.5, 0.25))
```
El siguiente paso es recolectar los datos y utilizar la regla de Bayes para
reubicar nuestras creencias a lo largo de los posibles valores. Supongamos
que observamos un único volado y resulta en águila.
-->
```{r}
Like <- theta ^ 1 * (1 - theta) ^ (1 - 1)
product <- Like * prior
post <- product / sum(product)
post
```
### Objetivos de la inferencia {-}
Los tres objetivos de la inferencia son: estimación de parámetros, predicción
de valores y comparación de modelos.
1. La **estimación de parámetros** implica determinar hasta que punto creemos en
cada posible valor del parámetro. En estadística bayesiana la estimación se
realiza con la distribución posterior sobre los valores
de los parámetros $\theta$.
La siguiente gráfica ejemplifica un experimento Bernoulli, con dos posibles
iniciales, los datos observados son $N=20$ lanzamientos de moneda que resultan
en $12$ éxitos o águilas.
```{r, fig.height=2.8, fig.width=7.3, results="hold", echo = FALSE}
# Modelo 1, 3 posibles valores
p_M1 <- tibble(theta = c(0.25, 0.5, 0.75), prior = c(0.25, 0.5, 0.25),
modelo = "M1")
# Modelo 2, Creamos una inicial que puede tomar más valores
p <- seq(0, 24, 1)
p2 <- c(p, 24, sort(p, decreasing = TRUE))
p_M2 <- tibble(theta = seq(0, 1, 0.02), prior = p2 / sum(p2),
modelo = "M2")
N <- 20 # estudiantes
z <- 12 # éxitos
dists_h <- bind_rows(p_M1, p_M2) %>% # base de datos horizontal
group_by(modelo) %>%
mutate(
Like = theta ^ z * (1 - theta) ^ (N - z), # verosimilitud
posterior = (Like * prior) / sum(Like * prior)
)
dists <- dists_h %>% # base de datos larga
gather(dist, valor, prior, Like, posterior) %>%
mutate(dist = factor(dist, levels = c("prior", "Like", "posterior")))
ggplot(filter(dists, modelo == "M1"), aes(x = theta, y = valor)) +
geom_bar(stat = "identity", fill = "darkgray") +
facet_wrap(~ dist, scales = "free") +
scale_x_continuous(expression(theta), breaks = seq(0, 1, 0.2)) +
labs(y = "")
ggplot(filter(dists, modelo == "M2"), aes(x = theta, y = valor)) +
geom_bar(stat = "identity", fill = "darkgray") +
facet_wrap(~ dist, scales = "free") +
scale_x_continuous(expression(theta), breaks = seq(0, 1, 0.2)) +
labs(y = "")
```
2. **Predicción** de valores. Usando nuestro conocimiento actual nos interesa
predecir la probabilidad de datos futuros. La probabilidad predictiva de un
dato $\tilde{y}$ (no observado) se determina promediando las probabilidades predictivas
de los datos a lo largo de todos los posibles valores de los parámetros y
ponderados por la creencia en los valores de los parámetros. Cuando solo
contamos con nuestro conocimiento incial tendríamos:
$$p(\tilde{y}) =\int p(y|\theta)p(\theta)d\theta$$
Notese que la ecuación anterior coincide con la correspondiente a la evidencia,
con la diferencia de que la evidencia se refiere a un valor observado y en
esta ecuación estamos calculando la probabilidad de cualquier valor $y$.
Una vez que observamos datos tenemos la distribución predictiva posterior:
$$p(\tilde{y}|x) =\int p(y|\theta)p(\theta|x)d\theta$$
Por ejemplo podemos usar las creencias iniciales del modelo $1$, que propusimos
arriba para calcular la probabilidad predictiva de observar águila:
$$p(y=S) = \sum_{\theta}p(y=A|\theta)p(\theta) = 0.5$$
Vale la pena destacar que las prediciones son probabilidades de cada posible
valor condicional a nuestro modelo de creencias actuales. Si nos interesa
predecir un valor particular en lugar de una distribución a lo largo de todos
los posibles valores podemos usar la media de la distribución predictiva. Por
tanto el valor a predecir sería:
$$p(y)=\int y p(y) dy$$
La integral anterior únicamente tiene sentido si $y$ es una variable continua.
Si $y$ es nominal, como el resultado de un volado, entonces podemos usar el
valor más probable.
<!--
![](img/manicule2.jpg) Calcula las probabilidades predictivas usando
la distribución posterior de cada modelo. ¿Cuál sería tu predicción?
-->
```{r, echo=FALSE, eval=FALSE}
dists_h %>%
group_by(modelo) %>%
summarise(A = sum(theta * posterior))
dists_h %>%
group_by(modelo) %>%
summarise(A = sum(theta * prior))
```
3. **Comparación de modelos**, cuando comparamos modelos usando el factor de
Bayes, una caracterítica conveniente en estadística bayesiana es que la
complejidad del modelo se toma en cuenta de manera automática.
Recordemos los dos modelos discretos, en el primero supusimos que el parámetro
$\theta$ únicamente puede tomar uno de $3$ valores $(0.25, 0.5, 0.75)$, esta
restricción dió lugar a un modelo simple. Por su parte, el modelo $2$ es más
complejo y permite muchos más valores de $\theta$ ($51$). La forma de la
distribución inicial es triangular en ambos casos y el valor de mayor
probabilidad inicial es $\theta = 0.50$ y reflejamos que creemos que es menos
factible que el valor se encuentre en los extremos.
Podemos calcular el factor de Bayes para distintos datos observados:
```{r}
# Modelo 1, 3 posibles valores
p_M1 <- tibble(theta = c(0.25, 0.5, 0.75), prior = c(0.25, 0.5, 0.25),
modelo = "M1")
# Modelo 2, Creamos una inicial que puede tomar más valores
p <- seq(0, 24, 1)
p2 <- c(p, 24, sort(p, decreasing = TRUE))
p_M2 <- tibble(theta = seq(0, 1, 0.02), prior = p2 / sum(p2),
modelo = "M2")
N <- 20 # estudiantes
z <- 12 # éxitos
dists_h <- bind_rows(p_M1, p_M2) %>% # base de datos horizontal
group_by(modelo) %>%
mutate(
Like = theta ^ z * (1 - theta) ^ (N - z), # verosimilitud
posterior = (Like * prior) / sum(Like * prior)
)
dists <- dists_h %>% # base de datos larga
gather(dist, valor, prior, Like, posterior) %>%
mutate(dist = factor(dist, levels = c("prior", "Like", "posterior")))
factorBayes <- function(N, z){
evidencia <- bind_rows(p_M1, p_M2) %>% # base de datos horizontal
group_by(modelo) %>%
mutate(
Like = theta ^ z * (1 - theta) ^ (N - z), # verosimilitud
posterior = (Like * prior) / sum(Like * prior)
) %>%
summarise(evidencia = sum(prior * Like))
print(evidencia)
return(evidencia[1, 2] / evidencia[2, 2])
}
factorBayes(50, 25)
factorBayes(100, 75)
factorBayes(100, 10)
factorBayes(40, 38)
```
¿Cómo explicarías los resultados anteriores?
<!-- $\theta$
puede tomar más valores, entonces si en una sucesión de volados observamos
$10\%$ de águilas, el modelo simple no cuenta con un valor de $\theta$ cercano al
resultado observado, pero el modelo complejo si. Por otra parte, para valores
de $\theta$ que se encuentran en ambos modelos la probabilidad inicial de esos
valores es mayor en el caso del modelo simple. Por lo tanto si los datos
observados resultan en valores de $\theta$ congruentes con el modelo simple,
creeríamos en el modelo simple más que en el modelo más complicado.
-->
La evidencia de un modelo $p(x|M)$ no dice mucho por si misma, es más
relevante en el contexto del **factor de Bayes** (la evidencia relativa de dos
modelos). Es importante recordar que la comparación de modelos nos habla
únicamente de la evidencia relativa de un modelo; sin embargo, puede que
ninguno de los modelos que estamos considerando sean adecuados para nuestros
datos, por lo que más adelante **estudiaremos otras maneras de evaluar un
modelo**.
### Cálculo de la distribución posterior {-}
En la inferencia Bayesiana se requiere calcular el denominador de la fórmula
de Bayes $p(x)$, es común que esto requiera que se calcule una integral
complicada; sin embargo, hay algunas maneras de evitar esto,
1. El camino tradicional consiste en usar funciones de verosimilitud con
dsitribuciones iniciales conjugadas. Cuando una distribución inicial es
conjugada de la verosimilitud resulta en una distribución posterior con la
misma forma funcional que la distribución inicial.
2. Otra alternativa es aproximar la integral numericamente. Cuando el espacio de
parámetros es de dimensión chica, se puede cubrir con una cuadrícula de
puntos y la integral se puede calcular sumando a través de dicha cuadrícula.
Sin embargo cuando el espacio de parámetros aumenta de dimensión el número de
puntos necesarios para la aproximación crece demasiado y hay que recurrir a otas
técnicas.
3. Se ha desarrollado una clase de métodos de simulación para poder calcular
la distribución posterior, estos se conocen como cadenas de Markov via Monte
Carlo (MCMC por sus siglas en inglés). El desarrollo de los métodos MCMC es lo
que ha propiciado el desarrollo de la estadística bayesiana en años recientes.
## Distribuciones conjugadas
### Ejemplo: Bernoulli {-}
Comenzaremos con el modelo Beta-Binomial. Recordemos que si $X$ en un
experimento con dos posibles resultados, $X$ se distribuye Bernoulli y la
función de probabilidad esta definida por:
$$p(x|\theta)=\theta^x(1-\theta)^{1-x}$$
si lanzamos una moneda $N$ veces tenemos un conjunto de datos
$\{x_1,...,x_N\}$, suponemos que los lanzamientos son independientes por lo
que la probabilidad de observar el conjunto de $N$ lanzamientos es el
producto de las probabilidades para cada observación:
$$p(x_1,...,x_N|\theta) = \prod_{n=1}^N p(x_n|\theta)$$
$$= \theta^z(1 - \theta)^{N-z}$$
donde $z$ denota el número de éxitos (águilas).
Ahora,
* en principio para describir nuestras creencias iniciales podríamos usar
cualquier función de densidad con soporte en $[0, 1]$,
* sin embargo, sería conveniente que el producto $p(x|\theta)p(\theta)$ (el numerador de la fórmula de Bayes) resulte en una función con la misma forma que
$p(\theta)$.
* Cuando este es el caso, las creencias inicial y posterior se describen con la
misma distribución.
* Esto es conveninte pues si obtenemos nueva información podemos actualizar
nuestro conocimiento de manera inmediata, conservando la forma de las
distribuciones.
<div class="caja">
Cuando las funciones $p(x|\theta)$ y $p(\theta)$ se combinan de tal manera
que la distribución posterior pertenece a la misma familia (tiene la misma
forma) que la distribución inicial, entonces decimos que $p(\theta)$ es
**conjugada** para $p(x|\theta)$.
</div>
Vale la pena notar que la inicial es conjugada únicamente respecto a una
función de verosimilitud particular.
Una distribución conjugada para $p(x|\theta) = \theta^z(1 - \theta)^{N-z}$ es
una $Beta(a, b)$
$$p(\theta) = \frac {\theta^{a-1}(1-\theta)^{b-1}}{B(a,b)}$$
Para describir nuestro conocimiento inicial podemos explorar la media y
desviación estándar de la distribución beta, la media es
$$\bar{\theta} = a/(a+b)$$
por lo que si $a=b$ la media es $0.5$ y conforme
aumenta $a$ en relación a $b$ aumenta la media. La desviación estándar es
$$\sqrt{\bar{\theta}(1-\bar{\theta})/(a+b+1)}$$
Una manera de seleccionar los parámetros $a$ y $b$ es pensar en la
proporción media de águilas ($m$) y el tamaño de muestra ($n$). Ahora, $m=a/(a+b)$
y $n = a+b$, obteniendo.
$$a=mn, b=(1-m)n$$
Otra manera es comenzar con la media y la desviación estándar. Al usar este
enfoque debemos recordar que la desviación estándar debe tener sentido en el
contexto de la densidad beta. En particular la desviación estándar típicamente
es menor a $0.289$ que corresponde a la desviación estándar de una uniforme.
Entonces, para una densidad beta con media $m$ y desviación estándar $s$, los
parámetros son:
$$a=m\bigg(\frac{m(1-m)}{s^2}- 1\bigg), b=(1-m)\bigg(\frac{m(1-m)}{s^2}- 1\bigg)$$
Una vez que hemos determinado una inicial conveniente para la verosimilitud
Bernoulli, veamos la posterior. Supongamos que observamos $N$ lanzamientos de
los cuales $z$ son águilas, entonces podemos ver que la posterior es nuevamente
una densidad Beta.
$$p(\theta|z)\propto \theta^{a+z-1}(1 -\theta)^{(N-z+b)-1}$$
Concluímos entonces que si la distribución inicial es $Beta(a,b),$ la posterior
es $Beta(z+a,N-z+b).$
Vale la pena explorar la relación entre la distribución inicial y posterior en
las medias. La media incial es
$$a/(a+b)$$
y la media posterior es
$$(z+a)/[(z+a) + (N-z+b)]=(z+a)/(N+a+b)$$
podemos hacer algunas manipulaciones algebráicas para escribirla como:
$$\frac{z+a}{N+a+b}=\frac{z}{N}\frac{N}{N+a+b} + \frac{a}{a+b}\frac{a+b}{N+a+b}$$
es decir, podemos escribir la media posterior como un promedio ponderado entre
la media inicial $a/(a+b)$ y la proporción observada $z/N$.
Ahora podemos pasar a la inferencia, comencemos con estimación de la proporción
$\theta$. La distribución posterior resume todo nuestro conocimiento del
parámetro $\theta$, en este caso podemos graficar la distribución y extraer
valores numéricos como la media.
```{r, fig.height=3, fig.width=6}
library(gridExtra)
N = 14; z = 11; a = 1; b = 1
base <- ggplot(tibble(x = c(0, 1)), aes(x))
p1 <- base +
stat_function(fun = dbeta, args = list(shape1 = a, shape2 = b),
aes(colour = "inicial"), show.legend = FALSE) +
stat_function(fun = dbeta, args = list(shape1 = z + 1, shape2 = N - z + 1),
aes(colour = "verosimilitud"), show.legend = FALSE) +
stat_function(fun = dbeta, args = list(shape1 = a + z, shape2 = N - z + b),
aes(colour = "posterior"), show.legend = FALSE) +
labs(y = "", colour = "", x = expression(theta))
N = 14; z = 11; a = 100; b = 100
p2 <- base +
stat_function(fun = dbeta, args = list(shape1 = a, shape2 = b),
aes(colour = "inicial")) +
stat_function(fun = dbeta, args = list(shape1 = z + 1, shape2 = N - z + 1),
aes(colour = "verosimilitud")) +
stat_function(fun = dbeta, args = list(shape1 = a + z, shape2 = N - z + b),
aes(colour = "posterior")) +
labs(y = "", colour = "", x = expression(theta))
grid.arrange(p1, p2, nrow = 1, widths = c(0.38, 0.62))
```
```{r shiny_bernoulli}
knitr::include_app("https://tereom.shinyapps.io/app_bernoulli/",
height = "1000px")
```
Una manera de resumir la distribución posterior es a través de intervalos de
probabilidad, otro uso de los intervalos es establecer que valores del parámetro
son creíbles.
![](img/manicule2.jpg) Calcula un intervalo del $95\%$ de probabilidad para
cada una de las distribuciones posteriores del ejemplo.
```{r, echo=FALSE, eval=FALSE}
qbeta(c(0.025, 0.975), shape1 = 12, shape2 = 4)
qbeta(c(0.025, 0.975), shape1 = 111, shape2 = 103)
```
Ahora pasemos a predicción, calculamos la probabilidad de $y =1$:
$$p(y = 1) = \int p(y=1|\theta)p(\theta|z)d\theta$$
$$=\int \theta p(\theta|z,N) d\theta$$
$$=(z+a)/(N+a+b)$$
Esto es, la probabilidad predictiva de águila es la media de la distribución
posterior sobre $\theta$.
Finalmente, comparemos modelos. Para esto calculamos la evidencia $p(x|M)$
para cada modelo:
$$p(x|M)=\int p(x|\theta,M)p(\theta|M)d\theta$$
en este caso los datos están dados por $z$ y $N$, en el caso de la incial beta
es fácil calcular la evidencia:
$$p(z)=B(z+a,N-z+b)/B(a,b)$$
En nuestro ejemplo, una inicial tuiene un pico en $0.5$ mientras que la otra es
uniforme. Por otra parte, la proporción de $1$ observados en la muestra no es
cercana a $0.5$ por lo que la inicial picuda no captura los datos muy bien.
```{r}
# N = 14, z = 11, a = 1, b = 1
beta(12, 4) / beta(1, 1)
# N = 14, z = 12, a = 100, b = 100
beta(126, 126) / beta(100, 100)
```
Supongamos que observamos una secuencia en la que la mitad de los volados
resultan en águila:
```{r}
# N = 14, z = 7, a = 1, b = 1
beta(8, 8) / beta(1, 1)
# N = 14, z = 7, a = 100, b = 100
beta(107, 107) / beta(100, 100)
```
En general, preferimos un modelo con un valor mayor de $p(x|\theta)$ pero la
preferencia no es absoluta, una diferencia chica no nos dice mucho. Debemos
considerar que los datos no son mas que una muestra aleatoria.
![](img/manicule2.jpg) Supongamos que nos interesa analizar el IQ de una
muestra de estudiantes del
ITAM y suponemos que el IQ de un estudiante tiene una distribución normal
$x \sim N(\theta, \sigma^2)$ con $\sigma ^ 2$ conocida.
Considera que observamos el IQ de un estudiante $x$.
La verosimilitud del modelo es:
$$p(x|\theta)=\frac{1}{\sqrt{2\pi\sigma^2}}exp\left(-\frac{1}{2\sigma^2}(x-\theta)^2\right)$$
Realizaremos un análisis bayesiano por lo que hace falta establer una
distribución inicial, elegimos $p(\theta)$ que se distribuya $N(\mu, \tau^2)$
donde elegimos los parámetros $\mu, \tau$ que mejor describan nuestras creencias
iniciales.
Calcula la distribución posterior $p(\theta|x) \propto p(x|\theta)p(\theta)$,
usando la inicial y verosimilitud que definimos arriba. Una vez que realices la
multiplicación debes identificar el núcleo de una distribución Normal,
¿cuáles son sus parámetros (media y varianza)?
## Aproximación por cuadrícula
Supongamos que la distribución beta no describe nuestras creencias de manera
adecuada. Por ejemplo, mis creencias podrían estar mejor representadas por una
distribución trimodal: la moneda esta fuertemente sesgada hacia sol,
fuertemente sesgada hacia águila o es justa. No hay parámetros en una beta
que puedan describir este patrón.
Exploraremos entonces una técnica de aproximación numérica de la distribución
posterior que consiste en definir la distribución inicial en una cuadrícula
de valores de $\theta$. En este método no necesitamos describir nuestras
creencias mediante una función matemática ni realizar integración analítica.
Suponemos que existe únicamente un número finito de valores de $\theta$ que
creemos que pueden ocurrir (el primer ejemplo que estudiamos usamos esta
técnica). Es así que la regla de Bayes se escribe como:
$$p(x|\theta)=\frac{p(x|\theta)p(\theta)}{\sum_{\theta}p(x|\theta)p(\theta)}$$
Entonces, si podemos discretizar una distribución inicial continua mediante una
cuadrícula de masas de probabilidad discreta podemos usar la versión discreta
de la regla de Bayes. El proceso consiste en dividir el dominio en regiones,
crear un rectángulo con la altura correspondiente al valor de la densidad en
el punto medio. Aproximamos el área de cada región mediante la altura del
rectángulo.
```{r, fig.height=3, fig.width=7.5}
# N = 14, z = 11, a = 1, b = 1
N = 14; z = 11
inicial <- data.frame(theta = seq(0.05, 1, 0.05), inicial = rep(1/20, 20))
dists_h <- inicial %>%
mutate(
verosimilitud = theta ^ z * (1 - theta) ^ (N - z), # verosimilitud
posterior = (verosimilitud * inicial) / sum(verosimilitud * inicial)
)
dists <- dists_h %>% # base de datos larga
gather(dist, valor, inicial, verosimilitud, posterior) %>%
mutate(dist = factor(dist, levels = c("inicial", "verosimilitud", "posterior")))
ggplot(dists, aes(x = theta, y = valor)) +
geom_point() +
facet_wrap(~ dist, scales = "free") +
scale_x_continuous(expression(theta), breaks = seq(0, 1, 0.2)) +
labs(y = "")
```
y lo podemos comparar con la versión continua (distribución beta).
```{r, echo=FALSE, fig.height=3, fig.width=7.5}
plot1 <- base +
stat_function(fun = dbeta, args = list(shape1 = 1, shape2 = 1)) + # inicial
labs(x = "", y = "", title = "inicial")
plot2 <- base +
stat_function(fun = dbeta, args = list(shape1 = 12, shape2 = 4)) + # verosimilitud
labs(x = expression(theta), y = "", title = "verosimilitud")
plot3 <- base +
stat_function(fun = dbeta, args = list(shape1 = 12, shape2 = 4)) + # posterior
labs(x = "", y = "", title = "posterior")
grid.arrange(plot1, plot2, plot3, ncol = 3)
```
En cuanto a la estimación, la tabla de probabilidades nos da una estimación
para los valores de los parámetros. Podemos calcular la media de $\theta$
como el promedio ponderado por las probabilidades:
$\bar{\theta}=\sum_{\theta} \theta p(\theta|x)$
```{r}
head(dists_h)
sum(dists_h$posterior * dists_h$theta)
```
Ahora para intervalos de probabilidad, debido a que estamos usando masas
discretas, la suma de las masas en un intervalo usualmente no será igual
a $95\%$ y por tanto elegimos los puntos tales que la masa sea mayor a igual
a $95\%$ y la masa total sea lo menor posible, en nuestro ejemplo podemos usar
cuantiles.
```{r}
dist_cum <- cumsum(dists_h$posterior) #vector de distribución acumulada
lb <- which.min(dist_cum < 0.05) - 1
ub <- which.min(dist_cum < 0.975)
dists_h$theta[lb]
dists_h$theta[ub]
```
Para el problema de predicción, la probabilidad predictiva para el
siguiente valor $y$ es simplemente la probabilidad de que ocurra dicho valor
ponderado por la probabilidad posterior correspondiente:
$$p(y|x)=\int p(y|\theta)p(\theta|x)d\theta$$
$$\approx \sum_{\theta} p(y|\theta)p(\theta|x)$$
![](img/manicule2.jpg) Calcula la probabilidad predictiva para $y=1$
usando los datos del ejemplo.
Finalmente, para la comparación de modelos la integral que define la evidencia
$$p(x|M)=\int p(x|\theta,M)p(\theta|M)d\theta$$
se convierte en una suma
$$p(x|M)\approx \sum_{\theta} p(x|\theta,M)p(\theta|M)d\theta$$
```{r}
# calcula el factor de Bayes para el experimento Bernoulli Modelos M1 y M2
factorBayes <- function(M, s){
evidencia <- rbind(p_M1, p_M2) %>% # base de datos horizontal
group_by(modelo) %>%
mutate(
Like = theta ^ s * (1 - theta) ^ (M - s), # verosimilitud
posterior = (Like * prior) / sum(Like * prior)
) %>%
summarise(evidencia = sum(prior * Like))
print(evidencia)
return(evidencia[1, 2] / evidencia[2, 2])
}
factorBayes(50, 25)
```
## MCMC
Hay ocasiones en las que los métodos de inicial conjugada y aproximación por
cuadrícula no funcionan, hay casos en los que la distribución beta no describe
nuestras creencias iniciales. Por su parte, la aproximación por cuadrícula no es
factible cuando tenemos varios parámetros. Es por ello que surge la necesidad de
utilizar métodos de Monte Carlo vía Cadenas de Markov (MCMC).
### Introducción Metrópolis {-}
Para usar Metrópolis debemos poder calcular $p(\theta)$ para un valor
particular de $\theta$ y el valor de la verosimilitud $p(x|\theta)$ para
cualquier $x$, $\theta$ dados. En realidad, el método únicamente requiere que
se pueda calcular el producto de la inicial y la verosimilitud, y sólo
hasta una constante de proporcionalidad. Lo que el método produce es una
aproximación de la distribución posterior $p(\theta|x)$ mediante una
muestra de valores $\theta$ obtenido de dicha distribución.
**Caminata aleatoria**. Con el fin de entender el algoritmo comenzaremos
estudiando el concepto de caminata aleatoria. Supongamos que un vendedor de
*yakult* trabaja a lo largo de una cadena de islas:
* constantemente viaja entre las islas ofreciendo sus productos,
* al final de un día de trabajo decide si permanece en la misma isla o se
transporta a una de las $2$ islas vecinas.
* El vendedor ignora la distribución de la población en las islas y el número
total de islas; sin embargo,
una vez que se encuentra en una isla puede investigar la población de la misma y
también de la isla a la que se propone viajar después.
* El objetivo del vendedor es visitar las islas de manera proporcional a la
población de cada una. Con esto en mente el vendedor utiliza el siguiente
proceso:
1) Lanza un volado, si el resultado es águila se propone ir a la isla
del lado izquierdo de su ubicación actual y si es sol a la del lado derecho.
2) Si la isla propuesta en el paso anterior tiene población mayor a la
población de la isla actual, el vendedor decide viajar a ella. Si la isla vecina
tiene población menor, entonces visita la isla propuesta con una probabilidad que
depende de la población de las islas. Sea $P_{prop}$ la población de la isla
propuesta y $P_{actual}$ la población de la isla actual. Entonces el vendedor
cambia de isla con probabilidad
$$p_{mover}=P_{prop}/P_{actual}$$