home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / e / e032 / 3.ddi / FILES / STATISTI.PAK / CONTINUO.M < prev    next >
Encoding:
Text File  |  1992-07-29  |  38.9 KB  |  1,050 lines

  1.  
  2. (*:Version: Mathematica 2.0 *)
  3.  
  4. (*:Name: Statistics`ContinuousDistributions *)
  5.  
  6. (*:Title: Continuous Statistical Distributions *)
  7.  
  8. (*:Author:
  9.   David Withoff (Wolfram Research), February, 1990.
  10.   Modified March, 1991.
  11. *)
  12.  
  13. (*:Legal:
  14.   Copyright (c) 1990, 1991, Wolfram Research, Inc.
  15. *)
  16.  
  17. (*:Reference: Usage messages only. *)
  18.  
  19. (*:Summary:
  20.   Properties and functionals of continuous probability distributions
  21.   used in statistical computations.
  22. *)
  23.  
  24. (*:Keywords: continuous distribution *)
  25.  
  26. (*:Requirements: No special system requirements. *)
  27.  
  28. (*:Warning:
  29.   This package extends the definition of several descriptive statistics
  30.   functions and the definition of Random.  If the original usage messages
  31.   are reloaded, this change will not be reflected in the usage message,
  32.   although the extended functionality will remain.
  33.  
  34.   Definitions for ChiSquareDistribution, FRatioDistribution,
  35.   NormalDistribution, and StudentTDistribution are contained
  36.   in the Statistics`NormalDistribution` package.
  37. *)
  38.  
  39. (*:Note: Most functions provide numerical results. *)
  40.  
  41. (*:Sources:
  42.   Norman L. Johnson and Samuel Kotz, Continuous Univariate
  43.     Distributions, 1970
  44. *)
  45.  
  46. BeginPackage["Statistics`ContinuousDistributions`",
  47.              "Statistics`NormalDistribution`",
  48.              "Statistics`DescriptiveStatistics`",
  49.              "Statistics`Common`DistributionsCommon`",
  50.              "Statistics`InverseStatisticalFunctions`"]
  51.  
  52.     (*  Distributions  *)
  53.  
  54. BetaDistribution::usage =
  55. "BetaDistribution[alpha, beta] represents the continuous Beta
  56. distribution with parameters alpha and beta."
  57.  
  58. CauchyDistribution::usage =
  59. "CauchyDistribution[a, b] represents the Cauchy distribution with
  60. parameters a and b."
  61.  
  62. ChiDistribution::usage =
  63. "ChiDistribution[n] represents the Chi distribution with n degrees
  64. of freedom"
  65.  
  66. ChiSquareDistribution::usage =
  67. "ChiSquareDistribution[n] represents the Chi-Square distribution
  68. with n degrees of freedom"
  69.  
  70. NoncentralChiSquareDistribution::usage =
  71. "NoncentralChiSquareDistribution[n, lambda] represents the non-central
  72. Chi-Square distribution with n degrees of freedom and non-centrality
  73. parameter lambda."
  74.  
  75. ExponentialDistribution::usage =
  76. "ExponentialDistribution[lambda] represents the Exponential
  77. distribution with parameter lambda > 0."
  78.  
  79. ExtremeValueDistribution::usage =
  80. "ExtremeValueDistribution[alpha, beta] represents the Extreme-Value
  81. (Fisher-Tippett) distribution with parameters alpha and beta."
  82.  
  83. FRatioDistribution::usage =
  84. "FRatioDistribution[n1, n2] represents the F distribution with n1
  85. numerator degrees of freedom and n2 denominator degrees of freedom."
  86.  
  87. NoncentralFRatioDistribution::usage =
  88. "NoncentralFRatioDistribution[n1, n2, lambda] represents the non-central
  89. F distribution with n1 numerator degrees of freedom, n2 denominator
  90. degrees of freedom, and numerator non-centrality parameter lambda."
  91.  
  92. GammaDistribution::usage =
  93. "GammaDistribution[alpha, beta] represents the Gamma distribution
  94. with shape parameter alpha and scale parameter beta."
  95.  
  96. NormalDistribution::usage =
  97. "NormalDistribution[mu, sigma] represents the Normal (Gaussian)
  98. distribution with mean mu and standard deviation sigma."
  99.  
  100. HalfNormalDistribution::usage =
  101. "HalfNormalDistribution[theta] represents the Half-Normal distribution
  102. with variance parameter theta."
  103.  
  104. LaplaceDistribution::usage =
  105. "LaplaceDistribution[mu, beta] represents the Laplace (double
  106. Exponential) distribution with mean mu and variance parameter beta."
  107.  
  108. LogNormalDistribution::usage =
  109. "LogNormalDistribution[mu, sigma] represents the Log-Normal distribution
  110. with mean parameter mu and variance parameter sigma."
  111.  
  112. LogisticDistribution::usage =
  113. "LogisticDistribution[mu, beta] represents the Logistic distribution
  114. with position mu and rate parameter beta."
  115.  
  116. RayleighDistribution::usage =
  117. "RayleighDistribution[sigma] represents the Rayleigh distribution
  118. with parameter sigma."
  119.  
  120. StudentTDistribution::usage =
  121. "StudentTDistribution[n] represents Student's T distribution with
  122. n degrees of freedom."
  123.  
  124. NoncentralStudentTDistribution::usage =
  125. "NoncentralStudentTDistribution[n, delta] represents the non-central
  126. Student's t distribution with n degrees of freedom and non-centrality
  127. parameter delta."
  128.  
  129. UniformDistribution::usage =
  130. "UniformDistribution[min, max] represents the Uniform distribution
  131. on the interval {min, max}."
  132.  
  133. WeibullDistribution::usage =
  134. "WeibullDistribution[alpha, beta] represents the Weibull distribution
  135. with parameters alpha and beta."
  136.  
  137.     (*   Functions  *)
  138.  
  139. (* Introduce usage messages for new functions. *)
  140.  
  141. Domain::usage =
  142. "Domain[distribution] gives the domain of the specified distribution."
  143.  
  144. PDF::usage =
  145. "PDF[distribution, x] gives the probability density function of
  146. the specified statistical distribution evaluated at x."
  147.  
  148. CDF::usage =
  149. "CDF[distribution, x] gives cumulative distribution function of distribution
  150. at the point x, defined as the integral of the probability density of the
  151. the distribution from the lowest value in the domain to x."
  152.  
  153. CharacteristicFunction::usage =
  154. "CharacteristicFunction[distribution, t] gives the characteristic
  155. function of the specified statistical distribution as a function
  156. of the variable t."
  157.  
  158. (*
  159.   Extend usage messages for existing functions, if this has
  160.   not already been done.
  161. *)
  162.  
  163. If[StringPosition[Mean::usage, "specified statistical distribution"] === {},
  164.  
  165. Mean::usage = Mean::usage <> " " <>
  166. "Mean[distribution] gives the mean of the specified statistical distribution.";
  167.  
  168. Variance::usage = Variance::usage <> " " <>
  169. "Variance[distribution] gives the variance of the specified
  170. statistical distribution.";
  171.  
  172. StandardDeviation::usage = StandardDeviation::usage <> " " <>
  173. "StandardDeviation[distribution] gives the standard deviation of the
  174. specified statistical distribution.";
  175.  
  176. Skewness::usage = Skewness::usage <> " " <>
  177. "Skewness[distribution] gives the coefficient of skewness of the
  178. specified statistical distribution.";
  179.  
  180. Kurtosis::usage = Kurtosis::usage <> " " <>
  181. "Kurtosis[distribution] gives the coefficient of kurtosis of the
  182. specified statistical distribution.";
  183.  
  184. KurtosisExcess::usage = KurtosisExcess::usage <> " " <>
  185. "KurtosisExcess[distribution] gives the kurtosis excess for the
  186. specified statistical distribution.";
  187.  
  188. Quantile::usage =
  189. "Quantile[distribution, q] gives the q-th quantile of the specified
  190. statistical distribution."
  191. ]
  192.  
  193. (* Extend the usage message of Random, if this has not already been done. *)
  194.  
  195. If[StringPosition[Random::usage, "specified statistical distribution"] === {},
  196.  
  197. Random::usage = Random::usage <> " " <>
  198. "Random[distribution] gives a random number with the specified
  199. statistical distribution."
  200. ]
  201.  
  202. Begin["`Private`"]
  203.  
  204. (* Continuous Beta (Binomial) Distribution *)
  205.  
  206. BetaDistribution/: Domain[BetaDistribution[___]] := {0, 1}
  207.  
  208. BetaDistribution/: PDF[BetaDistribution[alpha_, beta_], x_] :=
  209.     With[{result = x^(alpha-1) (1-x)^(beta-1) / Beta[alpha, beta]},
  210.     If[NumberQ[N[result]],N[result],result]]
  211.  
  212. BetaDistribution/: CDF[BetaDistribution[alpha_, beta_], x_] := 
  213.     With[{result = BetaRegularized[x, alpha, beta]},
  214.      If[NumberQ[N[result]],N[result],result]] 
  215.  
  216. BetaDistribution/: Mean[BetaDistribution[alpha_, beta_]] :=
  217.     alpha/(alpha+beta)//N
  218.  
  219. BetaDistribution/: Variance[BetaDistribution[alpha_, beta_]] :=
  220.    With[{result = alpha beta /((alpha+beta)^2 (alpha+beta+1))},
  221.        If[NumberQ[N[result]],N[result],result]]
  222.  
  223. BetaDistribution/: StandardDeviation[BetaDistribution[alpha_, beta_]] :=
  224.     With[{result =
  225.       Sqrt[alpha] Sqrt[beta] / ((alpha + beta) Sqrt[1 + alpha + beta])},
  226.       If[NumberQ[N[result]],N[result],result]]
  227.  
  228. BetaDistribution/: Skewness[BetaDistribution[alpha_, beta_]] :=
  229.     With[{result = 2 (beta-alpha) Sqrt[alpha+beta+1] /
  230.             (Sqrt[alpha] Sqrt[beta] (alpha+beta+2))},
  231.      If[NumberQ[N[result]],N[result],result]]
  232.  
  233. BetaDistribution/: Kurtosis[BetaDistribution[alpha_, beta_]] :=
  234.     With[{result = 3 (alpha+beta+1) (2 (alpha+beta)^2 +
  235.         alpha beta (alpha+beta-6))/
  236.             (alpha beta (alpha+beta+2) (alpha+beta+3))},
  237.     If[NumberQ[N[result]],N[result],result]]
  238.  
  239. BetaDistribution/: KurtosisExcess[BetaDistribution[alpha_, beta_]] :=
  240.     With[{result = 3 (alpha+beta+1) (2 (alpha+beta)^2 +
  241.         alpha beta (alpha+beta-6))/
  242.         (alpha beta (alpha+beta+2) (alpha+beta+3)) - 3},
  243.     If[NumberQ[N[result]],N[result],result]]
  244.  
  245. BetaDistribution/:
  246.         CharacteristicFunction[BetaDistribution[alpha_, beta_], t_] :=
  247.      With[{result = Hypergeometric1F1[alpha, alpha+beta, I t]},
  248.      If[NumberQ[N[result]],N[result],result]] 
  249.  
  250. BetaDistribution/: Quantile[BetaDistribution[alpha_, beta_], q_] :=
  251.     InverseBetaRegularized[0, q, alpha, beta]//N
  252.  
  253. BetaDistribution/: Random[BetaDistribution[alpha_, beta_]] :=
  254.     InverseBetaRegularized[0, Random[], alpha, beta]//N
  255.  
  256. (* Cauchy Distribution *)
  257.  
  258. CauchyDistribution/: Domain[CauchyDistribution[a_:0, b_:1]] =
  259.     {-Infinity, Infinity}
  260.  
  261. CauchyDistribution/: PDF[CauchyDistribution[a_:0, b_:1], x_] :=
  262.     With[{result = 1/(b Pi (1 + ((x-a)/b)^2))},
  263.      If[NumberQ[N[result]],N[result],result]] 
  264.  
  265. CauchyDistribution/: CDF[CauchyDistribution[a_:0, b_:1], x_] :=
  266.     With[{result = (ArcTan[(x-a)/b]/Pi + 1/2)},
  267.     If[NumberQ[N[result]],N[result],result]]
  268.  
  269. CauchyDistribution/: Mean[CauchyDistribution[___]] := Indeterminate
  270.  
  271. CauchyDistribution/: Variance[CauchyDistribution[___]] := Indeterminate
  272.  
  273. CauchyDistribution/: StandardDeviation[CauchyDistribution[___]] := Indeterminate
  274.  
  275. CauchyDistribution/: Skewness[CauchyDistribution[___]] := Indeterminate
  276.  
  277. CauchyDistribution/: Kurtosis[CauchyDistribution[___]] := Indeterminate
  278.  
  279. CauchyDistribution/: KurtosisExcess[CauchyDistribution[___]] := Indeterminate
  280.  
  281. CauchyDistribution/:
  282.         CharacteristicFunction[CauchyDistribution[a_:0, b_:1], t_] :=
  283.      With[{result = Exp[I a t - b t Sign[t]]},
  284.     If[NumberQ[N[result]],N[result],result]]
  285.  
  286. CauchyDistribution/: Quantile[CauchyDistribution[a_:0, b_:1], q_] :=
  287.     With[{result = a + b Tan[Pi (q-1/2)]},
  288.      If[NumberQ[N[result]],N[result],result]]
  289.  
  290. CauchyDistribution/: Random[CauchyDistribution[a_:0, b_:1]] :=
  291.     With[{result = a + b Tan[Pi (Random[]-1/2)]},
  292.     If[NumberQ[N[result]],N[result],result]]
  293.  
  294. (* ChiSquareDistribution *)
  295. (* The chi-square distribution is defined in Statistics`NormalDistribution`. *)
  296.  
  297. (* Chi Distribution *)
  298.  
  299. ChiDistribution/: Domain[ChiDistribution[___]] := {0, Infinity}
  300.  
  301. ChiDistribution/: PDF[ChiDistribution[n_], x_] :=
  302.     With[{result = x^(n-1) Exp[-x^2/2] / (2^(n/2-1) Gamma[n/2])},
  303.     If[NumberQ[N[result]],N[result],result]]
  304.  
  305. ChiDistribution/: CDF[ChiDistribution[n_], x_] :=
  306.      With[{result = GammaRegularized[n/2, 0, x^2/2]},
  307.     If[NumberQ[N[result]],N[result],result]]
  308.  
  309. ChiDistribution/: Mean[ChiDistribution[n_]] :=
  310.     With[{result = Sqrt[2] Gamma[(n+1)/2]/Gamma[n/2]},
  311.         If[NumberQ[N[result]],N[result],result]]
  312.  
  313. ChiDistribution/: Variance[ChiDistribution[n_]] :=
  314.     With[{result = 2 (Gamma[(n+2)/2]/Gamma[n/2] -
  315.         (Gamma[(n+1)/2]/Gamma[n/2])^2)},
  316.         If[NumberQ[N[result]],N[result],result]]
  317.  
  318. ChiDistribution/: StandardDeviation[ChiDistribution[n_]] :=
  319.     With[{result = Sqrt[2 (Gamma[(n+2)/2]/Gamma[n/2] -
  320.         (Gamma[(n+1)/2]/Gamma[n/2])^2)]},
  321.          If[NumberQ[N[result]],N[result],result]]
  322.  
  323. ChiDistribution/: Skewness[ChiDistribution[n_]] :=
  324.     With[{result = (2*Gamma[(1 + n)/2]^3 -
  325.                3*Gamma[n/2]*Gamma[(1 + n)/2]*Gamma[(2 + n)/2] +
  326.                Gamma[n/2]^2*Gamma[(3 + n)/2])/
  327.              (-Gamma[(1 + n)/2]^2 + Gamma[n/2]*Gamma[(2 + n)/2])^(3/2)},
  328.        If[NumberQ[N[result]],N[result],result]]
  329.  
  330. ChiDistribution/: Kurtosis[ChiDistribution[n_]] :=
  331.     With[{result = (-3*Gamma[(1 + n)/2]^4 +
  332.              6*Gamma[n/2]*Gamma[(1 + n)/2]^2*Gamma[(2 + n)/2] -
  333.              4*Gamma[n/2]^2*Gamma[(1 + n)/2]*Gamma[(3 + n)/2] +
  334.              Gamma[n/2]^3*Gamma[(4 + n)/2])/
  335.            (Gamma[(1 + n)/2]^2 - Gamma[n/2]*Gamma[(2 + n)/2])^2},
  336.        If[NumberQ[N[result]],N[result],result]]
  337.  
  338. ChiDistribution/: KurtosisExcess[ChiDistribution[n_]] :=
  339.     With[{result = Kurtosis[ChiDistribution[n]] - 3},
  340.         If[NumberQ[N[result]],N[result],result]]
  341.  
  342. ChiDistribution/: CharacteristicFunction[ChiDistribution[n_], t_] :=
  343.         NotImplemented /; False
  344.  
  345. ChiDistribution/: Quantile[ChiDistribution[n_], q_] :=
  346.     With[{result = Sqrt[2] Sqrt[InverseGammaRegularized[n/2, 0, q]]},
  347.         If[NumberQ[N[result]],N[result],result]]
  348.  
  349. ChiDistribution/: Random[ChiDistribution[n_]] :=
  350.     With[{result = Sqrt[2] Sqrt[InverseGammaRegularized[n/2, 0, Random[]]]},
  351.         If[NumberQ[N[result]],N[result],result]]
  352.  
  353. (* Non-central Chi-Square Distribution *)
  354.  
  355. NoncentralChiSquareDistribution/:
  356.         Domain[NoncentralChiSquareDistribution[___]] := {0, Infinity}
  357.  
  358. NoncentralChiSquareDistribution/:
  359.         PDF[NoncentralChiSquareDistribution[n_, lambda_], x_] :=
  360.          With[{result = Exp[-(x+lambda)/2] x^(n/2-1) /(2^(n/2)) *
  361.                         Hypergeometric0F1Regularized[n/2, (lambda x)/4]},
  362.      If[NumberQ[N[result]],N[result],result]]
  363.  
  364. NoncentralChiSquareDistribution/:
  365.         CDF[NoncentralChiSquareDistribution[n_, lambda_], x_] :=
  366.     Module[
  367.         {t, density},
  368.         density = PDF[NoncentralChiSquareDistribution[n, lambda], t];
  369.         If[NumberQ[n] && NumberQ[lambda] && NumberQ[x],
  370.             Re[NIntegrate[density, {t, 0, x}]],
  371.             Integrate[density, {t, 0, x}]
  372.         ]
  373.     ]
  374.  
  375. NoncentralChiSquareDistribution/:
  376.         Mean[NoncentralChiSquareDistribution[n_, lambda_]] := n + lambda    
  377.  
  378. NoncentralChiSquareDistribution/:
  379.         Variance[NoncentralChiSquareDistribution[n_, lambda_]] :=
  380.         2 n + 4 lambda    
  381.  
  382. NoncentralChiSquareDistribution/:
  383.         StandardDeviation[NoncentralChiSquareDistribution[n_, lambda_]] :=
  384.         With[{result = Sqrt[2 n + 4 lambda]},
  385.             If[NumberQ[N[result]],N[result],result]]
  386.  
  387. NoncentralChiSquareDistribution/:
  388.         Skewness[NoncentralChiSquareDistribution[n_, lambda_]] :=
  389.         With[{result = Sqrt[8] (n + 3 lambda)/(n + 2 lambda)^(3/2)},
  390.             If[NumberQ[N[result]],N[result],result]]
  391.  
  392. NoncentralChiSquareDistribution/:
  393.         Kurtosis[NoncentralChiSquareDistribution[n_, lambda_]] :=
  394.         With[{result = 3 + 12 (n + 4 lambda)/(n + 2 lambda)^2},
  395.             If[NumberQ[N[result]],N[result],result]]
  396.  
  397. NoncentralChiSquareDistribution/:
  398.         KurtosisExcess[NoncentralChiSquareDistribution[n_, lambda_]] :=
  399.         With[{result = 12 (n + 4 lambda)/(n + 2 lambda)^2},
  400.             If[NumberQ[N[result]],N[result],result]]
  401.  
  402. NoncentralChiSquareDistribution/: CharacteristicFunction[
  403.         NoncentralChiSquareDistribution[n_, lambda_], t_] :=
  404.                 NotImplemented /; False
  405.  
  406. NoncentralChiSquareDistribution/:
  407.         Quantile[NoncentralChiSquareDistribution[n_, lambda_], q_] :=
  408.                 NotImplemented /; False
  409.  
  410. NoncentralChiSquareDistribution/:
  411.         Random[NoncentralChiSquareDistribution[n_, lambda_]] :=
  412.     With[{result = Quantile[NoncentralChiSquareDistribution[n,lambda],
  413.             Random[]]},
  414.         If[NumberQ[N[result]],N[result],result]]
  415.  
  416. (* Exponential Distribution *)
  417.  
  418. ExponentialDistribution/: Domain[ExponentialDistribution[___]] :=
  419.         {0, Infinity}
  420.  
  421. ExponentialDistribution/: PDF[ExponentialDistribution[lambda_:1], x_] :=
  422.         With[{result = lambda Exp[-lambda x]},
  423.     If[NumberQ[N[result]],N[result],result]]
  424.  
  425. ExponentialDistribution/: CDF[ExponentialDistribution[lambda_:1], x_] :=
  426.         With[{result = 1 - Exp[-lambda x]},
  427.     If[NumberQ[N[result]],N[result],result]]
  428.  
  429. ExponentialDistribution/: Mean[ExponentialDistribution[lambda_:1]] :=
  430.         1/lambda
  431.  
  432. ExponentialDistribution/: Variance[ExponentialDistribution[lambda_:1]] :=
  433.     1/lambda^2
  434.  
  435. ExponentialDistribution/: StandardDeviation[
  436.                 ExponentialDistribution[lambda_:1]] := 1/lambda
  437.  
  438. ExponentialDistribution/: Skewness[ExponentialDistribution[___]] = 2
  439.  
  440. ExponentialDistribution/: Kurtosis[ExponentialDistribution[___]] = 9
  441.  
  442. ExponentialDistribution/: KurtosisExcess[ExponentialDistribution[___]] = 6
  443.  
  444. ExponentialDistribution/: CharacteristicFunction[
  445.                               ExponentialDistribution[lambda_:1], t_] :=
  446.         With[{result = lambda/(lambda - I t)},
  447.         If[NumberQ[N[result]],N[result],result]]
  448.  
  449. ExponentialDistribution/: Quantile[ExponentialDistribution[lambda_:1], q_] :=
  450.     With[{result = -Log[1 - q] / lambda},
  451.         If[NumberQ[N[result]],N[result],result]]
  452.  
  453. ExponentialDistribution/: Random[ExponentialDistribution[lambda_:1]] :=
  454.         - Log[Random[]]/lambda//N
  455.  
  456. (* ExtremeValue (FisherTippett) Distribution *)
  457.  
  458. ExtremeValueDistribution/: Domain[ExtremeValueDistribution[___]] =
  459.         {-Infinity, Infinity}
  460.  
  461. ExtremeValueDistribution/: PDF[
  462.                 ExtremeValueDistribution[alpha_, beta_], x_] :=
  463.         With[{result=Exp[-Exp[(alpha - x)/beta] + (alpha - x)/beta]/beta},
  464.     If[NumberQ[N[result]],N[result],result]]
  465.  
  466. ExtremeValueDistribution/:
  467.         CDF[ExtremeValueDistribution[alpha_, beta_], x_] :=
  468.            With[{result = Exp[-Exp[-(x-alpha)/beta]]},
  469.     If[NumberQ[N[result]],N[result],result]]
  470.  
  471. ExtremeValueDistribution/: Mean[ExtremeValueDistribution[alpha_, beta_]] :=
  472.     With[{result = alpha + EulerGamma beta},
  473.         If[NumberQ[N[result]],N[result],result]]
  474.  
  475. ExtremeValueDistribution/: Variance[
  476.                 ExtremeValueDistribution[alpha_, beta_]] :=
  477.     With[{result = Pi^2 beta^2 /6},
  478.         If[NumberQ[N[result]],N[result],result]]
  479.  
  480. ExtremeValueDistribution/: StandardDeviation[
  481.                 ExtremeValueDistribution[alpha_, beta_]] :=
  482.     With[{result = Pi beta /Sqrt[6]},
  483.         If[NumberQ[N[result]],N[result],result]]
  484.  
  485. ExtremeValueDistribution/: Skewness[ExtremeValueDistribution[___]] :=
  486.         NotImplemented /; False
  487.  
  488. ExtremeValueDistribution/: Kurtosis[ExtremeValueDistribution[___]] = 27/5 
  489.  
  490. ExtremeValueDistribution/: KurtosisExcess[ExtremeValueDistribution[___]] =
  491.     12/5 
  492.  
  493. ExtremeValueDistribution/: CharacteristicFunction[
  494.                 ExtremeValueDistribution[alpha_, beta_], t_] :=
  495.         With[{result = Exp[alpha I t] Gamma[1 - beta I t]},
  496.         If[NumberQ[N[result]],N[result],result]]
  497.  
  498. ExtremeValueDistribution/: Quantile[
  499.                 ExtremeValueDistribution[alpha_, beta_], q_] :=
  500.     With[{result = alpha - beta Log[Log[1/q]]},
  501.         If[NumberQ[N[result]],N[result],result]]
  502.  
  503. ExtremeValueDistribution/: Random[ExtremeValueDistribution[alpha_, beta_]] :=
  504.         N[alpha - beta Log[Log[1/Random[]]]]
  505.  
  506. (* FRatioDistribution *)
  507. (* F-distribution is defined in Statistics`NormalDistribution` *)
  508.  
  509. (* Noncentral F-Distribution *)
  510.  
  511. NoncentralFRatioDistribution/:
  512.         Domain[NoncentralFRatioDistribution[___]] := {0, Infinity}
  513.  
  514. NoncentralFRatioDistribution/:
  515.         PDF[NoncentralFRatioDistribution[n1_, n2_, lambda_], x_] :=
  516.         With[{result = Exp[-lambda/2] Sqrt[x]^(n1-2) n1^(n1/2) n2^(n2/2) /
  517.                 ((n2 + x n1)^((n1+n2)/2) Beta[n1/2, n2/2]) *
  518.             Hypergeometric1F1[(n1+n2)/2, n1/2,
  519.                 lambda n1 x/(2 (n2 + n1 x))]},
  520.     If[NumberQ[N[result]],N[result],result]]
  521.  
  522. NoncentralFRatioDistribution/:
  523.         CDF[NoncentralFRatioDistribution[n1_, n2_, lambda_], x_] :=
  524.     Module[
  525.         {t, density},
  526.         density = PDF[NoncentralFRatioDistribution[n1,n2,lambda], t];
  527.         If[NumberQ[n1] && NumberQ[n2] && NumberQ[lambda] && NumberQ[x],
  528.             Re[NIntegrate[density, {t, 0, x}]],
  529.         (* else *)
  530.             Integrate[density, {t, 0, x}]
  531.         ]
  532.     ]    
  533.  
  534. NoncentralFRatioDistribution/:
  535.         Mean[NoncentralFRatioDistribution[n1_, n2_, lambda_]] :=
  536.                 NotImplemented /; False
  537.  
  538. NoncentralFRatioDistribution/:
  539.         Variance[NoncentralFRatioDistribution[n1_, n2_, lambda_]] :=
  540.                 NotImplemented /; False
  541.  
  542. NoncentralFRatioDistribution/:
  543.         StandardDeviation[NoncentralFRatioDistribution[n1_, n2_, lambda_]] :=
  544.                 NotImplemented /; False
  545.  
  546. NoncentralFRatioDistribution/:
  547.         Skewness[NoncentralFRatioDistribution[n1_, n2_, lambda_]] :=
  548.                 NotImplemented /; False
  549.  
  550. NoncentralFRatioDistribution/:
  551.         Kurtosis[NoncentralFRatioDistribution[n1_, n2_, lambda_]] :=
  552.                 NotImplemented /; False
  553.  
  554. NoncentralFRatioDistribution/:
  555.         KurtosisExcess[NoncentralFRatioDistribution[n1_, n2_, lambda_]] :=
  556.                 NotImplemented /; False
  557.  
  558. NoncentralFRatioDistribution/: CharacteristicFunction[
  559.         NoncentralFRatioDistribution[n1_, n2_, lambda_], t_] :=
  560.                 NotImplemented /; False
  561.  
  562. NoncentralFRatioDistribution/:
  563.         Quantile[NoncentralFRatioDistribution[n1_, n2_, lambda_], q_] :=
  564.                 NotImplemented /; False
  565.  
  566. NoncentralFRatioDistribution/:
  567.         Random[NoncentralFRatioDistribution[n1_, n2_, lambda_]] :=
  568.     With[{result = Quantile[NoncentralFRatioDistribution[n1,n2,lambda],
  569.             Random[]]},
  570.         If[NumberQ[N[result]],N[result],result]]
  571.  
  572. (* Gamma Distribution *)
  573.  
  574. GammaDistribution/: Domain[GammaDistribution[___]] := {0, Infinity}
  575.  
  576. GammaDistribution/: PDF[GammaDistribution[alpha_, beta_], x_] :=
  577.         With[{result = x^(alpha-1) Exp[-x/beta] / (beta^alpha Gamma[alpha])},
  578.     If[NumberQ[N[result]],N[result],result]]
  579.  
  580. GammaDistribution/: CDF[GammaDistribution[alpha_, beta_], x_] :=
  581.         With[{result= GammaRegularized[alpha, 0, x/beta]},
  582.     If[NumberQ[N[result]],N[result],result]]
  583.  
  584. GammaDistribution/: Mean[GammaDistribution[alpha_, beta_]] := alpha beta
  585.  
  586. GammaDistribution/: Variance[GammaDistribution[alpha_, beta_]] := alpha beta^2    
  587.  
  588. GammaDistribution/: StandardDeviation[GammaDistribution[alpha_, beta_]] :=
  589.     With[{result = beta Sqrt[alpha]},
  590.         If[NumberQ[N[result]],N[result],result]]
  591.  
  592. GammaDistribution/: Skewness[GammaDistribution[alpha_, beta_]] :=
  593.     With[{result = 2/Sqrt[alpha]},
  594.         If[NumberQ[N[result]],N[result],result]]
  595.  
  596. GammaDistribution/: Kurtosis[GammaDistribution[alpha_, beta_]] :=
  597.     With[{result = 6/alpha + 3},
  598.         If[NumberQ[N[result]],N[result],result]]
  599.  
  600. GammaDistribution/: KurtosisExcess[
  601.                         GammaDistribution[alpha_, beta_]] :=
  602.     With[{result = 6/alpha},
  603.         If[NumberQ[N[result]],N[result],result]]
  604.  
  605. GammaDistribution/: CharacteristicFunction[
  606.                         GammaDistribution[alpha_, beta_], t_] :=
  607.         With[{result =  (1 - I beta t)^(-alpha)},
  608.     If[NumberQ[N[result]],N[result],result]]
  609.  
  610. GammaDistribution/: Quantile[GammaDistribution[alpha_, beta_], q_] :=
  611.         beta InverseGammaRegularized[alpha, 0, q]//N
  612.  
  613. GammaDistribution/: Random[GammaDistribution[alpha_, beta_]] :=
  614.         beta InverseGammaRegularized[alpha, 0, Random[]]//N
  615.  
  616. (* Half-Normal Distribution *)
  617.  
  618. HalfNormalDistribution/: Domain[HalfNormalDistribution[___]] = {0, Infinity}
  619.  
  620. HalfNormalDistribution/: PDF[HalfNormalDistribution[theta_], x_] :=
  621.         With[{result = 2 theta Exp[- theta^2 x^2 / Pi] / Pi},
  622.     If[NumberQ[N[result]],N[result],result]]
  623.  
  624. HalfNormalDistribution/: CDF[HalfNormalDistribution[theta_], x_] :=
  625.         With[{result = Erf[theta x / Sqrt[Pi]]},
  626.     If[NumberQ[N[result]],N[result],result]]
  627.  
  628. HalfNormalDistribution/: Mean[HalfNormalDistribution[theta_]] := 1/theta 
  629.  
  630. HalfNormalDistribution/: Variance[
  631.                 HalfNormalDistribution[theta_]] :=
  632.     With[{result = (Pi-2) / (2 theta^2)},
  633.         If[NumberQ[N[result]],N[result],result]]
  634.  
  635. HalfNormalDistribution/: StandardDeviation[
  636.                 HalfNormalDistribution[theta_]] :=
  637.     With[{result = Sqrt[Pi/2-1]/theta},
  638.         If[NumberQ[N[result]],N[result],result]]
  639.  
  640. HalfNormalDistribution/: Skewness[HalfNormalDistribution[___]] :=
  641.         Sqrt[2] (4 - Pi) / Sqrt[Pi - 2]^3//N
  642.  
  643. HalfNormalDistribution/: Kurtosis[HalfNormalDistribution[___]] :=
  644.         (3 Pi^2 - 4 Pi - 12) / (Pi - 2)^2//N
  645.  
  646. HalfNormalDistribution/: KurtosisExcess[HalfNormalDistribution[___]] :=
  647.         (8 Pi - 24)/(Pi - 2)^2//N
  648.  
  649. HalfNormalDistribution/: CharacteristicFunction[
  650.                 HalfNormalDistribution[theta_], t_] :=
  651.         NotImplemented /; False
  652.  
  653. HalfNormalDistribution/: Quantile[HalfNormalDistribution[theta_], q_] :=
  654.     With[{result = Sqrt[Pi] InverseErf[q] / theta},
  655.         If[NumberQ[N[result]],N[result],result]]
  656.  
  657. HalfNormalDistribution/: Random[HalfNormalDistribution[theta_]] :=
  658.     With[{result = Sqrt[Pi] InverseErf[Random[]] / theta},
  659.         If[NumberQ[N[result]],N[result],result]]
  660.  
  661. (* Laplace (Double Exponential) Distribution *)
  662.  
  663. LaplaceDistribution/: Domain[LaplaceDistribution[___]] :=
  664.         {-Infinity, Infinity}
  665.  
  666. LaplaceDistribution/: PDF[LaplaceDistribution[mu_, beta_], x_] :=
  667.         With[{result = Exp[-Sign[x-mu] (x-mu)/beta] / (2 beta)},
  668.     If[NumberQ[N[result]],N[result],result]]
  669.  
  670. LaplaceDistribution/: CDF[LaplaceDistribution[mu_, beta_], x_] :=
  671.     With[{result=(1 + Sign[x-mu] (1 - Exp[-Sign[x-mu] (x-mu)/beta])) / 2},
  672.     If[NumberQ[N[result]],N[result],result]]
  673.  
  674. LaplaceDistribution/: Mean[LaplaceDistribution[mu_, ___]] := mu 
  675.  
  676. LaplaceDistribution/: Variance[LaplaceDistribution[_, beta_]] := 2 beta^2
  677.  
  678. LaplaceDistribution/: StandardDeviation[LaplaceDistribution[_, beta_]] :=
  679.     With[{result = Sqrt[2] beta},
  680.         If[NumberQ[N[result]],N[result],result]]
  681.  
  682. LaplaceDistribution/: Skewness[LaplaceDistribution[___]] := 0
  683.  
  684. LaplaceDistribution/: Kurtosis[LaplaceDistribution[___]] := 6 
  685.  
  686. LaplaceDistribution/: KurtosisExcess[LaplaceDistribution[___]] := 3 
  687.  
  688. LaplaceDistribution/: CharacteristicFunction[
  689.                           LaplaceDistribution[mu_, beta_], t_] :=
  690.         With[{result = Exp[I mu t]/(1 + beta^2 t^2)},
  691.     If[NumberQ[N[result]],N[result],result]]
  692.  
  693. LaplaceDistribution/: Quantile[LaplaceDistribution[mu_, beta_], q_] :=
  694.     With[{result = mu -
  695.         beta Sign[2 q - 1] Log[1 - Sign[2 q - 1] (2 q - 1)]},
  696.        If[NumberQ[N[result]],N[result],result]]
  697.  
  698. LaplaceDistribution/: Random[LaplaceDistribution[mu_, beta_]] :=
  699.     With[{result = Quantile[LaplaceDistribution[mu, beta], Random[]]},
  700.         If[NumberQ[N[result]],N[result],result]]
  701.  
  702. (* Log-Normal Distribution *)
  703.  
  704. LogNormalDistribution/: Domain[LogNormalDistribution[___]] = {0, Infinity}
  705.  
  706. LogNormalDistribution/: PDF[LogNormalDistribution[mu_, sigma_], x_] :=
  707.  With[{result=Exp[-(Log[x] - mu)^2 / (2 sigma^2)] / (Sqrt[2 Pi] sigma x)},
  708.     If[NumberQ[N[result]],N[result],result]]
  709.  
  710. LogNormalDistribution/: CDF[LogNormalDistribution[mu_, sigma_], x_] :=
  711.         With[{result = (Erf[(-mu + Log[x]) / (Sqrt[2] sigma)] + 1)/2},
  712.     If[NumberQ[N[result]],N[result],result]]
  713.  
  714. LogNormalDistribution/: Mean[LogNormalDistribution[mu_, sigma_]] :=
  715.     With[{result = Exp[mu + sigma^2/2]},
  716.         If[NumberQ[N[result]],N[result],result]]
  717.  
  718. LogNormalDistribution/: Variance[LogNormalDistribution[mu_, sigma_]] :=
  719.     With[{result = Exp[2 mu + sigma^2] (Exp[sigma^2] - 1)},
  720.         If[NumberQ[N[result]],N[result],result]]
  721.  
  722. LogNormalDistribution/: StandardDeviation[
  723.                 LogNormalDistribution[mu_, sigma_]] :=
  724.     With[{result = Sqrt[Exp[2 mu + sigma^2] (Exp[sigma^2] - 1)]},
  725.         If[NumberQ[N[result]],N[result],result]]
  726.  
  727. LogNormalDistribution/: Skewness[LogNormalDistribution[mu_, sigma_]] :=
  728.     With[{result = (Exp[sigma^2] + 2) Sqrt[Exp[sigma^2] - 1]},
  729.         If[NumberQ[N[result]],N[result],result]]
  730.  
  731. LogNormalDistribution/: Kurtosis[LogNormalDistribution[mu_, sigma_]] :=
  732.     With[{result = Exp[4 sigma^2] + 2 Exp[3 sigma^2] + 3 Exp[2 sigma^2]},
  733.         If[NumberQ[N[result]],N[result],result]]
  734.  
  735. LogNormalDistribution/: KurtosisExcess[LogNormalDistribution[mu_, sigma_]] :=
  736.    With[{result = Exp[4 sigma^2] + 2 Exp[3 sigma^2] + 3 Exp[2 sigma^2] - 3},
  737.     If[NumberQ[N[result]],N[result],result]]
  738.  
  739. LogNormalDistribution/: CharacteristicFunction[
  740.                 LogNormalDistribution[mu_, sigma_], t_] :=
  741.         NotImplemented /; False
  742.  
  743. LogNormalDistribution/: Quantile[LogNormalDistribution[mu_, sigma_], q_] :=
  744.     With[{result = Exp[InverseErf[2 q - 1] Sqrt[2] sigma + mu]},
  745.         If[NumberQ[N[result]],N[result],result]]
  746.  
  747. LogNormalDistribution/: Random[LogNormalDistribution[mu_, sigma_]] :=
  748.     With[{result = Exp[InverseErf[2 Random[] - 1] Sqrt[2] sigma + mu]},
  749.         If[NumberQ[N[result]],N[result],result]]
  750.  
  751. (* Logistic Distribution *)
  752.  
  753. LogisticDistribution/: Domain[LogisticDistribution[___]] =
  754.         {-Infinity, Infinity}
  755.  
  756. LogisticDistribution/: PDF[LogisticDistribution[mu_:0, beta_:1], x_] :=
  757.      With[{result = Exp[(x-mu)/beta]/(beta Sign[beta] 
  758.         (1 + Exp[(x-mu)/beta])^2)},
  759.     If[NumberQ[N[result]],N[result],result]]
  760.  
  761. LogisticDistribution/: CDF[LogisticDistribution[mu_:0, beta_:1], x_] :=
  762.         With[{result = 1/(1 + Exp[(mu - x)/beta Sign[beta]])},
  763.     If[NumberQ[N[result]],N[result],result]]
  764.  
  765. LogisticDistribution/: Mean[LogisticDistribution[mu_:0, ___]] := mu 
  766.  
  767. LogisticDistribution/: Variance[LogisticDistribution[_, beta_:1]] :=
  768.     With[{result = Pi^2 beta^2 / 3},
  769.         If[NumberQ[N[result]],N[result],result]]
  770.  
  771. LogisticDistribution/: StandardDeviation[LogisticDistribution[_, beta_:1]] :=
  772.     With[{result = Pi beta / Sqrt[3]},
  773.         If[NumberQ[N[result]],N[result],result]]
  774.  
  775. LogisticDistribution/: Skewness[LogisticDistribution[___]] := 0
  776.  
  777. LogisticDistribution/: Kurtosis[LogisticDistribution[___]] := 21/5 
  778.  
  779. LogisticDistribution/: KurtosisExcess[LogisticDistribution[___]] := 6/5 
  780.  
  781. LogisticDistribution/: CharacteristicFunction[
  782.                           LogisticDistribution[mu_:0, beta_:1], t_] :=
  783.         With[{result =  I Exp[I mu t] Pi beta t / Sin[I Pi beta t]},
  784.     If[NumberQ[N[result]],N[result],result]]
  785.  
  786. LogisticDistribution/: Quantile[LogisticDistribution[mu_:0, beta_:1], q_] :=
  787.     With[{result = mu - beta Sign[beta] Log[1-q] + beta Sign[beta] Log[q]},
  788.         If[NumberQ[N[result]],N[result],result]]
  789.  
  790. LogisticDistribution/: Random[LogisticDistribution[mu_:0, beta_:1]] :=
  791.     With[{result = Quantile[LogisticDistribution[mu, beta], Random[]]},
  792.         If[NumberQ[N[result]],N[result],result]]
  793.  
  794. (* NormalDistribution *)
  795. (* The normal distribution is defined in Statistics`NormalDistribution` *)
  796.  
  797. (* Rayleigh Distribution *)
  798.  
  799. RayleighDistribution/: Domain[RayleighDistribution[___]] :=
  800.         {0, Infinity}
  801.  
  802. RayleighDistribution/: PDF[RayleighDistribution[sigma_:1], x_] :=
  803.         With[{result =  x Exp[-x^2/(2 sigma^2)]/sigma^2},
  804.     If[NumberQ[N[result]],N[result],result]]
  805.  
  806. RayleighDistribution/: CDF[RayleighDistribution[sigma_:1], x_] :=
  807.         With[{result = 1 - Exp[- x^2 / (2 sigma^2)]},
  808.     If[NumberQ[N[result]],N[result],result]]
  809.  
  810. RayleighDistribution/: Mean[RayleighDistribution[sigma_:1]] :=
  811.     With[{result = sigma Sqrt[Pi/2]},
  812.         If[NumberQ[N[result]],N[result],result]]
  813.  
  814. RayleighDistribution/: Variance[RayleighDistribution[sigma_:1]] :=
  815.     With[{result = sigma^2 (2 - Pi/2)},
  816.         If[NumberQ[N[result]],N[result],result]]
  817.  
  818. RayleighDistribution/: StandardDeviation[RayleighDistribution[sigma_:1]] :=
  819.     With[{result = sigma Sqrt[2 - Pi/2]},
  820.         If[NumberQ[N[result]],N[result],result]]
  821.  
  822. RayleighDistribution/: Skewness[RayleighDistribution[___]] :=
  823.         (Pi - 3) Sqrt[Pi/2] / (2 - Pi/2)^(3/2)//N
  824.  
  825. RayleighDistribution/: Kurtosis[RayleighDistribution[___]] :=
  826.         (32 - 3 Pi^2)/(4 - Pi)^2//N
  827.  
  828. RayleighDistribution/: KurtosisExcess[RayleighDistribution[___]] =
  829.         (32 - 3 Pi^2)/(4 - Pi)^2 - 3//N
  830.  
  831. RayleighDistribution/: CharacteristicFunction[
  832.                            RayleighDistribution[sigma_:1], t_] :=
  833.     With[{result = 1 + I t sigma Sqrt[Pi/2] Exp[-t^2 sigma^2/2] *
  834.         Erf[-I t sigma/Sqrt[2],Infinity]},
  835.     If[NumberQ[N[result]],N[result],result]]
  836.  
  837.  
  838. RayleighDistribution/: Quantile[RayleighDistribution[sigma_:1], q_] :=
  839.     With[{result = sigma Sqrt[Log[1/(1-q)^2]]},
  840.         If[NumberQ[N[result]],N[result],result]]
  841.  
  842. RayleighDistribution/: Random[RayleighDistribution[sigma_:1]] :=
  843.     With[{result = sigma Sqrt[Log[1/Random[]^2]]},
  844.         If[NumberQ[N[result]],N[result],result]]
  845.  
  846. (* StudentTDistribution *)
  847. (* Student's t-distribution is defined in Statistics`NormalDistribution`. *)
  848.  
  849. (* Noncentral Student's t Distribution *)
  850.  
  851. NoncentralStudentTDistribution/:
  852.         Domain[NoncentralStudentTDistribution[___]] := {-Infinity, Infinity}
  853.  
  854. NoncentralStudentTDistribution/:
  855.         PDF[NoncentralStudentTDistribution[n_, delta_], x_] :=
  856.   With[{result =
  857.     Module[{com1, com2},
  858.         com1 = n + x^2;
  859.         com2 = delta^2 x^2 / (2 com1);
  860.         n! n^(n/2) / (2^n Gamma[n/2] Exp[delta^2/2]) (  
  861.             Sqrt[2] delta x com1^(-1 - n/2) / Gamma[(1 + n)/2] *
  862.                 Hypergeometric1F1[1 + n/2, 3/2, com2] +   
  863.             (n + x^2)^(-1/2 - n/2) / Gamma[1 + n/2] * 
  864.                 Hypergeometric1F1[(1 + n)/2, 1/2, com2]
  865.         )
  866.     ]},
  867.     If[NumberQ[N[result]],N[result],result]]
  868.  
  869. NoncentralStudentTDistribution/:
  870.         CDF[NoncentralStudentTDistribution[n_, delta_], x_] :=
  871.     Module[
  872.         {t, density},
  873.         density = PDF[NoncentralStudentTDistribution[n, delta], t];
  874.         If[NumberQ[n] && NumberQ[delta] && NumberQ[x],
  875.             Re[NIntegrate[density, {t, -Infinity, x}]],
  876.             Integrate[density, {t, 0, x}]
  877.         ]
  878.     ]    
  879.  
  880. NoncentralStudentTDistribution/:
  881.         Mean[NoncentralStudentTDistribution[n_, delta_]] :=
  882.             NotImplemented /; False
  883.  
  884. NoncentralStudentTDistribution/:
  885.         Variance[NoncentralStudentTDistribution[n_, delta_]] :=
  886.             NotImplemented /; False
  887.  
  888. NoncentralStudentTDistribution/:
  889.         StandardDeviation[NoncentralStudentTDistribution[n_, delta_]] :=
  890.             NotImplemented /; False 
  891.  
  892. NoncentralStudentTDistribution/:
  893.         Skewness[NoncentralStudentTDistribution[n_, delta_]] :=
  894.             NotImplemented /; False 
  895.  
  896. NoncentralStudentTDistribution/:
  897.         Kurtosis[NoncentralStudentTDistribution[n_, delta_]] :=
  898.             NotImplemented /; False 
  899.  
  900. NoncentralStudentTDistribution/:
  901.         KurtosisExcess[NoncentralStudentTDistribution[n_, delta_]] :=
  902.             NotImplemented /; False 
  903.  
  904. NoncentralStudentTDistribution/: CharacteristicFunction[
  905.         NoncentralStudentTDistribution[n_, delta_], t_] :=
  906.                 NotImplemented /; False
  907.  
  908. NoncentralStudentTDistribution/:
  909.         Quantile[NoncentralStudentTDistribution[n_, delta_], q_] :=
  910.                 NotImplemented /; False
  911.  
  912. NoncentralStudentTDistribution/:
  913.         Random[NoncentralStudentTDistribution[n_, delta_]] :=
  914.     With[{result = Quantile[NoncentralStudentTDistribution[n,delta],
  915.         Random[]]},
  916.         If[NumberQ[N[result]],N[result],result]]
  917.  
  918. (* Uniform Distribution *)
  919.  
  920. UniformDistribution/: Domain[UniformDistribution[min_:0, max_:1]] :=
  921.         {min, max}
  922.  
  923. UniformDistribution/: PDF[UniformDistribution[min_:0, max_:1], x_] :=
  924.         With[{result = (Sign[x-min] - Sign[x-max])/(2 (max - min))},
  925.     If[NumberQ[N[result]],N[result],result]]
  926.  
  927. UniformDistribution/: CDF[UniformDistribution[min_:0, max_:1], x_] :=
  928.         With[{result = 
  929.      (1+Sign[x-min] (x-min)/(max-min)-(max-x) Sign[max-x]/(max-min))/2},
  930.     If[NumberQ[N[result]],N[result],result]]
  931.  
  932. UniformDistribution/: Mean[UniformDistribution[min_:0, max_:1]] := (max+min)/2
  933.  
  934. UniformDistribution/: Variance[UniformDistribution[min_:0, max_:1]] :=
  935.     (max-min)^2 / 12
  936.  
  937. UniformDistribution/: StandardDeviation[UniformDistribution[min_:0, max_:1]] :=
  938.     With[{result = (max-min)/Sqrt[12]},
  939.         If[NumberQ[N[result]],N[result],result]]
  940.  
  941. UniformDistribution/: Skewness[UniformDistribution[___]] = 0
  942.  
  943. UniformDistribution/: Kurtosis[UniformDistribution[___]] = 9/5 
  944.  
  945. UniformDistribution/: KurtosisExcess[UniformDistribution[___]] = -6/5 
  946.  
  947. UniformDistribution/: CharacteristicFunction[
  948.                 UniformDistribution[min_:0, max_:1], t_] :=
  949.         With[{result = (Exp[I max t] - Exp[I min t])/((max - min) I t)},
  950.     If[NumberQ[N[result]],N[result],result]]
  951.  
  952. UniformDistribution/: Quantile[UniformDistribution[min_:0, max_:1], q_] :=
  953.     With[{result = q Max[min, max] + (1-q) Min[min, max]},
  954.         If[NumberQ[N[result]],N[result],result]]
  955.  
  956. UniformDistribution/: Random[UniformDistribution[min_:0, max_:1]] :=
  957.     If[NumberQ[N[min]] && NumberQ[N[max]],
  958.             Random[Real, {N[min], N[max]}],
  959.         Quantile[UniformDistribution[min,max],Random[]] ]
  960.  
  961. (* Weibull Distribution *)
  962.  
  963. WeibullDistribution/: Domain[WeibullDistribution[___]] = {0, Infinity}
  964.  
  965. WeibullDistribution/: PDF[WeibullDistribution[alpha_, beta_], x_] :=
  966.         With[{result = alpha x^(alpha-1) Exp[-(x/beta)^alpha] / beta^alpha
  967.  },    If[NumberQ[N[result]],N[result],result]]
  968.  
  969. WeibullDistribution/: CDF[WeibullDistribution[alpha_, beta_], x_] :=
  970.         With[{result = 1 - Exp[-(x/beta)^alpha]},
  971.     If[NumberQ[N[result]],N[result],result]]
  972.  
  973. WeibullDistribution/: Mean[WeibullDistribution[alpha_, beta_]] :=
  974.     With[{result = beta Gamma[1+1/alpha]},
  975.         If[NumberQ[N[result]],N[result],result]]
  976.  
  977. WeibullDistribution/: Variance[WeibullDistribution[alpha_, beta_]] :=
  978.     With[{result = beta^2 (Gamma[1+2/alpha] - Gamma[1+1/alpha]^2)},
  979.         If[NumberQ[N[result]],N[result],result]]
  980.  
  981. WeibullDistribution/: StandardDeviation[
  982.                 WeibullDistribution[alpha_, beta_]] :=
  983.     With[{result = beta Sqrt[Gamma[1+2/alpha] - Gamma[1+1/alpha]^2]},
  984.         If[NumberQ[N[result]],N[result],result]]
  985.  
  986. WeibullDistribution/: Skewness[WeibullDistribution[alpha_, beta_]] :=
  987.     With[{result =
  988.             (Gamma[1+3/alpha] - 3 Gamma[1+1/alpha] Gamma[1+2/alpha] +
  989.                     2 Gamma[1+1/alpha]^3 ) /
  990.                 (Gamma[1+2/alpha] - Gamma[1+1/alpha]^2)^(3/2)},
  991.         If[NumberQ[N[result]],N[result],result]]
  992.  
  993. WeibullDistribution/: Kurtosis[WeibullDistribution[alpha_, beta_]] :=
  994.     With[{result =
  995.             (Gamma[1+4/alpha] - 4 Gamma[1+1/alpha] Gamma[1+3/alpha] +
  996.                     6 Gamma[1+1/alpha]^2 Gamma[1+2/alpha] -
  997.                     3 Gamma[1+1/alpha]^4) /
  998.                 (Gamma[1+2/alpha] - Gamma[1+1/alpha]^2)^2},
  999.         If[NumberQ[N[result]],N[result],result]]
  1000.  
  1001. WeibullDistribution/: KurtosisExcess[WeibullDistribution[alpha_, beta_]] :=
  1002.     With[{result =
  1003.             (Gamma[1+4/alpha] - 4 Gamma[1+1/alpha] Gamma[1+3/alpha] +
  1004.                     6 Gamma[1+1/alpha]^2 Gamma[1+2/alpha] -
  1005.                     3 Gamma[1+1/alpha]^4) /
  1006.                 (Gamma[1+2/alpha] - Gamma[1+1/alpha]^2)^2 - 3},
  1007.         If[NumberQ[N[result]],N[result],result]]
  1008.  
  1009. WeibullDistribution/: CharacteristicFunction[
  1010.         WeibullDistribution[alpha_, beta_], t_] :=
  1011.                 NotImplemented /; False
  1012.  
  1013. WeibullDistribution/: Quantile[WeibullDistribution[alpha_, beta_], q_] :=
  1014.     With[{result = beta (-Log[1 - q])^(1/alpha)},
  1015.         If[NumberQ[N[result]],N[result],result]]
  1016.  
  1017. WeibullDistribution/: Random[WeibullDistribution[alpha_, beta_]] :=
  1018.     With[{result = beta Log[1/Random[]]^(1/alpha)},
  1019.         If[NumberQ[N[result]],N[result],result]]
  1020.  
  1021. End[]
  1022.  
  1023. SetAttributes[ BetaDistribution,ReadProtected];
  1024. SetAttributes[CauchyDistribution ,ReadProtected];
  1025. SetAttributes[ChiDistribution ,ReadProtected];
  1026. SetAttributes[ NoncentralChiSquareDistribution,ReadProtected];
  1027. SetAttributes[ ExponentialDistribution,ReadProtected];
  1028. SetAttributes[ ExtremeValueDistribution,ReadProtected];
  1029. SetAttributes[NoncentralFRatioDistribution ,ReadProtected];
  1030. SetAttributes[ GammaDistribution,ReadProtected];
  1031. SetAttributes[HalfNormalDistribution ,ReadProtected];
  1032. SetAttributes[LaplaceDistribution ,ReadProtected];
  1033. SetAttributes[LogNormalDistribution ,ReadProtected];
  1034. SetAttributes[LogisticDistribution ,ReadProtected];
  1035. SetAttributes[RayleighDistribution ,ReadProtected];
  1036. SetAttributes[NoncentralStudentTDistribution ,ReadProtected];
  1037. SetAttributes[UniformDistribution ,ReadProtected];
  1038. SetAttributes[WeibullDistribution ,ReadProtected];
  1039.  
  1040.  
  1041. Protect[BetaDistribution,CauchyDistribution,ChiDistribution,
  1042.     NoncentralChiSquareDistribution,ExponentialDistribution, 
  1043.     ExtremeValueDistribution,NoncentralFRatioDistribution,
  1044.     GammaDistribution,HalfNormalDistribution, LaplaceDistribution,
  1045.     LogNormalDistribution,LogisticDistribution,
  1046.     RayleighDistribution,NoncentralStudentTDistribution, 
  1047.     UniformDistribution, WeibullDistribution];
  1048.  
  1049. EndPackage[]
  1050.