We continue with the distributions as promised on last blog issue:
Beta Distribution:
EXPORT betad(a, b, n)
// Beta distribution: a=α>0, b=β>0 shape param, n var (0<=n<=1)
BEGIN
local f;
f:= piecewise(n<0 ,0, n>=1, 0, (1/Beta(a,b))*(n(a-1))*(1-n)(b–1));
return f;
END;
EXPORT betad_cdf(a, b, n)
BEGIN
local f, b1;
b1:= int((X(a-1))*(1-X)(b–1),X,0,n);
// incomplete beta function
f:=piecewise(n<0,0,n>=1, 0, b1/Beta(a,b));
return f;
END;
Gamma distribution
EXPORT gammad(a,l,n)
// Gamma distributio 1st formn a=α>0 shape param
// l=λ>0 rate param, n var
BEGIN
local f;
f:= piecewise( n<0,0, (l*e(-l*n)*(l*n)(a–1))/Gamma(a) );
END;
EXPORT gammad_cdf(a,l,n)
BEGIN
local f;
f:= int(X(a-1)*e(-X),X,0,l*n)/Gamma(a);
return f;
END ;
EXPORT gammad2(k,t,n)
// Gamma distribution 2nd form k>0 shape param,
// t=θ>0 scale param, n var
BEGIN
local f;
f:=piecewise(n<0,0, (n(k-1)*e(-n/t)) / ((tk) * Gamma(k)) );
return f;
END;
EXPORT gammad2_cdf(k,t,n)
BEGIN
local f;
f:= int(X(k-1)*e(-X),X,0,n/t)/Gamma(k);
return f;
END ;
Zeta distribution
EXPORT Zetazipf(s, k)
// Zeta (Zipf) distribution, not defined in s=1
BEGIN
local f;
IF s=1 THEN return “Not defined in s=1”; ELSE
f:= (k^(-s))/Zeta(s);
return f;
END; //if
END;
EXPORT Zetazipf_cdf(s,k)
BEGIN
local f, hks;
hks:= sum(1/(Xs), X, 1, k);
// nth generalized armonic number
f:= hks/Zeta(s);
return f;
END;
Laplace distribution:
EXPORT laplaced(m,b,n)
// Laplace distribution m=μ location param, b scale param, n var
// if m=0 and b=1 -> expond scaled by 1/2
BEGIN
local f;
f:= (1/(2b))e^(-(ABS(n-m))/b);
return f;
END;
EXPORT laplaced_cdf(m,b,n)
BEGIN
local f;
f := piecewise(n<n, (1/2)*e((n-m)/b), 1-(1/2)*e(-(n-m)/b));
return f;
END ;
Uniform Distribution
EXPORT uniformd(a,b,n)
// Uniform, distribution [a-b], n var
BEGIN
local f:= piecewise(n>=a AND n<=b, 1/(b-a), 0);
return f;
END;
EXPORT uniformd_cdf(a,b,n)
BEGIN
local f:= piecewise(n<a, 0, n≥b, 1, (n-a)/(b-a));
return f;
END;
start: postbit_signature
Multinomial Distribution:
The multinomial distribution is a generalization of the binomial distribution. For n independent trials each of which leads to a success for exactly one of k categories, with each category having a given fixed success probability, the multinomial distribution gives the probability of any particular combination of numbers of successes for the various categories.
EXPORT Multinomd(n, k, p)
// Multinomial distribution (n>0,{list k_i}, {list p_i})
BEGIN
IF ((type(k) ≠ 6) OR (type(p) ≠ 6)) THEN
return “2nd and 3th argument must be a list”; ELSE
IF n<1 THEN return “n must be >0”; END;
n:= ip(n); //n must be integer
IF (size(k) ≠ size(p) ) THEN return “items in k must be = those in p”; END;
IF (ΣList(k) ≠ n) THEN return “ΣList(k) must be = n”; END;
IF (ΣList(p) > 1) THEN return “ΣList(p) must be <= 1”; END;
// ΣList(p) should be = 1 but we can use in list k only values with no 0
//so items in p could be less than those in k…
return (n!/ΠLIST(k!))*ΠLIST(pk);
END; // if
END;