1. 问题背景
在学习AB_test的过程中,有计算样本量的环节。其中针对不同样本分布有如下计算公式:
其中授课老师在计算z1-alpha(一类错误临界点值)和z1-beta(二类错误临界点值)这两个的时候,使用的公式为
stats.norm.isf(alpha,loc=0,scale=1)
我发现为什么求的是1-alpha,而计算的时候代入的参数是alpha呢?所以就想探究一下stats.norm下的各个方法所代表的函数究竟是什么意思。
2.stats.norm下的常用方法
- rvs:随机变量(就是从这个分布中抽一些样本)(这个可以看文末链接的另一篇文章)
- pdf:概率密度函数。
- cdf:累计分布函数
- sf:残存函数(1-CDF)
- ppf:分位点函数(CDF的逆)
- isf:逆残存函数(sf的逆)
- stats:返回均值,方差,(费舍尔)偏态,(费舍尔)峰度。
- moment:分布的非中心矩。(这个我在网上没怎么找到资料,也不太清楚该怎么写,如果有知道的小伙伴可以评论区留言一下)
3.stats.norm下各种常用方法的个人理解
python代码
首先导包
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()
画图结果
函数理解
- pdf:概率密度函数 ——注意和正态分布函数不一样,具体概念可看更多文章学习
- cdf:累计分布函数 ——即pdf曲线下方面积,也即概率,是从左侧开始计算的,所以可以看到x越大,cdf的值越大
- sf:残存函数(1-CDF)——即pdf曲线下方面积,也即概率,是从左侧开始计算的,所以可以看到x越大,cdf的值越大
- ppf:分位点函数(CDF的逆)——即根据给定概率求临界点的值,注意这里的概率是从左侧开始算的。也就是一般我们认为的某一个值对应的概率
- isf:逆残存函数(sf的逆)——即根据给定概率求临界点的值,注意这里的概率是从右侧开始算的。这里主要是当右侧检验的时候,可以直接代入右侧的概率。也即stats.norm.isf(x)和stas.norm.ppf(1-x)的值是相等的
注意:累计分布都是正数。而临界点可能有正有负
3.问题解决
因此课程上老师写的是对的,因为在课程案例上用的是单侧(右侧)检验,但是如果方便理解的话,可以写stats.norm.ppf(1-alpha,loc=0,scale=1)
4.其他问题
在文章开头提到的样本量计算公式中,单侧用的都是z1-alpha和z1-beta。那么如果是单侧(左侧)检验的话,是否在公式中就要变成zalpha和zbeta呢?希望老师可以在评论区回答下
5.链接
本文参考及另一篇stats.norm函数的笔记:
另,本文中的项目及课程支持为拉勾数据分析训练营,感谢老师的细心讲解~