Skip to main content

Specification_Curve

Project description

Specification Curve

Specification Curve is a Python package that performs specification curve analysis; it helps with the problem of the "garden of forking paths" (many defensible choices) when doing analysis by running many regressions and summarising the effects in an easy to digest chart.

PyPI Status Python Version License Tests Codecov pre-commit Black Google Colab DOI Downloads

Linux macOS Windows

Source

Go to the full documentation for Specification Curve.

Quickstart

You can try out specification curve right now in Google Colab.

Here's an example of using Specification Curve.

# import specification curve
import specification_curve as specy


# Generate some fake data
# ------------------------
import numpy as np
import pandas as pd
# Set seed for random numbers
seed_for_prng = 78557
# prng=probabilistic random number generator
prng = np.random.default_rng(seed_for_prng)
n_samples = 400
# Number of dimensions
n_dim = 4
c_rnd_vars = prng.random(size=(n_dim, n_samples))
y_1 = (0.4*c_rnd_vars[0, :] -  # THIS IS THE TRUE VALUE OF THE COEFFICIENT
       0.2*c_rnd_vars[1, :] +
       0.3*prng.standard_normal(n_samples))
# Next line causes y_2 ests to be much more noisy
y_2 = y_1 - 0.5*np.abs(prng.standard_normal(n_samples))
# Put data into dataframe
df = pd.DataFrame([y_1, y_2], ['y1', 'y2']).T
df["x_1"] = c_rnd_vars[0, :]
df["c_1"] = c_rnd_vars[1, :]
df["c_2"] = c_rnd_vars[2, :]
df["c_3"] = c_rnd_vars[3, :]

# Specification Curve Analysis
#-----------------------------
sc = specy.SpecificationCurve(
    df,
    y_endog=['y1', 'y2'],
    x_exog="x_1",
    controls=["c_1", "c_2", "c_3"])
sc.fit()
sc.plot()

Grey squares (black lines when there are many specifications) show whether a variable is included in a specification or not. Blue or red markers and error bars show whether the coefficient is positive and significant (at the 0.05 level) or red and significant, respectively.

Installation

You can install Specification Curve via pip:

$ pip install specification-curve

To install the development version from git, use:

$ pip install git+https://github.com/aeturrell/specification_curve.git

Citing Specification Curve

@misc{aeturrell_2022_7264033,
  author       = {Arthur Turrell},
  title        = {Specification Curve: v0.3.1},
  month        = oct,
  year         = 2022,
  publisher    = {Zenodo},
  version      = {v0.3.1},
  doi          = {10.5281/zenodo.7264033},
  url          = {https://doi.org/10.5281/zenodo.7264033}
}

Using Specification Curve in your paper? Let us know by raising an issue beginning with "citation".

License

Distributed under the terms of the MIT license.

Credits

The package is built with poetry, while the documentation is built with Jupyter Book. Tests are run with nox.

Similar Packages

In RStats, there is specr (which inspired many design choices in this package) and spec_chart. Some of the example data in this package is the same as in specr, but please note that results have not been cross-checked across packages.

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

specification_curve-0.3.2.tar.gz (42.1 kB view hashes)

Uploaded Source

Built Distribution

specification_curve-0.3.2-py3-none-any.whl (39.5 kB view hashes)

Uploaded Python 3

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