Skip to main content

A Python library for p-curve estimation

Project description

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.

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

pypcurve-0.1.1.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

pypcurve-0.1.1-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file pypcurve-0.1.1.tar.gz.

File metadata

  • Download URL: pypcurve-0.1.1.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.16

File hashes

Hashes for pypcurve-0.1.1.tar.gz
Algorithm Hash digest
SHA256 fdcd1d3768965fdd3c695ca4059a4c22559f8180e47a945a770a5be6bc1047d1
MD5 b10ddaa1f11eed8a74e3ee8d14307a6c
BLAKE2b-256 b31a182a8b4a7d8a0343d5a100150549e0d740c28e56ce38212549f2752e7285

See more details on using hashes here.

File details

Details for the file pypcurve-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pypcurve-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.16

File hashes

Hashes for pypcurve-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a15f2712b367ffebd6b5e3813456fb73fe810a275733131629972b3419dee7a9
MD5 23493adb733236dea1e039724b9c8853
BLAKE2b-256 569822c4a408f13cabfe7d4214a1b7e274df0c36f15dff6ad46dd1c96f080ad6

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