Kernel: Python 3
Changepoint Detection
Think Bayes, Second Edition
Copyright 2020 Allen B. Downey
License: Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)
In [1]:
In [488]:
In [489]:
In [490]:
In [491]:
Out[491]:
array([3, 5, 6, 4, 1, 5, 3, 6, 4, 2, 4, 1, 7, 1, 6, 6, 3, 3, 3, 4, 2, 5,
5, 0, 5, 9, 4, 4, 4, 2])
In [492]:
Out[492]:
array([6, 1, 0, 0, 1, 1, 0, 0, 2, 3, 0, 0, 1, 3, 1, 1, 3, 2, 1, 1, 1, 2,
2, 2, 2, 2, 4, 4, 3, 1])
In [493]:
In [494]:
In [495]:
In [496]:
In [497]:
Out[497]:
[<matplotlib.lines.Line2D at 0x7f05d93646d0>]
In [498]:
Out[498]:
(2.800000000617144, 2.8000000006171466)
In [499]:
Out[499]:
array([0.19536681, 0.15629345, 0.10419563, 0.19536681, 0.07326256,
0.15629345, 0.19536681, 0.10419563, 0.19536681, 0.14652511,
0.19536681, 0.07326256, 0.05954036, 0.07326256, 0.10419563,
0.10419563, 0.19536681, 0.19536681, 0.19536681, 0.19536681,
0.14652511, 0.15629345, 0.15629345, 0.01831564, 0.15629345,
0.01323119, 0.19536681, 0.19536681, 0.19536681, 0.14652511])
In [500]:
Out[500]:
array([0.0120298 , 0.27067057, 0.13533528, 0.13533528, 0.27067057,
0.27067057, 0.13533528, 0.13533528, 0.27067057, 0.18044704,
0.13533528, 0.13533528, 0.27067057, 0.18044704, 0.27067057,
0.27067057, 0.18044704, 0.27067057, 0.27067057, 0.27067057,
0.27067057, 0.27067057, 0.27067057, 0.27067057, 0.27067057,
0.27067057, 0.09022352, 0.09022352, 0.18044704, 0.27067057])
In [636]:
In [637]:
In [638]:
Out[638]:
1.3904825453454708e-06
In [ ]:
In [639]:
In [640]:
Out[640]:
27 7
[27 24 19 13 9 8 3]
[3 5 6 4 1 5 3]
[2.9250e+03 4.2504e+04 2.7132e+04 7.1500e+02 9.0000e+00 5.6000e+01
1.0000e+00]
0.24022923713083533
In [633]:
In [634]:
Out[634]:
24 6
[24 21 16 10 6 5]
[3 5 6 4 1 5]
[2.0240e+03 2.0349e+04 8.0080e+03 2.1000e+02 6.0000e+00 1.0000e+00]
7.117291371491338e-06
In [635]:
Out[635]:
1.000000000000008
In [580]:
In [84]:
In [85]:
In [86]:
In [87]:
Out[87]:
Likelihood
In [88]:
Out[88]:
range(1, 60)
In [89]:
Out[89]:
array([ 0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. ,
2.2, 2.4, 2.6, 2.8, 3. , 3.2, 3.4, 3.6, 3.8, 4. , 4.2,
4.4, 4.6, 4.8, 5. , 5.2, 5.4, 5.6, 5.8, 6. , 6.2, 6.4,
6.6, 6.8, 7. , 7.2, 7.4, 7.6, 7.8, 8. , 8.2, 8.4, 8.6,
8.8, 9. , 9.2, 9.4, 9.6, 9.8, 10. ])
In [90]:
Out[90]:
(51, 59)
In [91]:
Out[91]:
(59,)
In [92]:
Out[92]:
(51, 59)
In [93]:
Out[93]:
array([59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43,
42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26,
25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9,
8, 7, 6, 5, 4, 3, 2, 1])
In [94]:
Out[94]:
(41, 59)
In [31]:
Out[31]:
(59,)
In [96]:
Out[96]:
(41, 59)
In [97]:
Out[97]:
(59, 51, 41)
In [98]:
Out[98]:
(123369,)
In [99]:
Out[99]:
2.820090395696955e-54
In [100]:
Out[100]:
In [101]:
Out[101]:
<AxesSubplot:>
In [102]:
Out[102]:
<AxesSubplot:>
Doing it the long way
In [103]:
Out[103]:
In [104]:
Out[104]:
In [105]:
Out[105]:
(51,)
In [106]:
Out[106]:
(30, 51)
In [107]:
Out[107]:
(51,)
In [108]:
Out[108]:
(41,)
In [109]:
Out[109]:
(30, 41)
In [110]:
Out[110]:
(41,)
In [111]:
Out[111]:
(41, 51)
In [ ]:
In [112]:
In [113]:
Out[113]:
0.0 0.0 0.000000e+00
0.2 0.000000e+00
0.4 0.000000e+00
0.6 0.000000e+00
0.8 0.000000e+00
...
10.0 9.2 3.826541e-140
9.4 1.656773e-141
9.6 6.754070e-143
9.8 2.598919e-144
10.0 9.461451e-146
Name: 30, Length: 2091, dtype: float64
In [114]:
Out[114]:
In [115]:
In [116]:
In [117]:
In [118]:
Out[118]:
In [119]:
Out[119]:
<AxesSubplot:>
In [56]:
Out[56]:
<AxesSubplot:>
Using emcee
In [57]:
In [58]:
Out[58]:
3.1.0
In [59]:
In [60]:
Out[60]:
Requirement already satisfied: tdqm in /home/downey/anaconda3/envs/ThinkBayes2/lib/python3.8/site-packages (0.0.1)
Requirement already satisfied: tqdm in /home/downey/anaconda3/envs/ThinkBayes2/lib/python3.8/site-packages (from tdqm) (4.62.1)
In [75]:
In [76]:
In [77]:
In [78]:
Out[78]:
100%|██████████| 2500/2500 [00:18<00:00, 132.76it/s]
In [79]:
Out[79]:
(8000, 3)
In [80]:
Out[80]:
In [ ]:
In [67]:
Out[67]:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-67-4f76a9dad686> in <module>
----> 1 stop
NameError: name 'stop' is not defined
Based on an example from Chapter 1 of Bayesian Methods for Hackers
and this example from Computational Statistics in Python
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]: