Skip to main content

Downloads

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

Release files for skewt-scipy 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for skewt-scipy 0.1.2
File Size Uploaded
skewt_scipy-0.1.2.tar.gz 14.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for skewt-scipy 0.1.2
File Interpreter ABI Platform
skewt_scipy-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 21.7 kB

Release files / skewt_scipy-0.1.2.tar.gz

Download URL skewt_scipy-0.1.2.tar.gz
Size 14.4 kB
Tags Source
SHA-256 checksum
How to use checksums
46316dfaa77b64f46f814cc29ea881a85c9e4b665ac64452e698e3b547b81bba
BLAKE2b-256 checksum
How to use checksums
1cbd51db26f916db8663fcb60b6e405763b2604a6ca3dbb0235818238dba8a4c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release files / skewt_scipy-0.1.2-py3-none-any.whl

Download URL skewt_scipy-0.1.2-py3-none-any.whl
Size 7.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
93c97eb16816dcc33dbe637cc44dc40e411c7e2be6623b94834f97d75771da98
BLAKE2b-256 checksum
How to use checksums
17f59665f4ccc01d0c99df08eee2e8c0d74b81c38fb18cd78aa3f6e77205e6b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page