@@ -166,3 +166,32 @@ function fit_mean_relerror(::Type{LogNormal}, mean, relerror)
166166 σ = sqrt (log (w))
167167 LogNormal (μ, σ)
168168end
169+
170+
171+ # ---- support LogNormal(-x) of negative values ------------
172+ const ScaledLogNormal{T} = LocationScale{T, Continuous, LogNormal{T}} where T
173+
174+ σstar (d:: ScaledLogNormal ) = exp (params (d. ρ)[2 ])
175+
176+
177+ function fit_mean_Σ (:: Type{ScaledLogNormal} , mean:: T1 , σ:: T2 ) where {T1 <: Real ,T2 <: Real }
178+ _T = promote_type (T1, T2)
179+ fit_mean_Σ (ScaledLogNormal{_T}, mean, σ)
180+ end
181+ function fit_mean_Σ (d:: Type{ScaledLogNormal{T}} , mean:: Real , σ:: Real ) where T
182+ mean < 0 && return (- 1 * fit_mean_Σ (LogNormal{T}, - mean, σ))
183+ 1 * fit_mean_Σ (LogNormal{T}, mean, σ)
184+ end
185+
186+ function fit_mode_quantile (:: Type{ScaledLogNormal} , mode:: T , qp:: QuantilePoint ) where T<: Real
187+ fit_mode_quantile (ScaledLogNormal{T}, mode, qp)
188+ end
189+ function fit_mode_quantile (:: Type{ScaledLogNormal{T}} , mode:: Real , qp:: QuantilePoint ) where T
190+ if mode < 0
191+ return (- 1 * fit_mode_quantile (LogNormal{T}, - mode, QuantilePoint (- qp. q,1 - qp. p)))
192+ # return(-1 * fit_mode_quantile(LogNormal{T}, -mode, qp))
193+ end
194+ 1 * fit_mode_quantile (LogNormal{T}, mode, qp)
195+ end
196+
197+
0 commit comments