pub struct Logistic { /* private fields */ }Expand description
§The Logistic Distribution
§Description
Density, distribution function, quantile function and random generation for the logistic distribution with parameters location and scale.
§Arguments
- location, scale: location and scale parameters.
§Details
If location or scale are omitted, they assume the default values of 0 and 1 respectively.
The Logistic distribution with location = m and scale = s has distribution function
$ F(x) = \frac{1}{1 + exp(-\frac{x-m}{s})} $
and density
$ f(x) = \frac{1}{s} exp(\frac{x-m}{s}) (1 + exp(\frac{x-m}{s}))^{-2} $.
It is a long-tailed distribution with mean m and variance $ \frac{\pi^2}{3} s^2 $.
§Value
dlogis gives the density, plogis gives the distribution function, qlogis gives the quantile function, and rlogis generates random deviates.
The length of the result is determined by n for rlogis, and is the maximum of the lengths of the numerical arguments for the other functions.
The numerical arguments other than n are recycled to the length of the result. Only the first elements of the logical arguments are used.
§Density Plot
let logis = LogisticBuilder::new().build();
let x = <[f64]>::sequence(-6.0, 6.0, 1000);
let y = x
.iter()
.map(|x| logis.density(x).unwrap())
.collect::<Vec<_>>();
let root = SVGBackend::new("density.svg", (1024, 768)).into_drawing_area();
Plot::new()
.with_options(PlotOptions {
x_axis_label: "x".to_string(),
y_axis_label: "density".to_string(),
..Default::default()
})
.with_plottable(Line {
x,
y,
color: BLACK,
..Default::default()
})
.plot(&root)
.unwrap();§Note
qlogis(p) is the same as the well known ‘logit’ function, $ logit(p) = log(p/(1-p)) $, and plogis(x) has consequently been called the ‘inverse logit’.
The distribution function is a rescaled hyperbolic tangent, $ plogis(x) == (1+ tanh(x/2))/2 $, and it is called a sigmoid function in contexts such as neural networks.
§Source
[dpq]logis are calculated directly from the definitions.
rlogis uses inversion.
§References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Johnson, N. L., Kotz, S. and Balakrishnan, N. (1995) Continuous Univariate Distributions, volume 2, chapter 23. Wiley, New York.
§See Also
Distributions for other standard distributions.
§Examples
Approximately equal (+/- 3)
let logis = LogisticBuilder::new()
.with_location(0)
.with_scale(5)
.build();
let mut rng = MersenneTwister::new();
rng.set_seed(1);
let r = (0..4000)
.map(|_| logis.random_sample(&mut rng).unwrap())
.collect::<Vec<_>>();
println!("{}", variance(&r));
println!("{}", f64::PI().powi(2) / 3.0 * 5.0_f64.powi(2));Trait Implementations§
Source§impl Distribution for Logistic
impl Distribution for Logistic
Source§fn log_density<R: Into<Real64>>(&self, x: R) -> Real64
fn log_density<R: Into<Real64>>(&self, x: R) -> Real64
Source§fn probability<R: Into<Real64>>(&self, q: R, lower_tail: bool) -> Probability64
fn probability<R: Into<Real64>>(&self, q: R, lower_tail: bool) -> Probability64
Source§fn log_probability<R: Into<Real64>>(
&self,
q: R,
lower_tail: bool,
) -> LogProbability64
fn log_probability<R: Into<Real64>>( &self, q: R, lower_tail: bool, ) -> LogProbability64
Source§fn quantile<P: Into<Probability64>>(&self, p: P, lower_tail: bool) -> Real64
fn quantile<P: Into<Probability64>>(&self, p: P, lower_tail: bool) -> Real64
Source§fn log_quantile<LP: Into<LogProbability64>>(
&self,
p: LP,
lower_tail: bool,
) -> Real64
fn log_quantile<LP: Into<LogProbability64>>( &self, p: LP, lower_tail: bool, ) -> Real64
Auto Trait Implementations§
impl Freeze for Logistic
impl RefUnwindSafe for Logistic
impl Send for Logistic
impl Sync for Logistic
impl Unpin for Logistic
impl UnwindSafe for Logistic
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.