Double-Double Statistic Implements
.NET 8.0
DoubleDouble
DoubleDoubleComplex
Algebra
category | distribution | CDF | quantile | statistic | fitting | random generation | note | |
---|---|---|---|---|---|---|---|---|
stable | cauchy | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
delta | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
holtsmark | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
landau | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
levy | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
map-airy | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
normal | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
sas point5 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
linearity | cosine | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
davis | ✔ | ⚠ | ⚠ | ✔ | ⚠ | ✔ | CDF and Quantile take longer to calculate. | |
frechet | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
gumbel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
johnson sb | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
johnson su | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
laplace | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
logistic | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
skew cauchy | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
skew normal | ✔ | ✔ | ⚠ | ✔ | ⚠ | ✔ | Quantile take longer to calculate. | |
uniform | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
u quadratic | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
weibull | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
scalable | benini | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
birnbaum saunders | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
exponential | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
folded normal | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
gamma | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
gompertz | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
half cauchy | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
half logistic | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
half normal | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
hyperbolic secant | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
inverse gauss | ✔ | ✔ | ⚠ | ✔ | ⚠ | ✔ | Quantile take longer to calculate. | |
log logistic | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
lomax | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
maxwell | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
q-exponential | ⚠ | ⚠ | ✔ | ✔ | ✔ | ✔ | Accuracy decreases when q is nearly 2. | |
q-gaussian | ⚠ | ⚠ | ✔ | ✔ | ✔ | ✔ | Accuracy decreases when q is nearly 3. | |
pareto | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
rayleigh | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
voigt | ✔ | ⚠ | ⚠ | ✔ | ⚠ | ✔ | CDF and Quantile take longer to calculate. | |
wigner semicircle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
continuous | alpha | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
arcsine | ✔ | ✔ | ✔ | ✔ | - | ✔ | ||
argus | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
benktander | ✔ | ✔ | ⚠ | ✔ | ⚠ | ✔ | Quantile take longer to calculate. | |
bates | ✔ | ✔ | ✔ | ✔ | - | ✔ | n ≤ 128 | |
beta | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
beta prime | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
bradford | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
burr | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
chi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
chi square | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
dagum | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
fisher z | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
fisk | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
hotelling t sq | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
inverse gamma | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
inverse chi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
inverse chi sq | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
irwin hall | ✔ | ✔ | ✔ | ✔ | - | ✔ | n ≤ 128 | |
kumaraswamy | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
log normal | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
nakagami | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
noncentral beta | ✔ | ✔ | ⚠ | ✔ | ❌ | ✔ | Accuracy decreases when non-centricity is large. | |
noncentral chi sq | ✔ | ✔ | ⚠ | ✔ | ❌ | ✔ | Accuracy decreases when non-centricity is large. | |
noncentral f | ✔ | ✔ | ⚠ | ✔ | ❌ | ✔ | Accuracy decreases when non-centricity is large. | |
noncentral t | ✔ | ✔ | ⚠ | ✔ | ❌ | ✔ | Accuracy decreases when non-centricity is large. | |
power | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
reciprocal | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
rice | ✔ | ⚠ | ⚠ | ✔ | ⚠ | ✔ | CDF and Quantile take longer to calculate. | |
snedecor f | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
student t | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
trapezoid | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ||
triangular | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ||
tukey lambda | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
category | distribution | PMF | statistic | fitting | random generation | note |
---|---|---|---|---|---|---|
discrete | bernoulli | ✔ | ✔ | ✔ | ✔ | |
benford | ✔ | ✔ | - | ✔ | ||
binary | ✔ | ✔ | - | ✔ | ||
binomial | ✔ | ✔ | ✔ | ✔ | ||
categorical | ✔ | ✔ | - | ✔ | ||
discrete uniform | ✔ | ✔ | ✔ | ✔ | ||
gausskuzmin | ✔ | ✔ | - | ✔ | ||
geometric | ✔ | ✔ | ✔ | ✔ | ||
hyper geometric | ✔ | ✔ | - | ✔ | ||
logarithmic | ✔ | ✔ | ✔ | ✔ | ||
negative binomial | ✔ | ✔ | ✔ | ✔ | ||
pascal | ✔ | ✔ | ✔ | ✔ | ||
poisson | ✔ | ✔ | ✔ | ✔ | ||
skellam | ✔ | ✔ | ✔ | ✔ | ||
yule simon | ✔ | ✔ | ✔ | ✔ | ||
zipf | ✔ | ✔ | ✔ | ✔ |
category | distribution | statistic | fitting | random generation | note | |
---|---|---|---|---|---|---|
directional | circular cauchy | ✔ | ⚠ | ✔ | ✔ | Not implemented: kurtosis |
von mises | ✔ | ⚠ | ✔ | ✔ | Not implemented: kurtosis | |
sphere uniform | ✔ | ⚠ | - | ✔ | Not implemented: kurtosis | |
von mises fisher | ✔ | ⚠ | ✔ | ✔ | Dim=3, Not implemented: kurtosis |
category | distribution | statistic | fitting | random generation | note | |
---|---|---|---|---|---|---|
multivariate | ball uniform | ✔ | ✔ | - | ✔ | |
dirichlet | ✔ | ✔ | ✔ | ✔ | ||
disk uniform | ✔ | ✔ | - | ✔ | ||
multi normal | ✔ | ✔ | ✔ | ✔ |
NormalDistribution dist = new(mu: 1, sigma: 3);
// PDF
for (ddouble x = -4; x <= 4; x += 0.125) {
ddouble pdf = dist.PDF(x);
Console.WriteLine($"pdf({x})={pdf}");
}
// CDF
for (ddouble x = -4; x <= 4; x += 0.125) {
ddouble ccdf = dist.CDF(x, Interval.Upper);
Console.WriteLine($"ccdf({x})={ccdf}");
}
// Quantile
for (int i = 0; i <= 10; i++) {
ddouble p = (ddouble)i / 10;
ddouble x = dist.Quantile(p, Interval.Upper);
Console.WriteLine($"cquantile({p})={x}");
}
// Statistic
Console.WriteLine($"Support={dist.Support}");
Console.WriteLine($"Mu={dist.Mu}");
Console.WriteLine($"Sigma={dist.Sigma}");
Console.WriteLine($"Mean={dist.Mean}");
Console.WriteLine($"Median={dist.Median}");
Console.WriteLine($"Mode={dist.Mode}");
Console.WriteLine($"Variance={dist.Variance}");
Console.WriteLine($"Skewness={dist.Skewness}");
Console.WriteLine($"Kurtosis={dist.Kurtosis}");
Console.WriteLine($"Entropy={dist.Entropy}");
// Random Sampling
Random random = new(1234);
double[] xs = dist.Sample(random, 100000).ToArray();
// Fitting
// note: The distribution that minimizes the squared error
// of the quantile function over the specified interval is return.
(NormalDistribution? dist_fit, ddouble error) =
NormalDistribution.Fit(xs, fitting_quantile_range: (0.1, 0.9));
category | symbol | note |
---|---|---|
support parameter | k | |
a, b | uniform | |
a, b, c | triangular | |
shape parameter | alpha | |
alpha, beta | beta, beta prime | |
gamma, delta | johnson sb, su | |
eta | gompertz | |
nu | chi, chisq, student t | |
n | irwin hall | |
n, m | fisher z, snedecor f | |
c | stable distributions | |
location parameter | mu | |
scale parameter | sigma | error-related distributions |
theta | time-related distributions | |
s, r | otherwise | |
non-centricity parameter | lambda | |
mu | non-central student t |