How do I calculate the z score
of a p-value
and vice versa?
For example if I have a p-value of 0.95
I should get 1.96
in return.
I saw some functions in scipy but they only run a z-test on an array.
I have access to numpy, statsmodel, pandas, and scipy (I think).
To find the probability of LARGER z-score, which is the probability of observing a value greater than x (the area under the curve to the RIGHT of x), type: =1 - NORMSDIST (and input the z-score you calculated).
Conclusion. In a normally distributed data set, you can find the probability of a particular event as long as you have the mean and standard deviation. With these, you can calculate the z-score using the formula z = (x – μ (mean)) / σ (standard deviation).
>>> import scipy.stats as st >>> st.norm.ppf(.95) 1.6448536269514722 >>> st.norm.cdf(1.64) 0.94949741652589625
As other users noted, Python calculates left/lower-tail probabilities by default. If you want to determine the density points where 95% of the distribution is included, you have to take another approach:
>>>st.norm.ppf(.975) 1.959963984540054 >>>st.norm.ppf(.025) -1.960063984540054
Starting in Python 3.8
, the standard library provides the NormalDist
object as part of the statistics
module.
It can be used to get the zscore
for which x% of the area under a normal curve lies (ignoring both tails).
We can obtain one from the other and vice versa using the inv_cdf
(inverse cumulative distribution function) and the cdf
(cumulative distribution function) on the standard normal distribution:
from statistics import NormalDist NormalDist().inv_cdf((1 + 0.95) / 2.) # 1.9599639845400536 NormalDist().cdf(1.9599639845400536) * 2 - 1 # 0.95
An explanation for the '(1 + 0.95) / 2.' formula can be found in this wikipedia section.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With