forked from pymc-devs/pymc-examples
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlightspeed_example.py
99 lines (89 loc) · 1.51 KB
/
lightspeed_example.py
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
import numpy as np
import arviz as az
import pymc3 as pm
light_speed = np.array(
[
28,
26,
33,
24,
34,
-44,
27,
16,
40,
-2,
29,
22,
24,
21,
25,
30,
23,
29,
31,
19,
24,
20,
36,
32,
36,
28,
25,
21,
28,
29,
37,
25,
28,
26,
30,
32,
36,
26,
30,
22,
36,
23,
27,
27,
28,
27,
31,
27,
26,
33,
26,
32,
32,
24,
39,
28,
24,
25,
32,
25,
29,
27,
28,
29,
16,
23,
]
)
model_1 = pm.Model()
with model_1:
# priors as specified in stan model
# mu = pm.Uniform('mu', lower = -tt.inf, upper= np.inf)
# sigma = pm.Uniform('sigma', lower = 0, upper= np.inf)
# using vague priors works
mu = pm.Uniform("mu", lower=light_speed.std() / 1000.0, upper=light_speed.std() * 1000.0)
sigma = pm.Uniform("sigma", lower=light_speed.std() / 1000.0, upper=light_speed.std() * 1000.0)
# define likelihood
y_obs = pm.Normal("Y_obs", mu=mu, sigma=sigma, observed=light_speed)
def run(n=5000):
with model_1:
trace = pm.sample(n)
az.summary(trace)
if __name__ == "__main__":
run()