@@ -48,20 +48,20 @@ quantile_bisect(d::ContinuousUnivariateDistribution, p::Real) =
48
48
# http://www.statsci.org/smyth/pubs/qinvgaussPreprint.pdf
49
49
50
50
function newton (f, xs:: T = mode (d), tol:: Real = 1e-12 ) where {T}
51
- x = xs + f (xs)
51
+ x = xs - f (xs)
52
52
@assert typeof (x) === T
53
53
x0 = T (xs)
54
54
while abs (x- x0) > max (abs (x),abs (x0)) * tol
55
55
x0 = x
56
- x = x0 + f (x0)
56
+ x = x0 - f (x0)
57
57
end
58
58
return x
59
59
end
60
60
61
61
function quantile_newton (d:: ContinuousUnivariateDistribution , p:: Real , xs:: Real = mode (d), tol:: Real = 1e-12 )
62
- f (x) = ( p - cdf (d, x)) / pdf (d, x)
62
+ f (x) = - (( p - cdf (d, x)) / pdf (d, x) )
63
63
# FIXME : can this be expressed via `promote_type()`? Test coverage missing.
64
- x = xs + f (xs)
64
+ x = xs - f (xs)
65
65
T = typeof (x)
66
66
if 0 < p < 1
67
67
return newton (f, T (xs), tol)
@@ -75,9 +75,9 @@ function quantile_newton(d::ContinuousUnivariateDistribution, p::Real, xs::Real=
75
75
end
76
76
77
77
function cquantile_newton (d:: ContinuousUnivariateDistribution , p:: Real , xs:: Real = mode (d), tol:: Real = 1e-12 )
78
- f (x) = ( ccdf (d, x)- p) / pdf (d, x)
78
+ f (x) = - (( ccdf (d, x)- p) / pdf (d, x) )
79
79
# FIXME : can this be expressed via `promote_type()`? Test coverage missing.
80
- x = xs + f (xs)
80
+ x = xs - f (xs)
81
81
T = typeof (x)
82
82
if 0 < p < 1
83
83
return newton (f, T (xs), tol)
92
92
93
93
function invlogcdf_newton (d:: ContinuousUnivariateDistribution , lp:: Real , xs:: Real = mode (d), tol:: Real = 1e-12 )
94
94
T = typeof (lp - logpdf (d,xs))
95
- f_a (x) = - exp (lp - logpdf (d,x) + logexpm1 (max (logcdf (d,x)- lp,0 )))
96
- f_b (x) = exp (lp - logpdf (d,x) + log1mexp (min (logcdf (d,x)- lp,0 )))
95
+ f_a (x) = exp (lp - logpdf (d,x) + logexpm1 (max (logcdf (d,x)- lp,0 )))
96
+ f_b (x) = - exp (lp - logpdf (d,x) + log1mexp (min (logcdf (d,x)- lp,0 )))
97
97
if - Inf < lp < 0
98
98
x0 = T (xs)
99
99
if lp < logcdf (d,x0)
113
113
114
114
function invlogccdf_newton (d:: ContinuousUnivariateDistribution , lp:: Real , xs:: Real = mode (d), tol:: Real = 1e-12 )
115
115
T = typeof (lp - logpdf (d,xs))
116
- f_a (x) = exp (lp - logpdf (d,x) + logexpm1 (max (logccdf (d,x)- lp,0 )))
117
- f_b (x) = - exp (lp - logpdf (d,x) + log1mexp (min (logccdf (d,x)- lp,0 )))
116
+ f_a (x) = - exp (lp - logpdf (d,x) + logexpm1 (max (logccdf (d,x)- lp,0 )))
117
+ f_b (x) = exp (lp - logpdf (d,x) + log1mexp (min (logccdf (d,x)- lp,0 )))
118
118
if - Inf < lp < 0
119
119
x0 = T (xs)
120
120
if lp < logccdf (d,x0)
0 commit comments