Skip to main content

Package to help with the propagation of uncertainty when disaggregating data, using the maximum entropy principle.

Project description

maxent_disaggregation

PyPI Status Python Version License

Read the documentation at https://maxent_disaggregation.readthedocs.io/ Tests

Black

maxent_disaggregation is a python package to help with the propagation of uncertainty when disaggregating data, based on the maximum entropy principle. It samples from various forms of the Dirichlet distribution, maximising the entropy based on the available information.

Installation

You can install maxent_disaggregation via pip from PyPI:

$ pip install maxent_disaggregation

The goal of maxent_disaggregation is to provide an easy to use Python tool that helps you with uncertainty propagation when data disaggregation is involved. Data disaggregation usually involves splitting one data point $$Y_0$$ into $$K$$ disaggregate quantities $$Y_1, Y_2, ..., Y_K$$ using proxy data. It is a common problem in many different research disciplines.

flowchart-elk TD
    %% Define node classes
    classDef Aggregate fill:#eeeee4,color:black,stroke:none;
    classDef DisAgg1 fill:#abdbe3,color:black,stroke:none;
    classDef DisAgg2 fill:#e28743,color:black,stroke:none;
    classDef DisAgg3 fill:#abdbe3,color:black,stroke:none;

    agg("Y_0"):::Aggregate
    disagg1("Y_1=x_1 Y_0"):::DisAgg1
    disagg2("Y_2=x_2 Y_0"):::DisAgg1
    disagg3("Y_3=x_3 Y_0"):::DisAgg1
   

    %% Define connections
    agg  --> disagg1
    agg  --> disagg2
    agg  --> disagg3

For more detailed description of the package, theory please see the documentation page. For a quickstart see below:

Quick start

from maxent_disaggregation import maxent_disagg
import numpy as np

# best guess or mean of the total quantity Y_0 (if available)
mean_aggregate = 10
# best guess of the standard deviation of the total quantity Y_0 (if available)
sd_aggregate = 1
# min/max value of the total quantity Y_o (if applicable/available) (optional)
min_aggregate = 0
max_aggregate = np.inf
# best guess values and uncertainties from proxy data for the shares (x_i) if available (of not available put in np.nan)
shares_disaggregates = [0.4, 0.25, 0.2, 0.15]
sds_shares = [0.1, np.nan, 0.04, 0.001]

# Now draw 10000 samples
samples, _ = maxent_disagg(n=10000, 
                        mean_0=mean_aggregate,
                        sd_0=sd_aggregate,
                        min_0=min_aggregate,
                        max_0=max_aggregate, 
                        shares=shares_disaggregates, 
                        sds=sds_shares, 
                        )

# Now plot the sampled distributions
from maxent_disaggregation import plot_samples_hist
# the input values are provided for the legend
plot_samples_hist(samples, 
                  mean_0=mean_aggregate,
                  sd_0=sd_aggregate, 
                  shares=shares_disaggregates, 
                  sds=sds_shares)

Histograms of the samples for both the disaggregate and aggregate values.

We can also easily plot the covariances between the different disaggrate quantities:

# Plot the covariances between the disaggregates
from maxent_disaggregation import plot_covariances
plot_covariances(samples)

Covariances of the samples for the disaggregate quantities.

Reference

If you find this package useful please share and cite our paper: [DOI]

Contributing

Contributions are very welcome. To learn more, see the Contributor Guide.

License

Distributed under the terms of the MIT license, maxent_disaggregation is free and open source software.

Issues

If you encounter any problems, please file an issue along with a detailed description.

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

maxent_disaggregation-1.1.0.tar.gz (21.7 kB view details)

Uploaded Source

Built Distribution

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

maxent_disaggregation-1.1.0-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

Details for the file maxent_disaggregation-1.1.0.tar.gz.

File metadata

  • Download URL: maxent_disaggregation-1.1.0.tar.gz
  • Upload date:
  • Size: 21.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for maxent_disaggregation-1.1.0.tar.gz
Algorithm Hash digest
SHA256 b2cd6506c8a901632b3b9f951062bf0d3e7ce12c57a5e3b2b1f96866c14f0ca0
MD5 894e1d170ef2ddfe569800381be75881
BLAKE2b-256 e9051e71960f80a93b9a71bfe43dc7b7a33cdedb7ae362e587d24da0d30f6ffb

See more details on using hashes here.

Provenance

The following attestation bundles were made for maxent_disaggregation-1.1.0.tar.gz:

Publisher: python-package-deploy.yml on jakobsarthur/maxent_disaggregation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file maxent_disaggregation-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for maxent_disaggregation-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 597415ea2631960cda43b5853c4ca06dbaa41b529b05a5e1a9f7df7db2ecdb64
MD5 0e8cd44cdd20f860014c3eed47e345c4
BLAKE2b-256 a5fd357a8f421f8553ef2b5843a74a6cfbb6f9a332b7847ae92255b0227b9c53

See more details on using hashes here.

Provenance

The following attestation bundles were made for maxent_disaggregation-1.1.0-py3-none-any.whl:

Publisher: python-package-deploy.yml on jakobsarthur/maxent_disaggregation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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