Skip to main content

The skew student t distribution

Project description

Skew student $t$ distribution

Skewt-Scipy is a Python package for skew student $t$ distribution.

Skew student $t$ distribution

We employ the definition of the skew-t distribution from Azzalini (2014, Section 4.3.1). Firstly, we need two density functions: $t$ distribution and skew-normal distribution respectively. The $t$ distribution is defined as:

$$ f_{t}(x|\nu) = \frac{\Gamma(\frac{\nu+1}{2})}{\sqrt{\nu\pi}\Gamma(\frac{\nu}{2})}\left(1+\frac{x^{2}}{\nu}\right)^{-\frac{\nu+1}{2}}, \quad x\in \mathbb{R},\quad \nu>0, $$

where $\nu$ denotes the degree of freedom. The skew-normal distribution is defined as:

$$ f_{sn}(x|\xi,\omega,\alpha) = \frac{2}{\omega}\phi\left(\frac{x-\xi}{\omega}\right)\Phi\left(\alpha \left( \frac{x-\xi}{\omega} \right)\right), \quad x\in \mathbb{R},\quad \omega>0,\quad \alpha\in \mathbb{R}, $$

where $\xi, \omega$ are the location and scale parameters respectively. $\alpha$ is the skewness parameter. $\phi(\cdot)$ and $\Phi(\cdot)$ are the standard normal density function and cumulative distribution function respectively.

The skew-t variable can be defined as:

$$ Z= \frac{Z_{0}}{\sqrt{V}}, $$

where $Z_{0}\sim f_{sn}(x|0,1,\alpha)$ and $V\sim \chi^{2}_{\nu}/\nu$ are independent. Then, the density function of $Z$ is

$$ f_{st}(\alpha,\nu)= 2f_{t}(x|\nu)F_{t}\left(\alpha x\sqrt{\frac{\nu+1}{\nu+x^{2}}}\Big|\nu+1\right), $$

where $F_{t}(\cdot|\nu+1)$ represent the $t$ cumulative density function with degree of freedom $\nu+1$. As $\alpha\in \mathbb{R}$ and $\nu>0$, then skew-t distribution can degenerate several special distributions.

Installation

Install via pip with

python3 -m pip install skewt_scipy

Usage

As the class skewt inherits from the class rv_continuous of Scipy, many methods are available. The shape parameters a and df represent $\alpha$ and $\nu$ (the degree of freedom).

Method Description
rvs(a, df, loc=0, scale=1, size=1, random_state=None) Random variates.
pdf(x, a, df, loc=0, scale=1) Probability density function.
logpdf(x, a, df, loc=0, scale=1) Log of the probability density function.
cdf(x, a, df, loc=0, scale=1) Cumulative distribution function.
logcdf(x, a, df, loc=0, scale=1) Log of the cumulative distribution function.
ppf(q, a, df, loc=0, scale=1) Percent point function (inverse of cdf).
stats(a, df, loc=0, scale=1, moments='mvsk') Mean('m'), variance('v'), skew('s'), and/or kurtosis('k').
fit(data) Parameter estimates for generic data.

Note that the parameters $\alpha =\pm\infty$ and $\nu=+\infty$ are valid for the above methods.

Examples

import numpy as np

from skewt_scipy.skewt import skewt

# random number generator
skewt.rvs(a=10, df=6, loc=3, scale=2, size=10)

# probability distribution
x = (np.linspace(-50, 50, 100),)
skewt.pdf(x=x, a=-10, df=6, loc=3, scale=2)

# log of probability distribution
skewt.logpdf(x=x, a=-10, df=6, loc=3, scale=2)

# cumulative distribution
skewt.cdf(x=x, a=8, df=10, loc=3, scale=2)

# log of cumulative distribution
skewt.logcdf(x=x, a=8, df=10, loc=3, scale=2)

# percent point function
skewt.ppf(np.array([0.5, 0.9, 0.99]), a=3, df=6, loc=3, scale=2)

a = 3
df = 5
loc = 3
scale = 2
data = skewt.rvs(a=a, scale=scale, df=df, loc=loc, size=10000, random_state=123)
skewt.fit(data)
skewt.fit(data, fdf=df)  # fixed df
skewt.fit(data, fa=a, fdf=df)  # fixed a and df

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skewt_scipy-0.1.1.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

skewt_scipy-0.1.1-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file skewt_scipy-0.1.1.tar.gz.

File metadata

  • Download URL: skewt_scipy-0.1.1.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.6

File hashes

Hashes for skewt_scipy-0.1.1.tar.gz
Algorithm Hash digest
SHA256 0a35412fb622acef467856d26e3eb1db03214b2a27fecbfbb3937a0e08f1b4fc
MD5 eb0a051e5d636a01eec85f088e982403
BLAKE2b-256 67f4f7f3ce071fb969e6a8baa2634766222c9be46e27946da040e7ef6f9df2dc

See more details on using hashes here.

File details

Details for the file skewt_scipy-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: skewt_scipy-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.6

File hashes

Hashes for skewt_scipy-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c1361219de4c18b3b6269e662635c17cbdc625d7b2923a2705c4fe947f536146
MD5 72faf8edbb399abe5385381c97a16c0d
BLAKE2b-256 ead4195d9f4032f7939087028110e185b93416762f892ec581e376ce42b7d619

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page