Approximations based on the central \(t\), \(F\) or beta distribution#

Dunn-Šidák percentage points#

ctx.dunn_sidak_qtf(q, nu, C)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns the percentage points of Dunn-Šidák.

See also: Kirk, Games.

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.dunn_sidak_qtf(x, nu, nc); mx = mpm.dunn_sidak_qtf(x, nu, nc)
>>> ix = ipm.dunn_sidak_qtf(x, nu, nc); fx = fpm.dunn_sidak_qtf(x, nu, nc)
>>> gx = gmp.dunn_sidak_qtf(x, nu, nc); ax = apm.dunn_sidak_qtf(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Singly non-central Fisher F distribution: cdf, sf (Patnaik)#

ctx.fisher_f_nc_mu2_cdf(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns an approximation to the cdf of the noncentral Fisher F distribution.

[Patnaik1949` suggests the following approximation, see also Tiku [854]:

\[F_{F'}(x;n_1,n_2,\lambda) \thickapprox F_F\left(y; m_1, n_2\right), \quad \text{where}\]

\(A_1=(n_1+\lambda)\),

\(B_1=(n_1+2\lambda)\),

\(m_1= A_1^2/B_1\),

\(y=n_1/A_1\),

and \(F_F\left(\cdot; m_1, n_2\right)\) denotes the CDF of a central \(F\) distribution with \(m_1\) and \(n_2\) degrees of freedom.

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.fisher_f_nc_mu2_cdf(x, nu, nc); mx = mpm.fisher_f_nc_mu2_cdf(x, nu, nc)
>>> ix = ipm.fisher_f_nc_mu2_cdf(x, nu, nc); fx = fpm.fisher_f_nc_mu2_cdf(x, nu, nc)
>>> gx = gmp.fisher_f_nc_mu2_cdf(x, nu, nc); ax = apm.fisher_f_nc_mu2_cdf(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Singly non-central F distribution: qtf, isf (Patnaik)#

ctx.fisher_f_nc_mu2_qtf(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns an approximation to \(F_{\alpha,n_1,n_2,\lambda}\), the \(\alpha\)-quantile of a non-central F-distribution with \(n_1\) and \(n_2\) degress of freedom and noncentrality parameter \(\lambda\).

\[F_{\alpha,n_1,n_2,\lambda} \thickapprox c \cdot F_{\alpha,m_1,n_2,}\]

\(A_1=(n_1+\lambda)\),

\(B_1=(n_1+2\lambda)\),

\(m_1= A_1^2/B_1\),

\(c=A_1/n_1\),

and \(F_{\alpha,m_1,n_2,}\) denotes the \(\alpha\)-quantile of a central \(F\)-distribution with \(m_1\) and \(n_2\) degress of freedom.

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.fisher_f_nc_mu2_qtf(x, nu, nc); mx = mpm.fisher_f_nc_mu2_qtf(x, nu, nc)
>>> ix = ipm.fisher_f_nc_mu2_qtf(x, nu, nc); fx = fpm.fisher_f_nc_mu2_qtf(x, nu, nc)
>>> gx = gmp.fisher_f_nc_mu2_qtf(x, nu, nc); ax = apm.fisher_f_nc_mu2_qtf(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Singly non-central F: confidence interval for the noncentrality parameter \(\lambda\)#

ctx.fisher_f_nc_mu2_cl(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns an approximation to the confidence interval (CI) for the noncentrality parameter \(\lambda\) of a singly non-central F-distribution.

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.fisher_f_nc_mu2_cl(x, nu, nc); mx = mpm.fisher_f_nc_mu2_cl(x, nu, nc)
>>> ix = ipm.fisher_f_nc_mu2_cl(x, nu, nc); fx = fpm.fisher_f_nc_mu2_cl(x, nu, nc)
>>> gx = gmp.fisher_f_nc_mu2_cl(x, nu, nc); ax = apm.fisher_f_nc_mu2_cl(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Doubly non-central F distribution: cdf, sf (Patnaik)#

ctx.fisher_f_nc2_mu2_cdf(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns an approximation to the cdf of the doubly noncentral Fisher F distribution.

Mudholkar (1976) suggests an approximation by noncentral \(F\), which can be converted into an approximation by central \(F\) as follows:

\[F_{F''}(x;n_1,n_2,\lambda_1,\lambda_2) \thickapprox F_F\left(y; m_1, m_2\right), \quad \text{where}\]

\(A_1=(n_1+\lambda_1), A_2=(n_2+\lambda_2)\),

\(B_1=(n_1+2\lambda_1), B_2=(n_2+2\lambda_2)\),

\(m_1= A_1^2/B_1, m_2= A_2^2/B_2\),

\(y= x (n_1 A_2)/(n_2 A_1)\),

and \(F_F\left(\cdot; m_1, m_2\right)\) denotes the CDF of a central \(F\) distribution with \(m_1\) and \(m_2\) degrees of freedom.

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.fisher_f_nc2_mu2_cdf(x, nu, nc); mx = mpm.fisher_f_nc2_mu2_cdf(x, nu, nc)
>>> ix = ipm.fisher_f_nc2_mu2_cdf(x, nu, nc); fx = fpm.fisher_f_nc2_mu2_cdf(x, nu, nc)
>>> gx = gmp.fisher_f_nc2_mu2_cdf(x, nu, nc); ax = apm.fisher_f_nc2_mu2_cdf(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Doubly non-central F distribution: qtf, isf (Patnaik)#

ctx.fisher_f_nc2_mu2_qtf(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns an approximation to \(F_{\alpha,n_1,n_2,\lambda_1,\lambda_2}\), the \(\alpha\)-quantile of a doubly non-central F-distribution with \(n_1\) and \(n_2\) degress of freedom and noncentrality parameters \(\lambda_1\) and \(\lambda_2\), is obtained as

\[F_{\alpha,n_1,n_2,\lambda_1,\lambda_2} \thickapprox c \cdot F_{\alpha,m_1,m_2,}\]

\(A_1=(n_1+\lambda_1), A_2=(n_1+\lambda_2)\),

\(B_1=(n_1+2\lambda_1), B_2=(n_1+2\lambda_2)\),

\(m_1= A_1^2/B_1, m_2= A_2^2/B_2\),

\(c=(n_2 A_1)/(n_1 A_2)\),

and denotes the \(\alpha\)-quantile of a central \(F\)-distribution with \(m_1\) and \(m_2\) degress of freedom.

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.fisher_f_nc2_mu2_qtf(x, nu, nc); mx = mpm.fisher_f_nc2_mu2_qtf(x, nu, nc)
>>> ix = ipm.fisher_f_nc2_mu2_qtf(x, nu, nc); fx = fpm.fisher_f_nc2_mu2_qtf(x, nu, nc)
>>> gx = gmp.fisher_f_nc2_mu2_qtf(x, nu, nc); ax = apm.fisher_f_nc2_mu2_qtf(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Multiple correlation coefficient: cdf, sf (Lee and Gurland)#

ctx.fisher_r2_lee_cdf(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns an approximation to the cdf of the Fisher \(R^2\) distribution.

See also Lee [429], Gurland [373], Gurland and Milton [375].

\[F_{F'}(x;n_1,n_2,\rho^2) \thickapprox F_F\left(x/c; m_1, n_2\right),\]

where \(c=A_1/n_1\), \(m_1= A_1^2/A_2\), \(A_1=(n_1+n_2) (\gamma-1)+n_1\), \(A_2=(n_1+n_2) (\gamma^2-1)+n_1\), \(\gamma=1/(1-\rho^2)\), and \(F_F\left(\cdot; m_1, n_2\right)\) denotes the CDF of a central \(F\) distribution with \(m_1\) and \(n_2\) degrees of freedom.

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.fisher_r2_lee_cdf(x, nu, nc); mx = mpm.fisher_r2_lee_cdf(x, nu, nc)
>>> ix = ipm.fisher_r2_lee_cdf(x, nu, nc); fx = fpm.fisher_r2_lee_cdf(x, nu, nc)
>>> gx = gmp.fisher_r2_lee_cdf(x, nu, nc); ax = apm.fisher_r2_lee_cdf(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Multiple correlation coefficient: qtf, isf (Lee and Gurland)#

ctx.fisher_r2_lee_qtf(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns an approximation to the qtf of the Fisher \(R^2\) distribution.

See also Lee [429], Gurland [373], Gurland and Milton [375].

\[F_{F'}(x;n_1,n_2,\rho^2) \thickapprox F_F\left(x/c; m_1, n_2\right),\]

where \(c=A_1/n_1\), \(m_1= A_1^2/A_2\), \(A_1=(n_1+n_2) (\gamma-1)+n_1\), \(A_2=(n_1+n_2) (\gamma^2-1)+n_1\), \(\gamma=1/(1-\rho^2)\), and \(F_F\left(\cdot; m_1, n_2\right)\) denotes the CDF of a central \(F\) distribution with \(m_1\) and \(n_2\) degrees of freedom.

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.fisher_r2_lee_qtf(x, nu, nc); mx = mpm.fisher_r2_lee_qtf(x, nu, nc)
>>> ix = ipm.fisher_r2_lee_qtf(x, nu, nc); fx = fpm.fisher_r2_lee_qtf(x, nu, nc)
>>> gx = gmp.fisher_r2_lee_qtf(x, nu, nc); ax = apm.fisher_r2_lee_qtf(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Fisher \(R^2\),: confidence limit for \(\rho^2\)#

ctx.fisher_r2_lee_cl(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns an approximation to the confidence interval (CI) for the noncentrality parameter \(\rho^2\) of Fisher \(R^2\) distribution.

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.fisher_r2_lee_cl(x, nu, nc); mx = mpm.fisher_r2_lee_cl(x, nu, nc)
>>> ix = ipm.fisher_r2_lee_cl(x, nu, nc); fx = fpm.fisher_r2_lee_cl(x, nu, nc)
>>> gx = gmp.fisher_r2_lee_cl(x, nu, nc); ax = apm.fisher_r2_lee_cl(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Central Wilks’ Lambda: cdf, sf (Rao)#

ctx.wilks_lambda_rao_cdf(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns Rao’s F approximation to the cdf of Wilk’s \(\Lambda\)

Define

\[z = \frac{1-\Lambda^{1/r}}{\Lambda^{1/r}} \frac{rt-2u}{pq}, \quad \text{where } r = v - \frac{p-q+1}{2}, u = \frac{pq-2}{4}, \quad \text{and }\]
\[t=\sqrt{\frac{p^2 q^2 -4}{p^2 + q^2 -5}} \text{ if } p^2 + q^2 - 5 > 0 \text{ or } 1 \text{ otherwise.}\]

Then \(z\) is approximately distributed as \(F(z; pq, rt-2u)\).

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.wilks_lambda_rao_cdf(x, nu, nc); mx = mpm.wilks_lambda_rao_cdf(x, nu, nc)
>>> ix = ipm.wilks_lambda_rao_cdf(x, nu, nc); fx = fpm.wilks_lambda_rao_cdf(x, nu, nc)
>>> gx = gmp.wilks_lambda_rao_cdf(x, nu, nc); ax = apm.wilks_lambda_rao_cdf(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Central Wilks’ Lambda: qtf, isf (Rao)#

ctx.wilks_lambda_rao_qtf(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns Rao’s F approximation to the cdf of Wilk’s \(\Lambda\)

Define

\[z = \frac{1-\Lambda^{1/r}}{\Lambda^{1/r}} \frac{rt-2u}{pq}, \quad \text{where } r = v - \frac{p-q+1}{2}, u = \frac{pq-2}{4}, \quad \text{and }\]
\[t=\sqrt{\frac{p^2 q^2 -4}{p^2 + q^2 -5}} \text{ if } p^2 + q^2 - 5 > 0 \text{ or } 1 \text{ otherwise.}\]

Then \(z\) is approximately distributed as \(F(z; pq, rt-2u)\).

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.wilks_lambda_rao_qtf(x, nu, nc); mx = mpm.wilks_lambda_rao_qtf(x, nu, nc)
>>> ix = ipm.wilks_lambda_rao_qtf(x, nu, nc); fx = fpm.wilks_lambda_rao_qtf(x, nu, nc)
>>> gx = gmp.wilks_lambda_rao_qtf(x, nu, nc); ax = apm.wilks_lambda_rao_qtf(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Central Hotelling’s \(T^2\): cdf, sf (Pillai and Young)#

ctx.hotelling_t2_mu3_cdf(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns an approximation to the cdf of the central Hotelling’s \(T^2\) distribution. See also Pillai and Young [496].

Let \(m=(n_1-p-1)/2\), \(n=(n_2-p-1)/2\), and \(r = 2m + p +1\). Define

\[\mu_1 = \frac{pr}{2n}, \quad \mu_2 = \mu_1 \frac{(2n+r)(2n+p)}{2n(n-1)(2n+1)}, \quad \mu_3 = \mu_2 \frac{2(n+r)(n+p)}{n(n-2)(n+1)},\]
\[a= \frac{(2\mu_13\mu_2+3\mu_1^2\mu_3-6\mu_1\mu_2^2-\mu_2\mu_3)}{(\mu_2\mu_3+4\mu_1\mu_2^2-\mu_1^2\mu_3)}+1, \quad b= \frac{a(a+2)-\mu_1^2/\mu_2}{a-\mu_1^2/\mu_2} - a,\]
\[K= \frac{\mu_1(b-1)}{a}, \quad w=\frac{x}{x+K}.\]

Then \(x=T^2/n_2\) is approximately distributed as \(I_w(a,b)\).

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.hotelling_t2_mu3_cdf(x, nu, nc); mx = mpm.hotelling_t2_mu3_cdf(x, nu, nc)
>>> ix = ipm.hotelling_t2_mu3_cdf(x, nu, nc); fx = fpm.hotelling_t2_mu3_cdf(x, nu, nc)
>>> gx = gmp.hotelling_t2_mu3_cdf(x, nu, nc); ax = apm.hotelling_t2_mu3_cdf(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Central Hotelling’s \(T^2\): qtf, isf (Pillai and Young)#

ctx.hotelling_t2_mu3_qtf(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns an approximation to the qtf of the central Hotelling’s \(T^2\) distribution, based on matching the first 3 moments.. See also Pillai and Young [496].

Let \(m=(n_1-p-1)/2\), \(n=(n_2-p-1)/2\), and \(r = 2m + p +1\). Define

\[\mu_1 = \frac{pr}{2n}, \quad \mu_2 = \mu_1 \frac{(2n+r)(2n+p)}{2n(n-1)(2n+1)}, \quad \mu_3 = \mu_2 \frac{2(n+r)(n+p)}{n(n-2)(n+1)},\]
\[a= \frac{(2\mu_13\mu_2+3\mu_1^2\mu_3-6\mu_1\mu_2^2-\mu_2\mu_3)}{(\mu_2\mu_3+4\mu_1\mu_2^2-\mu_1^2\mu_3)}+1, \quad b= \frac{a(a+2)-\mu_1^2/\mu_2}{a-\mu_1^2/\mu_2} - a,\]
\[K= \frac{\mu_1(b-1)}{a}, \quad w=\frac{x}{x+K}.\]

Then \(x=T^2/n_2\) is approximately distributed as \(I_w(a,b)\).

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.hotelling_t2_mu3_qtf(x, nu, nc); mx = mpm.hotelling_t2_mu3_qtf(x, nu, nc)
>>> ix = ipm.hotelling_t2_mu3_qtf(x, nu, nc); fx = fpm.hotelling_t2_mu3_qtf(x, nu, nc)
>>> gx = gmp.hotelling_t2_mu3_qtf(x, nu, nc); ax = apm.hotelling_t2_mu3_qtf(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Central Pillai’s \(V\): cdf, sf (Ginzberg)#

ctx.pillay_v_mu3_cdf(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns an approximation to the cdf of the central Pillai \(V\) distribution, based on matching the first 3 moments. See also Ginzberg [364].

Let \(m=(n_1-p-1)/2\), \(n=(n_2-p-1)/2\), and \(r = m + n + p\). Define

\[\mu_1 = \frac{p (2 m + p + 1)}{2 (r + 1)}, \quad \mu_2 = \mu_1 \frac{(2 n + p + 1) (2 r - p + 2)}{2 (r + 1) (r + 2) (2 r + 1)}, \quad \mu_3 = \mu_2 \frac{4 (n - m) (m + n + 1)}{(r + 1) (r + 3) (2 r)},\]
\[c = 4 \mu_1 \mu_2^2 - \mu_1^2 \mu_3 + \mu_2 \mu_3, \quad d= 2 \mu_2^2 -\mu_1 \mu_3,\]
\[a= \frac{2 \mu_1 ( \mu_1^2 \mu_2 - \mu_2^2 + \mu_1 \mu_3)}{c}, \quad b=\frac{a}{d} \: \frac{ \mu_2 (2 \mu_1 \mu_2 + \mu_3) }{ \mu_1 }, \quad w= \frac{d}{c} x.\]

Then \(x=V/n_2\) is approximately distributed as \(I_w(a,b)\).

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.pillay_v_mu3_cdf(x, nu, nc); mx = mpm.pillay_v_mu3_cdf(x, nu, nc)
>>> ix = ipm.pillay_v_mu3_cdf(x, nu, nc); fx = fpm.pillay_v_mu3_cdf(x, nu, nc)
>>> gx = gmp.pillay_v_mu3_cdf(x, nu, nc); ax = apm.pillay_v_mu3_cdf(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Central Pillai’s \(V\): qtf, isf (Ginzberg)#

ctx.pillay_v_mu3_qtf(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns an approximation to the cdf of the central Pillai \(V\) distribution. See also Ginzberg [364].

Let \(m=(n_1-p-1)/2\), \(n=(n_2-p-1)/2\), and \(r = m + n + p\). Define

\[\mu_1 = \frac{p (2 m + p + 1)}{2 (r + 1)}, \quad \mu_2 = \mu_1 \frac{(2 n + p + 1) (2 r - p + 2)}{2 (r + 1) (r + 2) (2 r + 1)}, \quad \mu_3 = \mu_2 \frac{4 (n - m) (m + n + 1)}{(r + 1) (r + 3) (2 r)},\]
\[c = 4 \mu_1 \mu_2^2 - \mu_1^2 \mu_3 + \mu_2 \mu_3, \quad d= 2 \mu_2^2 -\mu_1 \mu_3,\]
\[a= \frac{2 \mu_1 ( \mu_1^2 \mu_2 - \mu_2^2 + \mu_1 \mu_3)}{c}, \quad b=\frac{a}{d} \: \frac{ \mu_2 (2 \mu_1 \mu_2 + \mu_3) }{ \mu_1 }, \quad w= \frac{d}{c} x.\]

Then \(x=V/n_2\) is approximately distributed as \(I_w(a,b)\).

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.pillay_v_mu3_qtf(x, nu, nc); mx = mpm.pillay_v_mu3_qtf(x, nu, nc)
>>> ix = ipm.pillay_v_mu3_qtf(x, nu, nc); fx = fpm.pillay_v_mu3_qtf(x, nu, nc)
>>> gx = gmp.pillay_v_mu3_qtf(x, nu, nc); ax = apm.pillay_v_mu3_qtf(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Product of independent beta variables: cdf, sf (Nagarsenker)#

ctx.beta_product_mu3_cdf(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns an approximation to the cdf of the product of independent beta variables distribution.

Nagarsenker and Suniaga [444] proposes the following approximation:

\[\text{Pr}(W_p \leq \lambda) = I(x; sm + d, \nu_1 + r) + O(sm^{-3}), \quad \text{where}\]
\[x=\lambda^{1/s}; \quad a=\frac{\nu_1 - \nu_2}{2\nu_1}; \quad d=\frac{1-\nu_1}{2}; \quad \nu_r=\sum_{i=1}^p{c_i^r - b_i^r}\]
\[s^2 = \frac{-2B_2((1+\nu_1)/2)}{\sum_{i=1}^p{B_3(a+b_i) - B_3(a+c_i) }}\]

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.beta_product_mu3_cdf(x, nu, nc); mx = mpm.beta_product_mu3_cdf(x, nu, nc)
>>> ix = ipm.beta_product_mu3_cdf(x, nu, nc); fx = fpm.beta_product_mu3_cdf(x, nu, nc)
>>> gx = gmp.beta_product_mu3_cdf(x, nu, nc); ax = apm.beta_product_mu3_cdf(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)

Product of independent beta variables: qtf, isf (Nagarsenker)#

ctx.beta_product_mu3_qtf(x)#

where ctx is fpm, mpm, ipm, dec, gmp or apm.

Returns an approximation to the qtf of the product of independent beta variables distribution.

Nagarsenker and Suniaga [444] proposes the following approximation:

\[\text{Pr}(W_p \leq \lambda) = I(x; sm + d, \nu_1 + r) + O(sm^{-3}), \quad \text{where}\]
\[x=\lambda^{1/s}; \quad a=\frac{\nu_1 - \nu_2}{2\nu_1}; \quad d=\frac{1-\nu_1}{2}; \quad \nu_r=\sum_{i=1}^p{c_i^r - b_i^r}\]
\[s^2 = \frac{-2B_2((1+\nu_1)/2)}{\sum_{i=1}^p{B_3(a+b_i) - B_3(a+c_i) }}\]

An example (CDF):

>>> from mpfunlab import fpm, mpm
>>> mpm.dps = 40; x = 12; nu = 10; nc = 30
>>> dx = dec.beta_product_mu3_qtf(x, nu, nc); mx = mpm.beta_product_mu3_qtf(x, nu, nc)
>>> ix = ipm.beta_product_mu3_qtf(x, nu, nc); fx = fpm.beta_product_mu3_qtf(x, nu, nc)
>>> gx = gmp.beta_product_mu3_qtf(x, nu, nc); ax = apm.beta_product_mu3_qtf(x, nu, nc)
>>> mpm.show([dx, mx, ix, fx, gx, ax])
dec:  3.113877423416836055714616090074444149943E-1
mpm:  3.113877423416836055714616090074444149943e-1
ipm:  3.113877423416836055714616090074444149944e-1 (4.147e-38%)
fpm:  3.11387742341684E-01
gmp:  3.113877423416836055714616090074444149943E-01
ipm:  3.113877423416836055714616090074444149943e-1 (4.055e-38%)