Skip to article content

Density Functions and Random Number Generators of Alpha-Stable Distributions

Abstract

Heavy-tailed distributions are increasingly found to better fit empirical data in engineering, finance, physics, network science, and related fields. Among them, α\alpha-stable distributions play a central role being limiting laws in the generalized central limit theorem: they are expected to be exceptionally good models whenever sums of multiple independent heavy-tailed sources are at play. Despite their theoretical importance, their practical use remains challenging: α\alpha-stable probability densities generally do not have closed-form expressions, and numerical evaluation and random variate generation can be difficult, especially in the multivariate setting. This paper presents AUB-HTP, a Python package for numerical computation and simulation of α\alpha-stable distributions. The package provides scalar density evaluation using several complementary methods, including Zolotarev-type integral representations, series formulas, and numerical inversion of characteristic functions. It also provides random variate generation for scalar and multivariate α\alpha-stable distributions, with support for flexible spectral measures through LePage series representations. Numerical experiments demonstrate that AUB-HTP improves the accuracy, stability, and parameter coverage of existing tools for scalar density computation, while adding new capabilities for multivariate simulation. The package is designed to support reproducible computational work involving heavy-tailed models across a broad range of scientific applications.

1Introduction

Heavy-tailed distributions arise naturally in many scientific and engineering applications, including communications, signal processing, finance, physics, and network modeling Nassar et al. (2008)Tsihrintzis et al. (1995)Crovella et al. (1998)Nolan (2013)Taleb (2022). In such settings, rare but large deviations occur more frequently than predicted by light-tailed models such as the Gaussian distribution. As a result, Gaussian-based modeling can significantly underestimate the probability and impact of extreme events.

Among heavy-tailed models, α\alpha-stable distributions occupy a central theoretical position. They generalize the Gaussian distribution through the stability property: sums of independent α\alpha-stable random variables remain α\alpha-stable, up to location and scale changes. They also arise as limiting distributions for normalized sums of independent random variables under the generalized central limit theorem B. V. Gnedenko and A. N. Kolmogorov (1968). These properties make α\alpha-stable laws natural candidates for modeling aggregate effects generated by many independent heavy-tailed sources.

A major practical limitation of α\alpha-stable distributions is that their probability density functions (PDF)s generally do not admit closed-form expressions, except in the special cases of the Cauchy and Lévy distributions. Consequently, numerical tools are required for density evaluation, modeling, and simulation. Existing approaches for scalar α\alpha-stable random variate generation, such as the Chambers–Mallows–Stuck (CMS) method Chambers et al. (1976), are well established, but they do not directly address general multivariate α\alpha-stable distributions. In the multivariate case, available simulation methods typically focus on special spectral measures, such as isotropic or sub-Gaussian models Nolan (2013), rather than arbitrary spectral measures.

This paper presents AUB-HTP, a Python package for computational work with α\alpha-stable distributions. The package provides scalar density computation using several numerical methods, including Zolotarev integral representations Zolotarev (1986), Skorohod-Pollard-Bergström formulas A. V. Skorohod (1961)Pollard (1946)Bergström (1952), and direct numerical inversion of the characteristic function[1]. These methods provide complementary tradeoffs in terms of accuracy, speed, and robustness across parameter regimes. In addition, AUB-HTP implements random variate generation for scalar and multivariate α\alpha-stable distributions. For the multivariate case, the package uses LePage series representations LePage et al. (1981), which support flexible spectral measures and perform particularly well in challenging heavy-tailed regimes, including small values of α\alpha.

The goal of AUB-HTP is to make α\alpha-stable modeling more accessible to computational scientists by providing reliable density evaluation, flexible simulation tools, and reproducible numerical routines within the Python ecosystem. The main contributions of this work are: (i) a unified Python implementation of several scalar α\alpha-stable PDF evaluation methods; (ii) a flexible random variate generator for scalar and multivariate α\alpha-stable distributions; (iii) support for general spectral measures through LePage series; and (iv) numerical benchmarks comparing accuracy, runtime, and robustness against existing implementations.

Notations

We adopt the following conventions. The vector xRd\mathbf{x}\in\mathbb{R}^d represents a column vector and xT\mathbf{x}^T is its transpose. The Euclidean inner product of two vectors x=(x1,x2,,xd)T\mathbf{x} = (x_1,x_2,\cdot\cdot\cdot,x_d)^T and y=(y1,y2,,yd)T\mathbf{y} = (y_1,y_2,\cdot\cdot\cdot,y_d)^T is denoted by xTy=x,y=i=1dxiyi\mathbf{x}^T\mathbf{y}=\langle\mathbf{x},\mathbf{y}\rangle=\sum_{i=1}^{d}x_iy_i and the L2L_2 norm of x\mathbf{x} by x=x,x\|\mathbf{x}\|=\sqrt{\langle\mathbf{x},\mathbf{x}\rangle}. The unit sphere in Rd\mathbb{R}^d is denoted by Sd1={xRd:x=1}\mathbb{S}^{d-1}=\{\mathbf{x}\in\mathbb{R}^d: \|\mathbf{x}\|=1\}. The class of all borel subsets in a metric space SS is represented by B(S)\mathcal{B}(S). We use X ⁣ ⁣ ⁣Y\mathbf{X} \perp\!\!\!\perp \mathbf{Y} to indicate that the two random vectors X\mathbf{X} and Y\mathbf{Y} are independent. When a random vector X\mathbf{X} is distributed uniformly on the unit sphere, we write XU(Sd1)\mathbf{X}\sim\mathcal{U}(\mathbb{S}^{d-1}). For a random variable XX that is Gamma distributed, we write XGamma(α,β)X\sim\text{Gamma}(\alpha,\beta), and we use the following parameterization for the PDF

fX(x)={1Γ(α)βαxα1exβif  x>00otherwise,f_{X}(x)=\begin{cases} \displaystyle \frac{1}{\Gamma(\alpha)\beta^{\alpha}} \, x^{\alpha-1} e^{-\frac{x}{\beta}} & \text{if}\; x>0\\ 0 & \text{otherwise}, \end{cases}

where Γ()\Gamma(\cdot) is the Gamma function.

2Preliminaries on α\alpha-Stable Distributions

We adopt the definition of a multivariate stable vector given in Samorodnitsky & Taqqu (2000):

In particular, we are interested in α\alpha-stable [2] random vectors.

In the scalar case (d=1d = 1) –and whenever 0<α<20<\alpha<2, the spectral measure boils down to two mass points on s=±1s = \pm 1, and the characteristic function in (2) is expressible in terms of 4 parameters: the stability index 0<α<20<\alpha<2, skewness 1β1-1\leq\beta\leq1, scale γ>0\gamma>0, and location δR\delta\in\mathbb{R}. In this case, we denote an α\alpha-stable random variable XX using the same notation as in Nolan Nolan (2020), X ⁣ ⁣S(α,β,γ,δ;k)X\!\sim\!\mathcal{S}(\alpha,\beta,\gamma,\delta;k) where kk is the parameterization index (or type). We will use the symbols S0\mathcal{S}_0 and S1\mathcal{S}_1 to refer to the two common type-0 and type-1 parameterization, respectively. In the multivariate case, we denote a dd-dimension non-degenerate α\alpha-stable random vector X\vect{X} with stability index α\alpha, spectral measure Λ\Lambda and shift vector μ0\boldsymbol{\mu}^0, by XSα(Λ,d,μ0)\vect{X}\sim\mathbf{S}_\alpha(\Lambda,d,\boldsymbol{\mu}^0). Note that Definition 2 corresponds to the generalization of the scalar case under the parameterization k=1k=1.

Parameterizations of scalar α\alpha-stable distributions

There two parameterizations S(α,β,γ,δ;0)\mathcal{S}(\alpha, \beta, \gamma, \delta; 0) and S(α,β,γ,δ;1)\mathcal{S}(\alpha, \beta, \gamma, \delta; 1) differ primarily in how they define the location (shift) of the distribution, particularly near α=1\alpha = 1. For a given α\alpha and β\beta, let ZZ be a “standard" α\alpha-stable variable corresponding to γ=1\gamma = 1 and δ=0\delta = 0.

Note that the choice of parameterization directly affects the shift and symmetry of the distribution, especially when β0\beta \neq 0 and α\alpha is close to 1. In both forms, the distribution can be standardized by setting γ=1\gamma = 1 and δ=0\delta = 0, in which case we use the abbreviations S(α,β;0)\mathcal{S}(\alpha, \beta; 0) and S(α,β;1)\mathcal{S}(\alpha, \beta; 1) respectively.

In the univariate case, our package can simulate both parameterizations k=0,1k=0,1.

3Scalar Density Evaluation

The AUB-HTP package provides numerical evaluation of scalar α\alpha-stable probability density functions through a SciPy-like interface. This component complements the random number generator: the generator produces samples, while the density module provides the reference curve used for model verification, visualization, and numerical comparison.

Except for Cauchy and Levy laws, α\alpha-stable distributions do not have a closed-form density, which must therefore be computed using numerical inversion or analytic representations that are valid in specific parameter regions.

Towards fulfilling our main objective of reducing expensive quadrature calls while preserving accuracy across a wide range of α\alpha, β\beta, and sample values, the density evaluator combines three methods:

3.1Input standardization

All density calls are first mapped to a standardized variable allowing the internal routines to work on standardized densities while still supporting user-facing location and scale parameters. More specifically, given an input sample value xx the code evaluates

z=xshiftγ,z=\frac{x-\text{shift}}{\gamma},

then rescales the final density by 1/γ1/\gamma. For the S1\mathcal{S}_1 parameterization for example, the shift is given by Nolan (2020, equation 1.5)

shift={δ,α1δ+β2πγlogγα=1,\text{shift} = \begin{cases} \delta, & \alpha \neq 1\\ \delta + \beta \dfrac{2}{\pi} \gamma \log \gamma & \alpha = 1, \end{cases}

as can be deduced from equation (5).

Additionally, if fα,β(x)f_{\alpha,\beta}(x) is the PDF of a normalized α\alpha-stable random variable, for negative evaluation points the code uses the symmetry relation Nolan (2020, proposition 1.1)

fα,β(x)=fα,β(x),f_{\alpha,\beta}(-x)=f_{\alpha,-\beta}(x),

and most formulas only need to be evaluated on the positive half-line.

3.2Hybrid evaluation strategy

The main density function acts as a dispatcher. It divides the input array into regions and applies the method that is most accurate for each region.

The switching points between methods are not fixed constants. They are instead selected from precomputed cutoff functions depending on (α,β)(\alpha,\beta). These cutoffs were obtained using grid-based comparison with scipy.stats.levy_stable.pdf. At runtime, the code queries the corresponding cutoff and applies Boolean masks to route each input point to the selected method.

Density formulas

\bullet For direct inversion in the S1\mathcal{S}_1 parameterization Nolan (2020), the density is computed from the characteristic function. The standardized density is

fα,β(x)=1π0etαcos ⁣(xtβtan(πα2)tα)dtα1f1,β(x)=1π0etcos ⁣(xt+2πβtlogt)dtα=1, with the logarithmic correction.\begin{align*} & f_{\alpha,\beta}(x) = \frac{1}{\pi} \int_0^\infty e^{-t^\alpha} \cos\!\left( xt-\beta\tan\left(\frac{\pi\alpha}{2}\right)t^\alpha\right) \,dt \quad \alpha \neq 1 \\ & f_{1,\beta}(x) = \frac{1}{\pi} \int_0^\infty e^{-t} \cos\!\left( xt+\frac{2}{\pi}\beta t\log t \right) \,dt \qquad \qquad \alpha = 1, \text{ with the logarithmic correction.} \end{align*}

These integrals are evaluated with scipy.integrate.quad_vec.

\bullet For the middle region, the code uses Zolotarev’s integral representation Zolotarev (1986). For α1\alpha\neq1 and x>0x>0,

fα,β(x)=αx1α1πα1θ0π/2V(θ)exp ⁣[xαα1V(θ)]dθ,f_{\alpha,\beta}(x) = \frac{\alpha x^{\frac{1}{\alpha-1}}} {\pi |\alpha-1|} \int_{-\theta_0}^{\pi/2} V(\theta) \exp\!\left[ -x^{\frac{\alpha}{\alpha-1}}V(\theta)\right]\,d\theta,

where

θ0=1αarctan ⁣(βtan(πα2)),\theta_0= \frac{1}{\alpha}\arctan\!\left(\beta\tan\left(\frac{\pi\alpha}{2}\right)\right),

and where V(θ)V(\theta) is evaluated following Zolotarev’s formula Zolotarev (1986). This integral is computed using the function scipy.integrate.quad.

\bullet For the tail region, we use Skorohod-type series expansions A. V. Skorohod (1961)Wintner (1941)Pollard (1946) of the form

fα,β(x)1πxn=1Nanxαn,f_{\alpha,\beta}(x) \approx \frac{1}{\pi x} \sum_{n=1}^{N} a_n x^{-\alpha n},

where

an=(1)n1Γ(nα+1)n!(1+β2tan2(πα2))n/2sin ⁣[n(πα2+arctan ⁣(βtan(πα2)))].a_n = \frac{(-1)^{n-1}\Gamma(n\alpha+1)}{n!} \left( 1+\beta^2\tan^2\left(\frac{\pi\alpha}{2}\right) \right)^{n/2} \sin\!\left[n\left( \frac{\pi\alpha}{2} + \arctan\!\left( \beta\tan\left(\frac{\pi\alpha}{2}\right) \right) \right) \right].

The number NN of terms used to calculate the series is appropriately chosen depending on the parameter range. In the current package, the α<1\alpha<1 branch uses a larger truncation level, while the α>1\alpha>1 branch requires fewer terms in the tested regimes.

3.3Validation

The density evaluator was tested against scipy.stats.levy_stable.pdf on grids of α\alpha, β\beta, and xx. The near-mode tests used x[10,10]x\in[-10,10], while the tail tests examined values up to x=100x = 100.

The comparison recorded the following metrics:

The tests show close agreement across most of the parameter space, but they also reveal regions where the SciPy reference exhibits irregular numerical behavior. The strongest agreement occurs away from the narrow region around α=1\alpha=1, where changes in the parameterization and the presence of logarithmic terms make density evaluation more sensitive. In this region, visual diagnostics are important because the relative difference may become large when the reference density is close to zero or numerically unstable. Figure 1 illustrates this behavior near α=1\alpha=1 using the maximum relative difference measured around the mode. Away from α=1\alpha=1, Figure 1 shows agreement with the SciPy reference. Results for the remaining error metrics, parameter ranges, and tail evaluations, together with the complete benchmark data, are available in the Github repository[3].

Maximum relative difference across (\alpha,\beta) near the mode. Larger values near \alpha=1 mark the most sensitive numerical region.

Figure 1:Maximum relative difference across (α,β)(\alpha,\beta) near the mode. Larger values near α=1\alpha=1 mark the most sensitive numerical region.

3.4Discrepancies in the SciPy reference

While scipy.stats.levy_stable.pdf The SciPy Community (2026) is used as the main numerical reference, we observed that it has some discrepancies for certain parameter values. These discrepancies appear mostly near the sensitive region around α=1\alpha=1, and they can create misleading relative difference values.

The main issue is that the SciPy PDF sometimes shows unusual zero or near-zero regions in some places while the densities are known to be smooth. Since the maximum relative difference contains a division by the reference value, even a small disagreement in such regions can produce a very large relative difference. Therefore, some of the large relative differences in the benchmark tables do not necessarily mean that our PDF generator is inaccurate. Instead, they are likely due to the instability or discontinuity in the reference PDF.

To validate this, we generated visual diagnostic plots comparing the AUB-HTP with the levy_stable PDF values. Figure 2 shows several cases where the SciPy reference generates unexpected zero windows or sharp changes, while the PDF generated using our package remains smooth.

Visual comparison between AUB-HTP PDF generator and scipy.stats.levy_stable.pdf. The plots zoom into regions where the SciPy reference becomes numerically zero or behaves irregularly. These regions explain why some relative difference values become large even when our generated density remains smooth.

Figure 2:Visual comparison between AUB-HTP PDF generator and scipy.stats.levy_stable.pdf. The plots zoom into regions where the SciPy reference becomes numerically zero or behaves irregularly. These regions explain why some relative difference values become large even when our generated density remains smooth.

The heatmaps are useful for locating sensitive parameter regions, but the diagnostic plots were needed to understand whether the difference is primarily attributed to our method or the numerical reference.

3.5Runtime

The adopted hybrid strategy reduces runtime by avoiding direct quadrature when a faster formula is accurate enough. The largest gains occur in the tail region, where series expansions replace repeated numerical integration.

In the benchmark runs, the median speedup was approximately 58×58\times, with larger speedups in tail-heavy evaluations. These gains come from three design choices:

Median runtime speedup relative to scipy.stats.levy_stable.pdf. The largest gains occur where the series expansions are selected.

Figure 3:Median runtime speedup relative to scipy.stats.levy_stable.pdf. The largest gains occur where the series expansions are selected.

The speedup plot in Figure 3 shows that our method is strictly faster than scipy.stats.levy_stable.pdf for almost all tested values of α\alpha. Note that the vertical axis is on a logarithmic scale and values between 10 and 100 represent large runtime improvements. For small values of α\alpha, especially in the near-mode range, the speedup is very high. This is because the method selection avoids unnecessary numerical integration and uses the formulas that are faster in those regions. In the tail range, the speedup is also consistent for most values of α\alpha, since the Skorohod-Pollard-Bergström formulas replace repeated quadrature calls. The smallest speedups occur near α=1\alpha=1 which is expected since this region is numerically delicate. The formulas change around α=1\alpha=1, and the characteristic function contains a logarithmic correction term. The package therefore relies more on direct inversion in this region, which is slower than the series-based methods.

4Generating α\alpha-Stable Random Vectors

In the univariate case, the package implements a numerically stable version of the Chambers, Mallows, and Stuck method which is presented in Chambers et al. (1976)Nolan (2020). In the multivariate setup, the proposed random number generator is based on a theoretical foundation that we state next.

4.1The LePage series

The LePage series Samorodnitsky & Taqqu (2000) was first introduced in LePage et al. (1981) and allows for simulating a multivariate stable vector with a stability index α\alpha and a given spectral measure through the use of the following theorem Bentkus et al. (2001, Theorem 4)

Theorem 1 indicates that sampling a multivariate stable vector can be done by computing the truncated series as in equation (20). Since the vector X\mathbf{X} resulting from the series has a zero shift vector μ0=0\boldsymbol{\mu}^0 = {\bf 0}Bentkus et al. (2001, Remark 1), we simply add μ0\boldsymbol{\mu}^0 after sampling Xn\mathbf{X}_n using the LePage series, when needed. The analysis of the truncation error is deferred to Appendix 7.

In the following section, we present algorithms to sample according to well-known spectral measures, namely: Isotropic, Sub-Gaussian, Discrete, and Mixed spectral measures.

4.2Common spectral measures

4.2.1Discrete spectral measures

In the case of a discrete spectral measure with MM mass points, we store the point masses in an array [v1,v2,,vM][\mathbf{v}_1, \mathbf{v}_2, \cdots, \mathbf{v}_M] and draw randomly with the probability of each vector vi\mathbf{v}_{i} being

Pr(vi)=Λ(vi)=1MΛ(v).\Pr(\mathbf{v}_{i})=\frac{\Lambda(\mathbf{v}_{i})}{\sum_{\ell=1}^{M}\Lambda(\mathbf{v}_{\ell})}.

4.2.2Isotropic spectral measures

For an isotropic spectral measure, we sample the vectors {Vk}1kn\{\mathbf{V}_k\}_{1 \leq k \leq n} uniformly on Sd1\mathbb{S}^{d-1}. To this end, several algorithms are available and we refer the reader to Schnabel & Janke (2022) where various such algorithms are discussed. In our computations, we adopt the method presented in Muller (1959) due to its simplicity and computational efficiency. Our package sets the spectral measure of the sphere to 1, and then scales the truncated LePage series by an appropriate factor qq to adjust for the desired scale γ\gamma given by the user: When the spectral measure of the sphere is 1, it can be verified that the characteristic function is given by

ϕX(t)=exp{Γ(d2)πΓ(α+12)Γ(α+d2)tα}.\phi_{\mathbf{X}}(\mathbf{t})=\exp\left\{-\frac{\Gamma\left(\frac{d}{2}\right)}{\sqrt{\pi}}\frac{\Gamma\left(\frac{\alpha+1}{2}\right)}{\Gamma\left(\frac{\alpha+d}{2}\right)}\|\mathbf{t}\|^{\alpha}\right\}.

To achieve a scale γ\gamma, we therefore multiply the truncated series by

q=γ[Γ(d2)πΓ(α+12)Γ(α+d2)]1α.q=\gamma\left[\frac{\Gamma\left(\frac{d}{2}\right)}{\sqrt{\pi}}\frac{\Gamma\left(\frac{\alpha+1}{2}\right)}{\Gamma\left(\frac{\alpha+d}{2}\right)}\right]^{-\frac{1}{\alpha}}.

4.2.3Sub-Gaussian (elliptical) spectral measures

A sub-Gaussian random vector is characterized by a positive-definite d×dd\times d shape matrix Σ\Sigma. If X\vect{X} is a unit-scale isotropic multivariate stable random vector with stability index α\alpha then Y=Σ12X\vect{Y}=\Sigma^{\frac{1}{2}}\vect{X} is a sub-Gaussian random vector with shape matrix Σ\Sigma where Σ12\Sigma^{\frac{1}{2}} is the Cholesky decomposition of Σ\SigmaNolan (2013). As such, to sample from Yn\mathbf{Y}_n, one can first sample a unit-scale isotropic random vector with the same stability index α\alpha using the LePage series as in Section 4.2.2 and multiply it by the Cholesky decomposition Σ12\Sigma^{\frac{1}{2}} of Σ\Sigma. In section 7.2 in the appendix, we analyze the resulting Mean Square Error (MSE) of Yn\mathbf{Y}_n.

A useful alternative would be to sample the vectors Vk\mathbf{V}_k for the sub-Gaussian case by sampling vectors Uk\mathbf{U}_k uniformly distributed on the unit sphere and multiplying them by Σ12\Sigma^{\frac{1}{2}}. Indeed, if Xn\mathbf{X}_n is the nn-terms LePage series, by Theorem 1, Xn\mathbf{X}_n converges in total variation to X\mathbf{X}, and

Yn=Σ12Xn=Σ12k=1nΓk1αUk=k=1nΓk1αVkwhere Vk=Σ12Uk,\mathbf{Y}_n=\Sigma^{\frac{1}{2}}\mathbf{X}_n=\Sigma^{\frac{1}{2}}\sum_{k=1}^n\Gamma_k^{-\frac{1}{\alpha}}\mathbf{U}_k=\sum_{k=1}^n\Gamma_k^{-\frac{1}{\alpha}}\mathbf{V}_k \qquad \text{where } \mathbf{V}_k=\Sigma^{\frac{1}{2}}\mathbf{U}_k,

converges in total variation to Y=Σ12X\mathbf{Y}=\Sigma^{\frac{1}{2}}\mathbf{X}, which is the desired sub-Gaussian random vector.

The package first samples Vk{\bf V}_k and then computes the sum presented in (25) to sample a sub-Gaussian random vector Yn{\bf Y}_n.

4.2.4Mixed spectral measures

Now consider the scenario where the spectral measure at hand is a mixture of LL different spectral measures: Λ1,Λ2,,ΛL\Lambda_1, \Lambda_2, \cdots, \Lambda_L. If w1,w2,,wLw_1, w_2, \cdots, w_L are their respective associated weights, the mixed spectral measure Λmix\Lambda_{\text{mix}} is given by

Λmix=i=1LwiΛi.\Lambda_{\text{mix}}=\sum_{i=1}^L w_i\Lambda_i.

To sample from this spectral measure, we proceed as follows.

This algorithm achieves a sampling from the mixture of Λ1,,ΛL\Lambda_1, \cdots, \Lambda_L with probabilities p1,,pLp_1, \cdots, p_L respectively.

5Implementation

Whenever the LePage series is used, the package chooses the number of terms to achieve an MSE less than 0.01 using Theorem 2 in Appendix 7. This number is capped at 50,000 terms and a warning is issued whenever this cap is reached.

5.1Univariate random number generator

In the univariate case, the software samples XS(α,β,γ,δ;k)X \sim\mathcal{S}(\alpha,\beta,\gamma,\delta;k), and the type 1 parameterization is used by default.

import aub_htp as ht
alpha=1
beta=0
loc=0
scale=1
n=500000
samples=ht.alpha_stable.rvs(alpha=alpha, beta=beta, loc=loc, scale=scale, size=n)

In Figure 4, we present some examples where univariate α\alpha-stable variables were sampled using our implementation, and plot the truncated histogram of values. Each histogram is overlayed by the pdf values which are computed using the SciPy levy_stable numerical package.

\mathcal{S}(1,0,1,0;1)

(a)S(1,0,1,0;1)\mathcal{S}(1,0,1,0;1)

\mathcal{S}(0.3,0.4,2,0;1)

(b)S(0.3,0.4,2,0;1)\mathcal{S}(0.3,0.4,2,0;1)

\mathcal{S}(1.7,0.8,10,100;1)

(c)S(1.7,0.8,10,100;1)\mathcal{S}(1.7,0.8,10,100;1)

Figure 4:Truncated histogram of α\alpha-stable distributions, each containing 5×1055 \times 10^5 points.

An example using the type 0 parameterization is presented in Figure 5.

import aub_htp as ht
alpha=0.1
beta=1
loc=-500
scale=10
n=500000
ht.alpha_stable.with_parameterization("S0")
samples=ht.alpha_stable.rvs(alpha=alpha, beta=beta, loc=loc, scale=scale, size=n )
\mathcal{S}(0.1,1,10,-500;0)

(a)S(0.1,1,10,500;0)\mathcal{S}(0.1,1,10,-500;0)

\mathcal{S}(0.4,-0.7,100,0;0)

(b)S(0.4,0.7,100,0;0)\mathcal{S}(0.4,-0.7,100,0;0)

\mathcal{S}(1.4,-0.8,5,0;0)

(c)S(1.4,0.8,5,0;0)\mathcal{S}(1.4,-0.8,5,0;0)

Figure 5:Truncated histogram of α\alpha-stable distributions, each containing 5×1055 \times 10^5 points.

5.2Multivariate random number generator

5.2.0.1Isotropic α\alpha-stable random vector:

An isotropic α\alpha-stable random vector with characteristic function

ϕX(t)=eγαtα+itTμ0,\phi_{\mathbf{X}}(\mathbf{t})=e^{-\gamma^{\alpha}\|\mathbf{t}\|^{\alpha} +\ii\mathbf{t}^T\boldsymbol{\mu}^0},

can be generated using the AUB-HTP package as follows:

import aub_htp as ht
from aub_htp.random import IsotropicSampler
alpha = 0.5
gamma = 1
shift= [0,0]
d = 2
n=500000
sampler = IsotropicSampler(number_of_dimensions= d, alpha = alpha, gamma = gamma)
samples = ht.multivariate_alpha_stable.rvs(alpha = alpha, spectral_measure_sampler = sampler,shift=shift, size = n)

where α\alpha is the stability index, γ\gamma is the scale parameter and μ0\boldsymbol{\mu}^0 represents the shift vector. Figure 6 depicts scatter plots of the generated isotropic α\alpha-stable random vectors.

\alpha=0.5,\gamma=1,\boldsymbol{\mu}^{0 T}=(0,0)

(a)α=0.5,γ=1,μ0T=(0,0)\alpha=0.5,\gamma=1,\boldsymbol{\mu}^{0 T}=(0,0)

\alpha=1,\gamma=3,\boldsymbol{\mu}^{0T}=(1000,1000)

(b)α=1,γ=3,μ0T=(1000,1000)\alpha=1,\gamma=3,\boldsymbol{\mu}^{0T}=(1000,1000)

\alpha\!=\!1.1,\gamma\!=\!5,\boldsymbol{\mu}^{0T}=-(2000,2000)

(c)α ⁣= ⁣1.1,γ ⁣= ⁣5,μ0T=(2000,2000)\alpha\!=\!1.1,\gamma\!=\!5,\boldsymbol{\mu}^{0T}=-(2000,2000)

Figure 6:Scatter plots each containing 5×1055 \times 10^5 points of isotropic α\alpha-stable distributions. The plots have been truncated to a range of 400 points within the shift vector.

5.2.0.2Elliptic α\alpha-stable random vector:

An elliptic α\alpha-stable random vector with shape matrix Σ\Sigma with the following characteristic function

ϕX(t)=e(tTΣt)α2+itTμ0,\phi_{\mathbf{X}}(\mathbf{t})=e^{-(\mathbf{t}^T\Sigma \mathbf{t})^{\frac{\alpha}{2}} +\ii\mathbf{t}^T\boldsymbol{\mu}^0},

can also be generated using AUB-HTP. We note that the elliptic sampler takes the total mass of the unit sphere as input. If the total mass of the sphere is not specified, the software estimates it using Monte Carlo simulations (with 106 samples) as follows:

Λ(Sd1)=E[Σ12Uα]1ni=1nΣ12Uiα,\Lambda(\mathbb{S}^{d-1})=\mathbb{E}\left[\|\Sigma^{\frac{1}{2}}\mathbf{U}\|^{\alpha}\right]\approx\frac{1}{n}\sum_{i=1}^n\|\Sigma^{\frac{1}{2}}\mathbf{U}_i\|^{\alpha},

where the equality is due to  Samorodnitsky & Taqqu (2000, proposition 2.5.8), and where U1,U2,Un\mathbf{U}_1,\mathbf{U}_2,\ldots\mathbf{U}_n are i.i.d. samples according to UU(Sd1)\mathbf{U}\sim\mathcal{U}(\mathbb{S}^{d-1}). Equation (30) is justified by the application of the Weak Law of Large Numbers (WLLN) because the random variable Σ12Uα\|\Sigma^{\frac{1}{2}}\mathbf{U}\|^{\alpha} has a finite second moment. Indeed,

E[Σ12U2α]=E[(UTΣ12TΣ12U)α]=(a)E[(UTΣTU)α]=(b)E[UΣ2α](c)λmaxα(Σ)E[Uα]=λmaxα(Σ)<,\begin{align} \mathbb{E}[\|\Sigma^{\frac{1}{2}}\mathbf{U}\|^{2\alpha}]&=\mathbb{E}\left[\left(\mathbf{U}^T\Sigma^{\frac{1}{2}T}\Sigma^{\frac{1}{2}}\mathbf{U}\right)^{\alpha}\right]\\&\overset{(a)}{=}\mathbb{E}\left[\left(\mathbf{U}^T\Sigma^T\mathbf{U}\right)^{\alpha}\right]\\ &\overset{(b)}{=}\mathbb{E}\left[\|\mathbf{U}\|^{2\alpha}_{\Sigma}\right]\\&\overset{(c)}{\leq} \lambda_{\text{max}}^{\alpha}(\Sigma)\mathbb{E}\left[\|\mathbf{U}\|^{\alpha}\right]=\lambda_{\text{max}}^{\alpha}(\Sigma)<\infty, \end{align}

where equality (a)(a) is due to the Cholesky decomposition definition and in (b)(b) we used the Σ\Sigma-weighted norm xΣ2xTΣx\|\mathbf{x}\|^2_{\Sigma}\triangleq\mathbf{x}^T\Sigma\mathbf{x}. Finally, the inequality in (c)(c) is due to the fact that xΣ2λmax(Σ)x2\|\mathbf{x}\|^2_{\Sigma}\leq\lambda_{\max}(\Sigma)\|\mathbf{x}\|^2 where λmax(Σ)\lambda_{\text{max}}(\Sigma) is the largest eigenvalue of Σ\Sigma, equal to the norm of matrix Σ\SigmaHorn & Johnson (1985).

Finally, we note that the MSE resulting from estimating the total mass of the sphere using equation (30) is given by Niederreiter (1992, Theorem 1.1).

An example code is as follows.

import aub_htp as ht
from aub_htp.random import EllipticSampler
alpha = 0.5
shift= [0,0]
d = 2
n=500000
sigma1=[[2,0.8],[0.8,1.5]]
sampler =EllipticSampler(number_of_dimensions = 2, alpha = alpha, sigma = sigma1)
samples = ht.multivariate_alpha_stable.rvs(alpha = alpha, spectral_measure_sampler = sampler,shift=shift, size = n)

Figure 7 shows the scatter plots of the elliptical α\alpha-stable random vector, where we use the following shape matrices

Σ1=(20.80.81.5)Σ2=(2112).\Sigma_1=\begin{pmatrix} 2 & 0.8 \\ 0.8 & 1.5 \end{pmatrix} \qquad \Sigma_2=\begin{pmatrix} 2 & -1 \\ -1 & 2 \end{pmatrix}.
\alpha=0.5, \Sigma_1, \boldsymbol{\mu}^{0 T}=(0,0)

(a)α=0.5,Σ1,μ0T=(0,0)\alpha=0.5, \Sigma_1, \boldsymbol{\mu}^{0 T}=(0,0)

\alpha=1, \Sigma_1, \boldsymbol{\mu}^{0T}=(1000,1000)

(b)α=1,Σ1,μ0T=(1000,1000)\alpha=1, \Sigma_1, \boldsymbol{\mu}^{0T}=(1000,1000)

\alpha=1.1, \Sigma_2, \boldsymbol{\mu}^{0T}=-(2000,2000)

(c)α=1.1,Σ2,μ0T=(2000,2000)\alpha=1.1, \Sigma_2, \boldsymbol{\mu}^{0T}=-(2000,2000)

Figure 7:Scatter plots each containing 5×1055 \times 10^5 points of elliptic contoured α\alpha-stable distributions; the plots have been truncated to a range of 400 points within the shift vector.

5.2.0.3Discrete spectral measures:

For an α\alpha-stable random vector that has a discrete spectral measure with point masses at positions v1,,vM\vect{v}_1, \cdots, \mathbf{v}_M and corresponding weights w1,,wMw_1, \cdots, w_M, the corresponding characteristic function is given by

ϕX(t)=exp{=1Mwψα(tTv)+itTμ0}.\phi_{\mathbf{X}}(\mathbf{t})=\exp\left\{-\sum_{\ell=1}^M w_\ell\psi_{\alpha}(\mathbf{t}^T\mathbf{v}_\ell)+\ii\mathbf{t}^T\boldsymbol{\mu}^0\right\}.

Such a vector can be generated as follows:

import aub_htp as ht
from aub_htp.random import DiscreteSampler
alpha = 0.2
shift= [0,0]
d = 2
n=500000
positions=[[1,0],[0,1],[-1,0],[0,-1]]
weights=[1,1,1,1]
sampler = DiscreteSampler(alpha = alpha, positions = positions,  weights = weights)
samples = ht.multivariate_alpha_stable.rvs(alpha = alpha, spectral_measure_sampler = sampler,shift=shift, size = n)

with corresponding scatter plots shown in Figure 8.

\text{Masses}=[1,1,1,1], \text{weights}=[(1,0),(0,1),(-1,0),(0,-1)], \alpha=0.2, \boldsymbol{\mu}^{0 T}=(0,0).

(a)Masses=[1,1,1,1],weights=[(1,0),(0,1),(1,0),(0,1)],α=0.2\text{Masses}=[1,1,1,1], \text{weights}=[(1,0),(0,1),(-1,0),(0,-1)], \alpha=0.2, μ0T=(0,0)\boldsymbol{\mu}^{0 T}=(0,0).

\text{Masses}=[\frac{1}{4},\frac{1}{4},\frac{1}{4},\frac{1}{4}], \text{weights}=[(1,0),(0,1),(-1,0),(0,-1)], \alpha = 1.2, \boldsymbol{\mu}^{0 T}=(1000,1000).

(b)Masses=[14,14,14,14],weights=[(1,0),(0,1),(1,0),(0,1)],α=1.2\text{Masses}=[\frac{1}{4},\frac{1}{4},\frac{1}{4},\frac{1}{4}], \text{weights}=[(1,0),(0,1),(-1,0),(0,-1)], \alpha = 1.2, μ0T=(1000,1000)\boldsymbol{\mu}^{0 T}=(1000,1000).

Masses =[\frac{1}{5},\frac{1}{5},\frac{1}{5},\frac{1}{5},\frac{1}{5}], weights =[(1,0),(0,1),(-1,0),(\cos(\theta),-\sin(\theta)),  (\cos(\pi - \theta),-\sin(\pi - \theta))], \theta = \frac{13\pi}{20}, \alpha=0.1, \boldsymbol{\mu}^{0T}=(0,0).

(c)Masses =[15,15,15,15,15]=[\frac{1}{5},\frac{1}{5},\frac{1}{5},\frac{1}{5},\frac{1}{5}], weights =[(1,0),(0,1),(1,0),(cos(θ),sin(θ)),=[(1,0),(0,1),(-1,0),(\cos(\theta),-\sin(\theta)),
(cos(πθ),sin(πθ))](\cos(\pi - \theta),-\sin(\pi - \theta))], θ=13π20\theta = \frac{13\pi}{20}, α=0.1\alpha=0.1, μ0T=(0,0)\boldsymbol{\mu}^{0T}=(0,0).

Figure 8:Scatter plots each containing 5×1055 \times 10^5 points of α\alpha-stable distributions with a discrete spectral measure. The plots have been truncated to a range of 400 points within the shift vector.

5.2.0.4Mixed spectral measure:

For a mixed spectral measure, let Λ1,,ΛL\Lambda_1, \cdots, \Lambda_L be LL spectral measures with associated weights w1,,wLw_1, \cdots, w_L, and consider their mixture Λmix=i=1LwiΛi\Lambda_{\text{mix}} = \sum_{i=1}^L w_i \Lambda_i. To sample according to this spectral measure, we proceed as follows:

import aub_htp as ht
from aub_htp.random import DiscreteSampler, IsotropicSampler, MixedSampler
alpha = 0.3
shift= [1000,1000]
d = 2
n=500000
gamma=1

# Discrete Spectral Measure
positions=[[1,0],[0,1],[-1,0],[0,-1]]
weights=[1,1,1,1]
sampler1 = DiscreteSampler(alpha = alpha, positions = positions,  weights = weights)

# Isotropic Spectral Measure
sampler2= IsotropicSampler(number_of_dimensions=d, alpha=alpha, gamma=gamma)

#Spectral Measures and Their Associated Weights
spectral_measures=[sampler1, sampler2]
measure_weights=[0.5,0.5]

mixed_sampler=MixedSampler(spectral_measures=spectral_measures,weights=measure_weights)
samples = ht.multivariate_alpha_stable.rvs(alpha = alpha, spectral_measure_sampler = mixed_sampler, shift = shift, size = n)

where spectral_measures is a list containing the spectral measures that we are mixing, and measure_weights contains the associated weight of each measure. The resulting scatter plot is shown in Figure 9a.

5.2.0.5Custom spectral measures:

The common spectral measures presented above are built-in into AUB-HTP. If the user wants to sample from an α\alpha-stable random vector whose spectral measure is not built-in, this is made possible using a systematic procedure outlined in the following example:

The steps are presented below.

import aub_htp as ht
from aub_htp.random import BaseSpectralMeasureSampler
alpha = 0.3
shift= [0,0]
d = 2
n=500000

class ButterflySampler(BaseSpectralMeasureSampler):
    def sample(self, number_of_samples: int, random_state = None):
        p = np.random.rand(number_of_samples)
        theta = np.empty(number_of_samples)

        mask = p <= 0.5
        theta[mask] = np.random.uniform(-np.pi / 4, np.pi / 4, size=mask.sum())
        theta[~mask] = np.random.uniform(
            3 * np.pi / 4,
            5 * np.pi / 4,
            size=(~mask).sum()
        )

        x = np.cos(theta)
        y = np.sin(theta)

        return np.column_stack((x, y))

    def dimensions(self) -> int:
        return 2

    def mass(self) -> float:
        return 1.0

samples = ht.multivariate_alpha_stable.rvs(alpha = alpha, spectral_measure_sampler=ButterflySampler(), size = n, shift=shift)

We highlight that the mass of the sphere and the dimension should be specified when implementing the sub-class. The resulting scatter plot is shown in Figure 9b. It is important to emphasize that when α1\alpha \geq 1, the custom spectral measure should satisfy the condition in equation (22).

Mix between isotropic and discrete spectral measures.

(a)Mix between isotropic and discrete spectral measures.

A custom spectral measure

(b)A custom spectral measure

Mix between custom and discrete spectral measures.

(c)Mix between custom and discrete spectral measures.

Figure 9:Scatter plots showing a custom spectral measure and different mixtures of spectral measures. The plots have been truncated to a range of 400 points within the shift vector.

One could mix a custom spectral measure, with another spectral measure. For example, we mix below equally the spectral measure defined above with the discrete spectral measure with masses=[(1,0),(0,1),(1,0),(0,1)]\text{masses}=[(1,0),(0,1),(-1,0),(0,-1)] and weights=[1,1,0.25,0.25],\text{weights}=[1,1,0.25,0.25], and the random vector has α=0.25\alpha=0.25, μ0T=(0,0)\boldsymbol{\mu}^{0 T}=(0,0).

import aub_htp as ht
from aub_htp.random import BaseSpectralMeasureSampler, DiscreteSampler, MixedSampler
alpha = 0.25
shift= [0,0]
d = 2
n=1000000
class ButterflySampler(BaseSpectralMeasureSampler):
    def sample(self, number_of_samples: int, random_state = None):
        p = np.random.rand(number_of_samples)
        theta = np.empty(number_of_samples)

        mask = p <= 0.5
        theta[mask] = np.random.uniform(-np.pi / 4, np.pi / 4, size=mask.sum())
        theta[~mask] = np.random.uniform(
            3 * np.pi / 4,
            5 * np.pi / 4,
            size=(~mask).sum()
        )

        x = np.cos(theta)
        y = np.sin(theta)

        return np.column_stack((x, y))

    def dimensions(self) -> int:
        return 2

    def mass(self) -> float:
        return 1.0

samples = ht.multivariate_alpha_stable.rvs(alpha = alpha, spectral_measure_sampler=ButterflySampler(), size = n, shift=shift)

# Discrete Spectral Measure
positions=[[1,0],[0,1],[-1,0],[0,-1]]
weights=[1,1,0.25,0.25]
sampler1 = DiscreteSampler(alpha = alpha, positions = positions, weights = weights)

#Spectral Measures and Their Associated Weights
spectral_measures=[sampler1, ButterflySampler()]
measure_weights=[0.5,0.5]

mixed_sampler=MixedSampler(spectral_measures=spectral_measures,weights=measure_weights)
samples = ht.multivariate_alpha_stable.rvs(alpha = alpha, spectral_measure_sampler = mixed_sampler,
shift = shift, size = n)
 

The resulting scatterplot is shown in Figure 9c.

6Conclusion

This paper presented AUB-HTP, a Python package for density computation and random variate generation of α\alpha-stable distributions. The package is motivated by the practical difficulty of working with α\alpha-stable laws, whose densities generally lack closed-form expressions and whose multivariate simulation requires careful handling of the underlying spectral measure.

AUB-HTP provides scalar density evaluation through a hybrid strategy that combines input standardization, Zolotarev-type integral representations, series formulas, and numerical inversion of characteristic functions. This design improves robustness across parameter regimes and enables systematic comparisons in terms of accuracy and runtime. The validation results show that the package provides reliable scalar density values and identify parameter regimes in which SciPy’s reference implementation appears to suffer from numerical inaccuracies.

The package also implements scalar and multivariate random variate generation. For multivariate α\alpha-stable vectors, AUB-HTP uses LePage series representations and supports several spectral-measure models, including discrete, isotropic, sub-Gaussian/elliptical, mixed, and custom spectral measures. These features extend the range of α\alpha-stable models that can be simulated within the Python ecosystem. The truncation-error analysis further provides guidance on the approximation induced by finite LePage-series representations.

By bringing together density evaluation, flexible simulation, validation, runtime analysis, and extensible implementation tools, AUB-HTP aims to make α\alpha-stable modeling more accessible for computational work involving heavy-tailed data. Future developments may include multivariate PDF computation, CDF evaluation, parameter-estimation routines, further numerical acceleration, and application-oriented modules for communications, signal processing, and machine learning.

7Appendix: Error analysis for the LePage series estimate

In this appendix, we derive an upper bound on the mean square error of the LePage series estimate; we frequently use the following asymptotics of the gamma function from <i>NIST Digital Library of Mathematical Functions</i> (n.d.): Let xRx\in\mathbb{R} and aa and bb be non-negative scalars. Since

limxΓ(x+a)Γ(x+b)xab=1,\lim_{x \to \infty} \frac{\Gamma(x+a)}{\Gamma(x+b) \, x^{a-b}} = 1,

then a,bR\forall a,b \in\mathbb{R}, there exists an n0n_0 such that

Γ(k+a)Γ(k+b)<2kabkn0.\frac{\Gamma(k+a)}{\Gamma(k+b)} <2{k^{a-b}} \qquad \forall k\geq n_0.

7.1The LePage series truncation error

The proof is as follows.

We start with the case α<1\alpha<1. We have

XnX=c(α)k=n+1Γk1αVkc(α)k=n+1Γk1αVk=c(α)k=n+1Γk1α,\|\mathbf{X}_n-\mathbf{X}\|=\left\|c(\alpha) \sum_{k=n+1}^{\infty}\Gamma_{k}^{-\frac{1}{\alpha}}\mathbf{V}_k\right\|\leq c(\alpha) \sum_{k=n+1}^{\infty}\left\|\Gamma_{k}^{-\frac{1}{\alpha}}\mathbf{V}_k\right\| = c(\alpha)\sum_{k=n+1}^{\infty}\Gamma_k^{-\frac{1}{\alpha}},

which implies

E[XnX2]E[(c(α)k=n+1Γk1α)2]=c2(α)(k=n+1E[Γk2α]+2n<i<jE[Γi1αΓj1α])(a)c2(α)(k=n+1E[Γk2α]+2n<i<jE[Γi2α]E[Γj2α])=c2(α)(k=n+1E[Γk2α]+(k=n+1E[Γk2α])2k=n+1E[Γk2α])=(b)c2(α)(k=n+1Γ(k2α)Γ(k))2<(c)c2(α)(k=n+12k2α)2=2c2(α)(k=n+1k1α)2(d)2α2(1α)2c2(α)n22α\begin{align} \mathbb{E} \left[ \|\mathbf{X}_n-\mathbf{X}\|^2 \right] & \leq \mathbb{E} \left[ \left(c(\alpha)\sum_{k=n+1}^{\infty}\Gamma_k^{-\frac{1}{\alpha}}\right)^2 \right] = c^{2}(\alpha)\left(\sum_{k=n+1}^{\infty} \mathbb{E}\left[\Gamma_k^{-\frac{2}{\alpha}}\right]+2\sum_{n<i<j}\mathbb{E}\left[\Gamma_{i}^{-\frac{1}{\alpha}}\Gamma_{j}^{-\frac{1}{\alpha}}\right]\right)\nonumber\\ &\overset{(a)}{\leq} c^{2}(\alpha)\left( \sum_{k=n+1}^{\infty} \mathbb{E}\left[ \Gamma_k^{-\frac{2}{\alpha}}\right]+2\sum_{n<i<j}\sqrt{\mathbb{E}\left[\Gamma_{i}^{-\frac{2}{\alpha}}\right]\mathbb{E}\left[\Gamma_{j}^{-\frac{2}{\alpha}}\right]}\right) \\ &=c^{2}(\alpha)\left(\sum_{k=n+1}^{\infty} \mathbb{E}\left[ \Gamma_k^{-\frac{2}{\alpha}}\right]+\left(\sum_{k=n+1}^{\infty}\sqrt{\mathbb{E}\left[\Gamma_k^{-\frac{2}{\alpha}}\right]}\right)^2-\sum_{k=n+1}^{\infty}\mathbb{E}\left[\Gamma_k^{-\frac{2}{\alpha}}\right]\right)\\ &\overset{(b)}{=}c^{2}(\alpha)\left(\sum_{k=n+1}^{\infty}\sqrt{\frac{\Gamma(k-\frac{2}{\alpha})}{\Gamma(k)}}\right)^2 \\ &\overset{(c)}{<}c^{2}(\alpha) \left(\sum_{k=n+1}^{\infty}\sqrt{2k^{-\frac{2}{\alpha}}}\right)^2 \\ &=2c^{2}(\alpha)\left(\sum_{k=n+1}^{\infty}k^{-\frac{1}{\alpha}}\right)^2\nonumber\\ &\overset{(d)}{\leq} \frac{2\alpha^2}{(1-\alpha)^2}c^{2}(\alpha)n^{2-\frac{2}{\alpha}} \end{align}

where inequality (a)(a) is due to the Cauchy-Schwarz inequality. The equality in (b)(b) is due to the fact that ΓkGamma(k,1),n2α\Gamma_k\sim\text{Gamma}(k,1),n\geq \frac{2}{\alpha}, and E[Γk2α]=Γ(k2α)Γ(k)\mathbb{E}\left[\Gamma_k^{-\frac{2}{\alpha}}\right]=\frac{\Gamma(k-\frac{2}{\alpha})}{\Gamma(k)}, and inequality (c)(c) is due to (35). Inequality (d)(d) is due to the fact that

k=n+1k1αnx1αdx=α1αn11α.\sum_{k=n+1}^{\infty}k^{-\frac{1}{\alpha}}\leq\int_{n}^{\infty}x^{-\frac{1}{\alpha}}dx=\frac{\alpha}{1-\alpha}n^{1-\frac{1}{\alpha}}.

For the case α1\alpha\geq1, since Vk=1    k=1,,n\|\mathbf{V}_k\|=1\;\forall \;k=1,\cdot\cdot\cdot,n, equation (22) implies E[V]=0\mathbb{E}[\mathbf{V}]=\mathbf{0}. Let Vj=(vj1,vj2,,vjd)\mathbf{V}_j=(v_j^{1},v_j^{2},\cdot\cdot\cdot,v_j^{d}) then we have

E[XnX2]=c2(α)E[=n+1Γk1αV,k=n+1Γk1αVk]=c2(α)E[  k=n+1=n+1i=1dΓk1αΓ1αvkivi]=(a)c2(α)[  k=n+1=n+1i=1dE[Γk1αΓ1α]E[vkivi]]]=(b)c2(α)k=n+1E[Γk2α]E[Vk2]=c2(α)k=n+1Γ(k2α)Γ(k)<2c2(α)k=n+1k2α2α2αc2(α)n12α,\begin{align} \mathbb{E} \left[ \|\mathbf{X}_n - \mathbf{X}\|^2 \right] &= c^{2}(\alpha)\, \mathbb{E}\left[ \Bigl\langle \sum_{\ell=n+1}^{\infty}\Gamma_k^{-\frac{1}{\alpha}}\mathbf{V}_{\ell}, \sum_{k=n+1}^{\infty}\Gamma_k^{-\frac{1}{\alpha}}\mathbf{V}_k \Bigr\rangle \right]\\ &=c^{2}(\alpha)\mathbb{E}\Biggl[\;\sum_{k=n+1}^{\infty}\sum_{\ell=n+1}^{\infty}\sum_{i=1}^{d}\Gamma_k^{-\frac{1}{\alpha}}\Gamma_{\ell}^{-\frac{1}{\alpha}}v_{k}^{i}v_{\ell}^{i}\Biggr]\\ &\overset{(a)}{=}c^{2}(\alpha)\left[\;\sum_{k=n+1}^{\infty}\sum_{\ell=n+1}^{\infty}\sum_{i=1}^{d}\mathbb{E}\left[\Gamma_k^{-\frac{1}{\alpha}}\Gamma_{\ell}^{-\frac{1}{\alpha}}\right]\mathbb{E}\left[v_{k}^{i}v_{\ell}^{i}]\right]\right] \\ &\overset{(b)}{=}c^{2}(\alpha)\sum_{k=n+1}^{\infty}\mathbb{E}\left[\Gamma_k^{-\frac{2}{\alpha}}\right]\mathbb{E}\left[\|\mathbf{V}_k\|^2\right]\\ &=c^{2}(\alpha)\sum_{k=n+1}^{\infty}\frac{\Gamma(k-\frac{2}{\alpha})}{\Gamma(k)}<2c^{2}(\alpha)\sum_{k=n+1}^{\infty}k^{-\frac{2}{\alpha}}\nonumber\\ &\leq\frac{2\alpha}{2-\alpha}c^{2}(\alpha)n^{1-\frac{2}{\alpha}}, \nonumber \end{align}

where equality (a)(a) is due to the fact that Vk ⁣ ⁣ ⁣Γk\mathbf{V}_k \perp\!\!\!\perp \Gamma_{k} and (b)(b) is justified since vki ⁣ ⁣ ⁣viv_k^{i} \perp\!\!\!\perp v^{i}_{\ell}, k\forall \, k\neq\ell and E[vki]=0\mathbb{E}[v^{i}_k]=0, k\forall \,k. The rest of the equalities and inequalities follow by similar steps as in the case α<1\alpha<1.

One can clearly see that the bound on the error decays faster for smaller values of α\alpha. This indicates that this sampling method can appropriately handle the difficult region of small values of α\alpha.

7.2Sub-Gaussian error

Sampling a multivariate sub-Gaussian α\alpha-stable vector can be done by first computing the truncated series Xn\mathbf{X}_n for the isotropic spectral measure with unit-scale, and then applying Yn=Σ12Xn\mathbf{Y}_n=\Sigma^{\frac{1}{2}}\mathbf{X}_n where Σ12\Sigma^{\frac{1}{2}} is the Cholesky decomposition of Σ\Sigma– the desired shape matrix as described in Section 4.2.3. The resulting MSE in that case satisfies

E[YnY2]=E[Σ12(XnX)2]=E[(XnX)TΣ12TΣ12(XnX)]=E[(XnX)TΣ(XnX)]λmax(Σ)E[XnX2],\begin{align*} \mathbb{E} \left[ \|\vect{Y}_n-\vect{Y}\|^{2} \right] &=\mathbb{E} \left[ \left\|\Sigma^{\frac{1}{2}}(\vect{X}_n-\vect{X})\right\|^{2} \right] \\ &=\mathbb{E}\left[(\vect{X}_n-\vect{X})^T\Sigma^{\frac{1}{2}T} \Sigma^{\frac{1}{2}}(\vect{X}_n-\vect{X})\right] =\mathbb{E}\left[(\vect{X}_n-\vect{X})^T\Sigma (\vect{X}_n-\vect{X})\right] \\ & \leq \lambda_{\max}(\Sigma) \, \mathbb{E} \left[ \|\vect{X}_n-\vect{X}\|^2 \right], \end{align*}

where we used the fact that xΣ2λmax(Σ)x2\|\mathbf{x}\|^2_{\Sigma} \leq \lambda_{\max}(\Sigma)\|\mathbf{x}\|^2, with λmax(Σ)\lambda_{\max}(\Sigma) –the largest eigenvalue of Σ\Sigma– being the norm of matrix Σ\SigmaHorn & Johnson (1985). Finally, one can upperbound E[XnX2]\mathbb{E} \left[ \|\mathbf{X}_n-\mathbf{X}\|^2 \right] using Theorem 2.

Footnotes
  1. The characteristic function of a random variable XX is given by the expected value of eitXe^{\ii tX}, φX(u)=E[eiuX].\varphi_X(u) = \mathbb{E}[e^{\ii uX}]. It uniquely determines the distribution of XX, and it always exists.

  2. The term α\alpha-stable is used to refer to the stable family excluding the Gaussian law.

References
  1. Nassar, M., Gulati, K., Sujeeth, A. K., Aghasadeghi, N., Evans, B. L., & Tinsley, K. R. (2008). Mitigating near-field interference in laptop embedded wireless transceivers. IEEE International Conference on Acoustics, Speech and Signal Processing, 1405–1408. 10.1109/ICASSP.2008.4517882
  2. Tsihrintzis, G. A., Tsakalides, P., & Nikias, C. L. (1995). Signal detection in severely heavy-tailed radar clutter. Conference Record of The Twenty-Ninth Asilomar Conference on Signals, Systems and Computers, 2, 865–869 vol.2. 10.1109/ACSSC.1995.540823
  3. Crovella, M. E., Taqqu, M. S., & Bestavros, A. (1998). Heavy-tailed probability distributions in the World Wide Web. A Practical Guide to Heavy Tails, 1, 3–26.
  4. Nolan, J. P. (2013). Multivariate elliptically contoured stable distributions: theory and estimation. Computational Statistics, 28(5), 2067–2089. 10.1007/s00180-013-0396-7
  5. Taleb, N. N. (2022). Statistical Consequences of Fat Tails: Real World Preasymptotics, Epistemology, and Applications. https://arxiv.org/abs/2001.10488
  6. B. V. Gnedenko and A. N. Kolmogorov. (1968). Limit Distributions for Sums of Independent Random Variables. Addison-Wesley Publishing Company.
  7. Chambers, J. M., Mallows, C. L., & Stuck, B. W. (1976). A Method for Simulating Stable Random Variables. Journal of the American Statistical Association, 71(354), 340–344.
  8. Zolotarev, V. M. (1986). One-Dimensional Stable Distributions (Vol. 65). American Mathematical Society.
  9. A. V. Skorohod. (1961). Asymptotic formulas for stable distribution laws. Selected Translations in Mathematical Statistics and Probability, 1, 157–161.
  10. Pollard, H. (1946). The Representation of \(e^-x^λ\) as a Laplace Integral. Bulletin of the American Mathematical Society, 52(10), 908–910. 10.1090/S0002-9904-1946-08608-2
  11. Bergström, H. (1952). On Some Expansions of Stable Distribution Functions. Arkiv För Matematik, 2(4), 375–378. 10.1007/BF02591503
  12. LePage, R., Woodroofe, M., & Zinn, J. (1981). Convergence to a Stable Distribution Via Order Statistics. The Annals of Probability, 9(4), 624–632.
  13. Samorodnitsky, G., & Taqqu, M. S. (2000). Stable non-Gaussian random processes : stochastic models with infinite variance (1st ed.). Chapman & Hall/CRC.
  14. Nolan, J. P. (2020). Univariate Stable Distributions: Models for Heavy Tailed Data (1st Edition 2020). Springer Nature.
  15. Wintner, A. (1941). The Singularities of Cauchy’s Distributions. Duke Mathematical Journal, 8, 678–681.