2
2
from theano import scan
3
3
4
4
from pymc3 .util import get_variable_name
5
+ from .continuous import get_tau_sd , Normal , Flat
5
6
from . import multivariate
6
- from . import continuous
7
7
from . import distribution
8
8
9
9
__all__ = [
@@ -41,9 +41,9 @@ def logp(self, x):
41
41
42
42
x_im1 = x [:- 1 ]
43
43
x_i = x [1 :]
44
- boundary = continuous . Normal .dist (0 , tau_e ).logp
44
+ boundary = Normal .dist (0. , tau = tau_e ).logp
45
45
46
- innov_like = continuous . Normal .dist (k * x_im1 , tau_e ).logp (x_i )
46
+ innov_like = Normal .dist (k * x_im1 , tau = tau_e ).logp (x_i )
47
47
return boundary (x [0 ]) + tt .sum (innov_like ) + boundary (x [- 1 ])
48
48
49
49
def _repr_latex_ (self , name = None , dist = None ):
@@ -72,9 +72,10 @@ class GaussianRandomWalk(distribution.Continuous):
72
72
distribution for initial value (Defaults to Flat())
73
73
"""
74
74
75
- def __init__ (self , tau = None , init = continuous . Flat .dist (), sd = None , mu = 0. ,
75
+ def __init__ (self , tau = None , init = Flat .dist (), sd = None , mu = 0. ,
76
76
* args , ** kwargs ):
77
77
super (GaussianRandomWalk , self ).__init__ (* args , ** kwargs )
78
+ tau , sd = get_tau_sd (tau = tau , sd = sd )
78
79
self .tau = tau = tt .as_tensor_variable (tau )
79
80
self .sd = sd = tt .as_tensor_variable (sd )
80
81
self .mu = mu = tt .as_tensor_variable (mu )
@@ -90,7 +91,7 @@ def logp(self, x):
90
91
x_im1 = x [:- 1 ]
91
92
x_i = x [1 :]
92
93
93
- innov_like = continuous . Normal .dist (mu = x_im1 + mu , tau = tau , sd = sd ).logp (x_i )
94
+ innov_like = Normal .dist (mu = x_im1 + mu , sd = sd ).logp (x_i )
94
95
return init .logp (x [0 ]) + tt .sum (innov_like )
95
96
96
97
def _repr_latex_ (self , name = None , dist = None ):
@@ -125,8 +126,8 @@ class GARCH11(distribution.Continuous):
125
126
initial_vol >= 0, distribution for initial volatility, sigma_0
126
127
"""
127
128
128
- def __init__ (self , omega = None , alpha_1 = None , beta_1 = None ,
129
- initial_vol = None , * args , ** kwargs ):
129
+ def __init__ (self , omega , alpha_1 , beta_1 ,
130
+ initial_vol , * args , ** kwargs ):
130
131
super (GARCH11 , self ).__init__ (* args , ** kwargs )
131
132
132
133
self .omega = omega = tt .as_tensor_variable (omega )
@@ -150,7 +151,7 @@ def volatility_update(x, vol, w, a, b):
150
151
151
152
def logp (self , x ):
152
153
vol = self .get_volatility (x )
153
- return tt .sum (continuous . Normal .dist (0 , sd = vol ).logp (x ))
154
+ return tt .sum (Normal .dist (0. , sd = vol ).logp (x ))
154
155
155
156
def _repr_latex_ (self , name = None , dist = None ):
156
157
if dist is None :
@@ -188,7 +189,7 @@ def logp(self, x):
188
189
f , g = self .sde_fn (x [:- 1 ], * self .sde_pars )
189
190
mu = xt + self .dt * f
190
191
sd = tt .sqrt (self .dt ) * g
191
- return tt .sum (continuous . Normal .dist (mu = mu , sd = sd ).logp (x [1 :]))
192
+ return tt .sum (Normal .dist (mu = mu , sd = sd ).logp (x [1 :]))
192
193
193
194
def _repr_latex_ (self , name = None , dist = None ):
194
195
if dist is None :
@@ -211,7 +212,7 @@ class MvGaussianRandomWalk(distribution.Continuous):
211
212
init : distribution
212
213
distribution for initial value (Defaults to Flat())
213
214
"""
214
- def __init__ (self , mu = 0. , cov = None , init = continuous . Flat .dist (),
215
+ def __init__ (self , mu = 0. , cov = None , init = Flat .dist (),
215
216
* args , ** kwargs ):
216
217
super (MvGaussianRandomWalk , self ).__init__ (* args , ** kwargs )
217
218
if cov is None :
@@ -260,7 +261,7 @@ class MvStudentTRandomWalk(distribution.Continuous):
260
261
init : distribution
261
262
distribution for initial value (Defaults to Flat())
262
263
"""
263
- def __init__ (self , nu , mu = 0. , cov = None , init = continuous . Flat .dist (),
264
+ def __init__ (self , nu , mu = 0. , cov = None , init = Flat .dist (),
264
265
* args , ** kwargs ):
265
266
super (MvStudentTRandomWalk , self ).__init__ (* args , ** kwargs )
266
267
self .mu = mu = tt .as_tensor_variable (mu )
0 commit comments