1[section:skew_normal_dist Skew Normal Distribution] 2 3``#include <boost/math/distributions/skew_normal.hpp>`` 4 5 namespace boost{ namespace math{ 6 7 template <class RealType = double, 8 class ``__Policy`` = ``__policy_class`` > 9 class skew_normal_distribution; 10 11 typedef skew_normal_distribution<> normal; 12 13 template <class RealType, class ``__Policy``> 14 class skew_normal_distribution 15 { 16 public: 17 typedef RealType value_type; 18 typedef Policy policy_type; 19 // Constructor: 20 skew_normal_distribution(RealType location = 0, RealType scale = 1, RealType shape = 0); 21 // Accessors: 22 RealType location()const; // mean if normal. 23 RealType scale()const; // width, standard deviation if normal. 24 RealType shape()const; // The distribution is right skewed if shape > 0 and is left skewed if shape < 0. 25 // The distribution is normal if shape is zero. 26 }; 27 28 }} // namespaces 29 30The skew normal distribution is a variant of the most well known 31Gaussian statistical distribution. 32 33The skew normal distribution with shape zero resembles the 34[@http://en.wikipedia.org/wiki/Normal_distribution Normal Distribution], 35hence the latter can be regarded as a special case of the more generic skew normal distribution. 36 37If the standard (mean = 0, scale = 1) normal distribution probability density function is 38 39[equation normal01_pdf] 40 41and the cumulative distribution function 42 43[equation normal01_cdf] 44 45then the [@http://en.wikipedia.org/wiki/Probability_density_function PDF] 46of the [@http://en.wikipedia.org/wiki/Skew_normal_distribution skew normal distribution] 47with shape parameter [alpha], defined by O'Hagan and Leonhard (1976) is 48 49[equation skew_normal_pdf0] 50 51Given [@http://en.wikipedia.org/wiki/Location_parameter location] [xi], 52[@http://en.wikipedia.org/wiki/Scale_parameter scale] [omega], 53and [@http://en.wikipedia.org/wiki/Shape_parameter shape] [alpha], 54it can be 55[@http://en.wikipedia.org/wiki/Skew_normal_distribution transformed], 56to the form: 57 58[equation skew_normal_pdf] 59 60and [@http://en.wikipedia.org/wiki/Cumulative_distribution_function CDF]: 61 62[equation skew_normal_cdf] 63 64where ['T(h,a)] is Owen's T function, and ['[Phi](x)] is the normal distribution. 65 66The variation the PDF and CDF with its parameters is illustrated 67in the following graphs: 68 69[graph skew_normal_pdf] 70[graph skew_normal_cdf] 71 72[h4 Member Functions] 73 74 skew_normal_distribution(RealType location = 0, RealType scale = 1, RealType shape = 0); 75 76Constructs a skew_normal distribution with location [xi], 77scale [omega] and shape [alpha]. 78 79Requires scale > 0, otherwise __domain_error is called. 80 81 RealType location()const; 82 83returns the location [xi] of this distribution, 84 85 RealType scale()const; 86 87returns the scale [omega] of this distribution, 88 89 RealType shape()const; 90 91returns the shape [alpha] of this distribution. 92 93(Location and scale function match other similar distributions, 94allowing the functions `find_location` and `find_scale` to be used generically). 95 96[note While the shape parameter may be chosen arbitrarily (finite), 97the resulting [*skewness] of the distribution is in fact limited to about (-1, 1); 98strictly, the interval is (-0.9952717, 0.9952717). 99 100A parameter [delta] is related to the shape [alpha] by 101[delta] = [alpha] / (1 + [alpha][pow2]), 102and used in the expression for skewness 103[equation skew_normal_skewness] 104] [/note] 105 106[h4 References] 107 108* [@http://azzalini.stat.unipd.it/SN/ Skew-Normal Probability Distribution] for many links and bibliography. 109* [@http://azzalini.stat.unipd.it/SN/Intro/intro.html A very brief introduction to the skew-normal distribution] 110by Adelchi Azzalini (2005-11-2). 111* See a [@http://www.tri.org.au/azzalini.html skew-normal function animation]. 112 113[h4 Non-member Accessors] 114 115All the [link math_toolkit.dist_ref.nmp usual non-member accessor functions] 116that are generic to all distributions are supported: __usual_accessors. 117 118The domain of the random variable is ['-[max_value], +[min_value]]. 119Infinite values are not supported. 120 121There are no [@http://en.wikipedia.org/wiki/Closed-form_expression closed-form expression] 122known for the mode and median, but these are computed for the 123 124* mode - by finding the maximum of the PDF. 125* median - by computing `quantile(1/2)`. 126 127The maximum of the PDF is sought through searching the root of f'(x)=0. 128 129Both involve iterative methods that will have lower accuracy than other estimates. 130 131[h4 Testing] 132 133__R using library(sn) described at 134[@http://azzalini.stat.unipd.it/SN/ Skew-Normal Probability Distribution], 135and at [@http://cran.r-project.org/web/packages/sn/sn.pd R skew-normal(sn) package]. 136 137Package sn provides functions related to the skew-normal (SN) 138and the skew-t (ST) probability distributions, 139both for the univariate and for the the multivariate case, 140including regression models. 141 142__Mathematica was also used to generate some more accurate spot test data. 143 144[h4 Accuracy] 145 146The skew_normal distribution with shape = zero is implemented as a special case, 147equivalent to the normal distribution in terms of the 148[link math_toolkit.sf_erf.error_function error function], 149and therefore should have excellent accuracy. 150 151The PDF and mean, variance, skewness and kurtosis are also accurately evaluated using 152[@http://en.wikipedia.org/wiki/Analytical_expression analytical expressions]. 153The CDF requires [@http://en.wikipedia.org/wiki/Owen%27s_T_function Owen's T function] 154that is evaluated using a Boost C++ __owens_t implementation of the algorithms of 155M. Patefield and D. Tandy, Journal of Statistical Software, 5(5), 1-25 (2000); 156the complicated accuracy of this function is discussed in detail at __owens_t. 157 158The median and mode are calculated by iterative root finding, and both will be less accurate. 159 160[h4 Implementation] 161 162In the following table, [xi] is the location of the distribution, 163and [omega] is its scale, and [alpha] is its shape. 164 165[table 166[[Function][Implementation Notes]] 167[[pdf][Using:[equation skew_normal_pdf] ]] 168[[cdf][Using: [equation skew_normal_cdf][br] 169where ['T(h,a)] is Owen's T function, and ['[Phi](x)] is the normal distribution. ]] 170[[cdf complement][Using: complement of normal distribution + 2 * Owens_t]] 171[[quantile][Maximum of the pdf is sought through searching the root of f'(x)=0]] 172[[quantile from the complement][-quantile(SN(-location [xi], scale [omega], -shape[alpha]), p)]] 173[[location][location [xi]]] 174[[scale][scale [omega]]] 175[[shape][shape [alpha]]] 176[[median][quantile(1/2)]] 177[[mean][[equation skew_normal_mean]]] 178[[mode][Maximum of the pdf is sought through searching the root of f'(x)=0]] 179[[variance][[equation skew_normal_variance] ]] 180[[skewness][[equation skew_normal_skewness] ]] 181[[kurtosis][kurtosis excess-3]] 182[[kurtosis excess] [ [equation skew_normal_kurt_ex] ]] 183] [/table] 184 185[endsect] [/section:skew_normal_dist skew_Normal] 186 187[/ skew_normal.qbk 188 Copyright 2012 Benjamin Sobotta, John Maddock and Paul A. Bristow. 189 Distributed under the Boost Software License, Version 1.0. 190 (See accompanying file LICENSE_1_0.txt or copy at 191 http://www.boost.org/LICENSE_1_0.txt). 192] 193 194