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 testspc.get_binomial_tests()will recover the p-values of the binomial testspc.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)
| File | Size | Uploaded | |
|---|---|---|---|
| pypcurve-0.1.1.tar.gz | 15.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|