在学习AB_test的过程中,有计算样本量的环节。其中针对不同样本分布有如下计算公式:
其中授课老师在计算z1-alpha(一类错误临界点值)和z1-beta(二类错误临界点值)这两个的时候,使用的公式为
stats.norm.isf(alpha,loc=0,scale=1)
我发现为什么求的是1-alpha,而计算的时候代入的参数是alpha呢?所以就想探究一下stats.norm下的各个方法所代表的函数究竟是什么意思。
首先导包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
import warnings
warnings.filterwarnings('ignore')
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
画图
plt.figure(figsize=(20,12))
ax1 = plt.subplot(2,2,1)
x = np.linspace(0,1,20)
y1 = stats.norm.ppf(x,loc=0,scale=1) # loc: mean 均值, scale: standard deviation 标准差
y2 = stats.norm.isf(x,loc=0,scale=1)
ax1.plot(x,y1,color='r',label='ppf分位点函数(CDF的逆)')
ax1.plot(x,y2,color='b',label='isf逆残存函数(sf的逆)')
ax1.legend(loc='upper right',fontsize = 20)
ax2 = plt.subplot(2,2,2)
x=np.linspace(-1,1,20)
y1 = stats.norm.cdf(x,loc=0,scale=1)
y2 = stats.norm.sf(x,loc=0,scale=1)
ax2.plot(x,y1,color='r',label='cdf累计分布函数')
ax2.plot(x,y2,color='b',label='sf残存函数(1-CDF)')
ax2.legend(loc='upper right',fontsize = 20)
ax3 = plt.subplot(2,2,3)
x=np.linspace(-1,1,20)
y1 = stats.norm.pdf(x,loc=0,scale=1)
y2 = stats.norm.cdf(x,loc=0,scale=1)
ax3.plot(x,y1,color='r',label='pdf概率密度函数')
ax3.plot(x,y2,color='b',label='cdf累计分布函数')
ax3.legend(loc='upper right',fontsize = 20)
# 让视图布局紧凑
plt.tight_layout()
注意:累计分布都是正数。而临界点可能有正有负
因此课程上老师写的是对的,因为在课程案例上用的是单侧(右侧)检验,但是如果方便理解的话,可以写stats.norm.ppf(1-alpha,loc=0,scale=1)
在文章开头提到的样本量计算公式中,单侧用的都是z1-alpha和z1-beta。那么如果是单侧(左侧)检验的话,是否在公式中就要变成zalpha和zbeta呢?希望老师可以在评论区回答下
本文参考及另一篇stats.norm函数的笔记:https://blog.csdn.net/qq_36056219/article/details/112118602
另,本文中的项目及课程支持为拉勾数据分析训练营,感谢老师的细心讲解~