Skip to main content

pypcurve: A Python Implementation of Simonsohn, Simmons and Nelson's 'p-curve'

Installation

You can install pypcurve with pip:

pip install pypcurve

Using pypcurve

1. Compulsory Reading

First and foremost, read the user guide to the p-curve. It is crucial that users understand what p-curve can and cannot do, that they know which statistical results to select, and that they properly prepare the disclosure table.

2. Formatting the statistical results

pypcurve only requires a list of statistical results, stored in a list (or an array). Similar to the p-curve app, pypcurve accepts the following formats of statistical tests:

  • F(1, 302)=3.273
  • t(103)=4.23
  • r(76)=.42
  • z=1.98
  • chi2(1)=7.1

In addition, pypcurve will accept raw p-values:

  • p = .0023

This is not recommended though: p-values are often weirdly rounded, so enter the statistical result instead if it is reported in the paper.

3. Using pypcurve

A. Initialization

For this example, I will assume that your tests have been properly formatted, and stored in a column called "Tests" of a .csv file.

from pypcurve import PCurve
import pandas as pd
df = pd.read_csv("mydata.csv")
pc = PCurve(df.Tests)

If all your tests are properly formatted, there will be no error, and pcurve will be initialized properly.

B. Printing the p-curve output

Next, you can print the summary of the p-curve, as you would see it using the web-app:

pc.summary()

This will output the p-curve plot, as well as the table summarizing the binomial and Stouffer tests of the p-curve analysis. You can get the plot alone, or the table alone, using the methods pc.plot_pcurve() and pc.pcurve_analysis_summary().

C. Power Estimation

You can use pycurve to estimate the power of the design that generated the statistical tests:

  • pc.estimate_power() will return the power estimate, and the (lower, upper) bounds of 90% confidence interval.
  • pc.plot_power_estimate() will plot the power estimate (as the webapp does).

D. Accessing the results of the p-curve analysis

You can directly access the results of the p-curve analysis using three methods:

  • pc.get_stouffer_tests() will recover the Z and p-values of the Stouffer tests
  • pc.get_binomial_tests() will recover the p-values of the binomial tests
  • pc.get_results_entered() will recover the statistical results entered in the p-curve, and the pp-values and z scores associated with the different alternatives to which they are compared.

You can also directly check if the p-curve passes the cutoff for evidential value, and the cutoff for inadequate evidence (as defined in Better P-Curve), using the properties pc.has_evidential_value and pc.has_inadequate_evidence

Version History

The app is still in beta, so please take care when interpreting the results. I have tested pypcurve against the p-curve app using multiple examples: There are occasional minor deviations between the two, because of the way R (vs. Python) compute the non-central F distribution.

Beta

0.1.0

First beta release.

Metadata

Release files for pypcurve 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pypcurve 0.1.1
File Size Uploaded
pypcurve-0.1.1.tar.gz 15.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pypcurve 0.1.1
File Interpreter ABI Platform
pypcurve-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 30.0 kB

Release files / pypcurve-0.1.1.tar.gz

Download URL pypcurve-0.1.1.tar.gz
Size 15.6 kB
Tags Source
SHA-256 checksum
How to use checksums
fdcd1d3768965fdd3c695ca4059a4c22559f8180e47a945a770a5be6bc1047d1
BLAKE2b-256 checksum
How to use checksums
b31a182a8b4a7d8a0343d5a100150549e0d740c28e56ce38212549f2752e7285
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.16

Release files / pypcurve-0.1.1-py3-none-any.whl

Download URL pypcurve-0.1.1-py3-none-any.whl
Size 14.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a15f2712b367ffebd6b5e3813456fb73fe810a275733131629972b3419dee7a9
BLAKE2b-256 checksum
How to use checksums
569822c4a408f13cabfe7d4214a1b7e274df0c36f15dff6ad46dd1c96f080ad6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.16

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page