Skip to main content

A Python package for estimating tail parameters of heavy-tailed distributions, which is useful for analyzing power-law behavior in complex networks.

Project description

tailestim

A Python package for estimating tail parameters of heavy-tailed distributions, which is useful for analyzing power-law behavior in complex networks.

[!NOTE] The original estimation implementations are from ivanvoitalov/tail-estimation. This is a wrapper package that provides a more convenient/modern interface and logging, that can be installed using pip and conda.

Features

  • Multiple estimation methods including Hill, Moments, Kernel, Pickands, and Smooth Hill estimators
  • Double-bootstrap procedure for optimal threshold selection
  • Built-in dataset loader for example networks
  • Support for custom network data analysis
  • Comprehensive parameter estimation and diagnostics

Installation

pip install tailestim

Quick Start

Using Built-in Datasets

from tailestim.datasets import TailData
from tailestim.estimator import TailEstimator

# Load a sample dataset
data = TailData(name='CAIDA_KONECT').data

# Initialize and fit the estimator
estimator = TailEstimator(method='hill')
estimator.fit(data)

# Get the estimated parameters
result = estimator.get_parameters()
gamma = result['gamma']

# Print full results
print(estimator)

Using degree sequence from networkx graphs

import networkx as nx
from tailestim.estimator import TailEstimator

# Create or load your network
G = nx.barabasi_albert_graph(10000, 2)
degree = list(dict(G.degree()).values()) # Degree sequence

# Initialize and fit the estimator
estimator = TailEstimator(method='hill')
estimator.fit(degree)

# Get the estimated parameters
result = estimator.get_parameters()
gamma = result['gamma']

# Print full results
print(estimator)

Available Methods

The package provides several methods for tail estimation. For details on parameters that can be specified to each methods, please refer to the original repository ivanvoitalov/tail-estimation, original paper, or the actual code.

  1. Hill Estimator (method='hill')
    • Classical Hill estimator with double-bootstrap for optimal threshold selection
    • Default method, generally recommended for power law analysis
  2. Moments Estimator (method='moments')
    • Moments-based estimation with double-bootstrap
    • More robust to certain types of deviations from pure power law
  3. Kernel-type Estimator (method='kernel')
    • Kernel-based estimation with double-bootstrap and bandwidth selection
    • Additional parameters: hsteps (int, default=200), alpha (float, default=0.6)
  4. Pickands Estimator (method='pickands')
    • Pickands-based estimation (no bootstrap)
    • Provides arrays of estimates across different thresholds
  5. Smooth Hill Estimator (method='smooth_hill')
    • Smoothed version of the Hill estimator (no bootstrap)
    • Additional parameter: r_smooth (int, default=2)

Results

The results can be obtained by estimator.get_parameters(), which returns a dictionary. This includes:

  • gamma: Power law exponent (γ = 1 + 1/ξ)
  • xi_star: Tail index (ξ)
  • k_star: Optimal order statistic
  • Bootstrap results (when applicable):
    • First and second bootstrap AMSE values
    • Optimal bandwidths or minimum AMSE fractions

Example Output

When you print(estimator) after fitting, you will get the following output.

==================================================
Tail Estimation Results (Hill Method)
==================================================

Parameters:
--------------------
Optimal order statistic (k*): 6873
Tail index (ξ): 0.6191
Gamma (powerlaw exponent) (γ): 2.6151

Bootstrap Results:
--------------------
First bootstrap minimum AMSE fraction: 0.6899
Second bootstrap minimum AMSE fraction: 0.6901

Built-in Datasets

The package includes several example datasets:

  • CAIDA_KONECT
  • Libimseti_in_KONECT
  • Pareto

Load any example dataset using:

from tailestim.datasets import TailData
data = TailData(name='dataset_name').data

References

License

tailestim is distributed under the terms of the MIT license.

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

tailestim-0.0.4.tar.gz (66.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tailestim-0.0.4-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file tailestim-0.0.4.tar.gz.

File metadata

  • Download URL: tailestim-0.0.4.tar.gz
  • Upload date:
  • Size: 66.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for tailestim-0.0.4.tar.gz
Algorithm Hash digest
SHA256 727962f0bf4b257196d3dfb7d6764a76431d7eb20f15f6ea808b8da465605439
MD5 48ca9e78f4345fef0c45e706563f19b3
BLAKE2b-256 1e0f68f8af52a2482244710e6630a29de5fb2e00cb084b68a368970598ef31f6

See more details on using hashes here.

File details

Details for the file tailestim-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: tailestim-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for tailestim-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 9b49ad8da908aaaf3ca4f955acab088205241db30d14dcc99a90fdaead479103
MD5 12481afa71c09bef2e9dd23f33db2ea3
BLAKE2b-256 dc5abec2271c06a91a84b53e009c91b1d12e1e8d4a9f0546ef64871e0a48f77c

See more details on using hashes here.

Supported by

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