Skip to main content

Contains a few functions useful for data-analysis, causal inference etc.

Project description

skmiscpy

PyPI Python Versions License Build codecov

Contains a few functions useful for data-analysis, causal inference etc.

Installation

pip install skmiscpy

Usage

So far, skmiscpy can be used to do a basic causal analysis. Here very simple examples are shown for demonstration purposes. Check Causal Analysis Workflow & Estimating ATE Using skmiscpy for better understanding.

import pandas as pd
from skmiscpy import compute_smd, plot_smd
from skmiscpy import plot_mirror_histogram

Draw a mirror histogram

data = pd.DataFrame({
    'treatment': [1, 1, 0, 0, 1, 0],
    'propensity_score': [2.0, 3.5, 3.0, 2.2, 2.2, 3.3]
})

plot_mirror_histogram(data=data, var='propensity_score', group='treatment')

# Draw a weighted mirror histogram
data_with_weights = pd.DataFrame({
    'treatment': [1, 1, 0, 0, 1, 0],
    'propensity_score': [2.0, 3.5, 3.0, 2.2, 2.2, 3.3],
    'weights': [1.0, 1.5, 2.0, 1.2, 1.1, 0.8]
})

plot_mirror_histogram(
    data=data_with_weights, var='propensity_score', group='treatment', weights='weights',
    xlabel='Propensity Score', ylabel='Weighted Count', title='Weighted Mirror Histogram'
)

Compute Standardized Mean Difference (SMD)

sample_df = pd.DataFrame({
    'age': np.random.randint(18, 66, size=100),
    'weight': np.round(np.random.uniform(120, 200, size=100), 1),
    'gender': np.random.choice(['male', 'female'], size=100),
    'race': np.random.choice(
        ['white', 'black', 'hispanic'],
        size=100, p=[0.4, 0.3, 0.3]
    ),
    'educ_level': np.random.choice(
        ['bachelor', 'master', 'doctorate'],
        size=100, p=[0.3, 0.4, 0.3]
    ),
    'ps_wts': np.round(np.random.uniform(0.1, 1.0, size=100), 2),
    'group': np.random.choice(['treated', 'control'], size=100),
    'date': pd.date_range(start='2024-01-01', periods=100, freq='D')
})

# 1. Basic usage with unadjusted SMD only:
compute_smd(sample_df, vars=['age', 'weight', 'gender'], group='group', estimand='ATE')

# 2. Including weights for adjusted SMD:
compute_smd(
    sample_df, 
    vars=['age', 'weight', 'gender'], 
    group='group', wt_var='ps_wts',
    estimand='ATE'
)

# 3. Including categorical variables for adjusted SMD:
compute_smd(
    sample_df,
    vars=['age', 'weight', 'gender'],
    group='group',
    wt_var='ps_wts',
    cat_vars=['race', 'educ_level'],
    estimand='ATE'
)

Create a love plot (point plot of SMD)

data = pd.DataFrame({
    'variables': ['age', 'bmi', 'blood_pressure'],
    'unadjusted_smd': [0.25, 0.4, 0.1],
    'adjusted_smd': [0.05, 0.2, 0.08]
})

plot_smd(data)

## Adding a reference line at 0.1
plot_smd(data, add_ref_line=True, ref_line_value=0.1)

## Customizing the Seaborn plot with additional keyword arguments
plot_smd(data, add_ref_line=True, ref_line_value=0.1, palette='coolwarm', markers=['o', 's'])

Contributing

Interested in contributing? Check out the contributing guidelines. Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.

License

skmiscpy was created by Shafayet Khan Shafee. It is licensed under the terms of the MIT license.

Credits

skmiscpy was created with cookiecutter and the py-pkgs-cookiecutter template.

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

skmiscpy-0.4.0.tar.gz (13.3 kB view details)

Uploaded Source

Built Distribution

skmiscpy-0.4.0-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file skmiscpy-0.4.0.tar.gz.

File metadata

  • Download URL: skmiscpy-0.4.0.tar.gz
  • Upload date:
  • Size: 13.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for skmiscpy-0.4.0.tar.gz
Algorithm Hash digest
SHA256 b344d9cec8ce467475896facdaf25a28bb4bc3383eaf393a39f2c4495fe3131b
MD5 dfd1d7e38073c1b5397e63b568f59c99
BLAKE2b-256 feccf8466782dfcb58ceb2ff833c96ebbc94bf89ba189ecdd48ccd69db656864

See more details on using hashes here.

File details

Details for the file skmiscpy-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: skmiscpy-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for skmiscpy-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 db0e5a6d9c081b1dd72f4bd1d4ccebee0183028ea8c4bfdd0103a00dd696fa20
MD5 41eacf1255c9df478bebc45aeb4dab7a
BLAKE2b-256 780d613b566f4d69f7b196030b1c0bd624240a2d8160899e4a6677bfc60e0a1e

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