Numpy 使用norm.ppf和norm.cdf来计算正态分布的逆函数和累积函数
在统计学中,常常需要计算正态分布对应的概率密度函数和累积分布函数。Python中,可以使用Scipy库的stats子库中的norm类来计算正态分布相关函数。
- norm.ppf :逆正态分布函数:给定概率,返回对应的z值;
- norm.cdf :正态分布函数:给定z值,返回对应的概率。
阅读更多:Numpy 教程
norm.ppf()的使用方法
norm.ppf(q, loc=0, scale=1)
参数说明:
– q :概率;
– loc :均值,默认为0;
– scale :标准差,默认为1。
该函数返回给定概率对应的z值。
举例:
import numpy as np
from scipy.stats import norm
q = 0.025 # 给定概率
z = norm.ppf(q) # 返回对应的z值
print(z) # 输出-1.9599639845400545
# 如果给定概率为双尾检验,则需要乘以0.5,以计算单边置信区间对应的概率
p = 1 - 0.05 / 2 # 双尾检验的置信度
z = norm.ppf(p)
print(z) # 输出1.959963984540054
norm.cdf()的使用方法
norm.cdf(x, loc=0, scale=1)
参数说明:
– x :z值;
– loc :均值,默认为0;
– scale :标准差,默认为1。
该函数返回给定z值对应的概率。
举例:
import numpy as np
from scipy.stats import norm
z = 1.96 # 给定z值
p = norm.cdf(z) # 返回对应的概率
print(p) # 输出0.9750021048517795
# 如果计算双尾置信区间,则需要分别计算左右两侧的概率
p = norm.cdf(z) - norm.cdf(-z)
print(p) # 输出0.950004209703559
# 还可以使用norm类中的ppf方法来计算置信区间范围
p1 = 1 - 0.05 / 2
z1 = norm.ppf(p1) # 返回对应的z值
interval = (-z1, z1)
print(interval) # 输出(-1.9599639845400545, 1.9599639845400545)
总结
在Python的Scipy库中,可以使用norm.ppf和norm.cdf来计算正态分布的逆函数和累积函数。在计算统计学中的置信区间和假设检验等问题时,这些函数非常有用。在使用时需要注意参数的设置,特别是均值和标准差的默认取值。