@@ -786,18 +786,12 @@ def dist(cls, sigma=None, tau=None, sd=None, *args, **kwargs):
786
786
787
787
tau , sigma = get_tau_sigma (tau = tau , sigma = sigma )
788
788
789
- # sigma = sd = sigma = aet.as_tensor_variable(sigma)
790
- # tau = tau = aet.as_tensor_variable(tau)
791
-
792
- # mean = aet.sqrt(2 / (np.pi * tau))
793
- # variance = (1.0 - 2 / np.pi) / tau
794
-
795
789
assert_negative_support (tau , "tau" , "HalfNormal" )
796
790
assert_negative_support (sigma , "sigma" , "HalfNormal" )
797
791
798
- return super ().dist ([sigma , tau ], ** kwargs )
792
+ return super ().dist ([0.0 , sigma ], ** kwargs )
799
793
800
- def logp (value , sigma , tau ):
794
+ def logp (value , loc , sigma ):
801
795
"""
802
796
Calculate log-probability of HalfNormal distribution at specified value.
803
797
@@ -811,14 +805,16 @@ def logp(value, sigma, tau):
811
805
-------
812
806
TensorVariable
813
807
"""
808
+ tau , sigma = get_tau_sigma (tau = None , sigma = sigma )
809
+
814
810
return bound (
815
- - 0.5 * tau * value ** 2 + 0.5 * aet .log (tau * 2.0 / np .pi ),
816
- value >= 0 ,
811
+ - 0.5 * tau * ( value - loc ) ** 2 + 0.5 * aet .log (tau * 2.0 / np .pi ),
812
+ value >= loc ,
817
813
tau > 0 ,
818
814
sigma > 0 ,
819
815
)
820
816
821
- def logcdf (value , sigma , tau ):
817
+ def logcdf (value , loc , sigma ):
822
818
"""
823
819
Compute the log of the cumulative distribution function for HalfNormal distribution
824
820
at the specified value.
@@ -833,10 +829,10 @@ def logcdf(value, sigma, tau):
833
829
-------
834
830
TensorVariable
835
831
"""
836
- z = zvalue (value , mu = 0 , sigma = sigma )
832
+ z = zvalue (value , mu = loc , sigma = sigma )
837
833
return bound (
838
834
aet .log1p (- aet .erfc (z / aet .sqrt (2.0 ))),
839
- 0 <= value ,
835
+ loc <= value ,
840
836
0 < sigma ,
841
837
)
842
838
0 commit comments