p 值计算(置信度)
一、p值的概念
参考 【科研新手必学】手把手教你统计学的P值含义和检验假设
下图中,μ0 表示整个地区的总体均值,μ 表示整个矿区的整体均值, X ‾ \overline{X} X 表示矿区抽样的均值
- H0是无效假设(原假设),即,矿区的均值和该地区的均值其实是一样的,只是因为抽样误差而导致的(即矿区的样本是整个地区样本的一部分)
- H1是备择假设,即,矿区的数据分布和整个地区的数据分布是完全不同的,两者均值本身就不相等。所以从矿区中抽样出来的均值自然和整个地区的均值不同,即矿区影响了新生儿头围的发育
如下图所示,S 表示标准差,n 表示样本数
注意,这里需要对 μ 取绝对值,即 μ=2.273,2.273是介于 1.96 到 2.58 之间,所以 p 值介于 0.01 到 0.05 之间
- μ 越大,p 越小;μ越小,p越大
接受 H1 即表示:矿区新生儿的头围,和全地区的数据,是不一致的
如下图所示,即表示,H0的零假设其实就是假设 “没有差别”,拒绝了 “没有差别” 的假设,那结论自然就是 “有差别”
参考:【统计】从P值到6σ(六西格玛)质量控制(P值与Z值,与置信水平的关系,python scipy 计算)
下图中,z=1.96 表示,距离均值 1.96 个标准差
In [88]: from scipy.stats import normIn [89]: help
Out[89]: Type help() for interactive help, or help(object) for help about object.In [90]: help(norm.cdf)In [91]: norm.cdf(1.96)
Out[91]: 0.9750021048517795In [92]: norm.cdf(-1.96)
Out[92]: 0.024997895148220435In [93]: norm.cdf(1.96)-norm.cdf(-1.96)
Out[93]: 0.950004209703559# 参考 https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.t.html
# sf = 1 - cdf
# 注意下面的参数 df 表示自由度
In [113]: 1-scipy.stats.t.sf(1.67, df=1)
Out[113]: 0.8282595795437305In [114]: scipy.stats.t.cdf(1.67, df=1)
Out[114]: 0.8282595795437305
二、T检验
参考:
- (知乎) 一文详解t检验 ⭐️⭐️⭐️⭐️⭐️)
- (知乎) t检验自由度如何选择?⭐️⭐️⭐️
关于 两个样本均值之差的分布:
参考:
- T检验、T分布、T检验的计算方法
如下图,T分布的自由度 df 越大,则越趋近于正态分布
三、实际计算
在做AB实验时,经常需要计算实验的p值,当p<0.05时,表示该实验的结论是置信的(原假设是实验组和基线没有差别,备择假设是实验组和基线有差别,当p<0.05时,即接受备择假设,即表示实验组和基线有区别)
"""
t 检验, T 检验用于确定两个变量的均值之间是否存在显著差异,并判断它们是否属于同一分布。
"""
from scipy.stats import t def adv_test(self, num_base, mu_base, var_base, num_exp, mu_exp, var_exp, alpha=0.05, beta=0.8):"""官方文档 https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.t.htmlexp 后缀表示实验组,base 后缀表示基线组"""num = num_exp + num_basemu = mu_exp - mu_basemu_ratio = float(mu_exp)/float(mu_base)-1# print("mu_exp: {}, mu_base: {}".format(mu_exp, mu_base))var = var_exp / num_exp + var_base / num_baset_value = mu / np.sqrt(var)# 自由度 degrees of freedom,当自由度足够大时,计算出来的p值几乎没有差别df = num - 1# df = var**2 / ((var_exp**2)/(num_exp**2 * (num_exp-1)) + (var_base**2) / (num_base**2 * (num_base-1)))print("mu: {}, var: {}, t_value: {}, df: {}".format(mu, var, t_value, df))# 这里 t.sf = 1-t.cdf,t.sf 的第二个参数是 df,即自由度(df, degrees of freedom)pvalue = t.sf(t_value, df)half_alpha_percentile = t.isf(alpha / 2, df)lower_bound = mu - half_alpha_percentile * np.sqrt(var)upper_bound = mu + half_alpha_percentile * np.sqrt(var)mde = (t.isf(alpha / 2, num - 2) - t.isf(beta, num - 2)) * np.sqrt(var)# return pvalue, lower_bound, upper_bound, mureturn pvalue, lower_bound, upper_bound, mu_ratio"""
######### arpu 相对值 #######
# old_df,自由度 df=num-1
mu: 0.007, var: 0.00119234226134, t_value: 0.202720454552, df: 26764544
In [193]: 0.007 / np.sqrt(0.00119234226134)
Out[193]: 0.20272045455163987In [179]: t.sf(0.202720454552, 26764544)
Out[179]: 0.4196767681194182# new_df,自由度 df=var**2 / ((var_exp**2)/(num_exp**2 * (num_exp-1)) + (var_base**2) / (num_base**2 * (num_base-1)))
mu: -0.007, var: 0.00119234226134, t_value: -0.202720454552, df: 8170882.10005
In [180]: t.sf(0.202720454552, 8170882.10005)
Out[180]: 0.4196767698726953######### arpu 绝对值 #######
# old_df,自由度 df=num-1
mu: 0.16, var: 0.624730231747, t_value: 0.2024294622, df: 26764544
In [194]: 0.16 / np.sqrt(0.624730231747)
Out[194]: 0.20242946219986416In [190]: t.sf(0.2024294622, 26764544)
Out[190]: 0.41979049958805537# new_df,自由度df=var**2 / ((var_exp**2)/(num_exp**2 * (num_exp-1)) + (var_base**2) / (num_base**2 * (num_base-1)))
mu: 0.16, var: 0.624730231747, t_value: 0.2024294622, df: 8170882.10005
In [191]: t.sf(0.2024294622, 8170882.1005)
Out[191]: 0.4197905013387206#################### 结论 #####################
1. 使用arpu 绝对值 还是 相对值,计算出来的p值没有差异
2. 使用新版的 df 计算方法,p值也没有差异(当自由度足够大时,对p值计算几乎没有影响了,因为当自由度足够大时,已经趋近于正态分布,算出来的面积已经基本是不变的常数了)
"""
关于 自由度 df 的理解
- 根据谢宇老师《回归分析》一书中的介绍:自由度是通过样本统计量来估计总体参数时必须涉及的一个基本概念,指的是计算样本统计量时能自由取值的数值个数。当做t检验时,是用样本方差去对总体方差进行估计。需要变量减去观测样本的均值,故而样本中只有n-1个自由取值。确定了n-1个数,基于均值,第n个数就确定了。所以一般来讲,丧失的自由度数目也就是需要估计的参数的数目,或者约束条件的数目。
其他参考
- 维基百科 学生t-分布
- python绘制正态分布及三大抽样分布的概率密度图像(一)
- 官方文档 scipy.stats.t
p 值计算(置信度)相关推荐
- R语言用户自定义函数的语法结构、编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等)、编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据)、应用自定函数
R语言用户自定义函数的语法结构.编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等).编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据).应用自定函数 ...
- 【数据结构】哈希表、哈希值计算分析
哈希表.哈希值计算分析 哈希表完整代码 引出哈希表 哈希表(Hash Table) 哈希冲突(Hash Collision) JDK1.8的哈希冲突解决方案 哈希函数 如何生成 key 的哈希值 In ...
- 项目管理之项目的挣值计算问题
本文将通过详细讲解历年的四道挣值计算真题来帮助掌握项目管理中的挣值计算问题. 项目管理专业术语与计算公式汇总 真题一:挣值计算(2010.11) 真题二:进度与挣值计算(2012.05) 真题三:进度 ...
- java中计算器算cos值,Android开发中计算器的sin、cos及tan值计算问题分析
本文实例讲述了Android开发中计算器的sin.cos及tan值计算问题.分享给大家供大家参考,具体如下: 接到一个需求 :要求计算器sin90=1,拿到知道很疑问 难道不等于一么?测试了四五个手机 ...
- 大唐无双零武将经验计算机,大唐无双武将初始值计算加守护计算选择技能分享...
大唐无双武将初始值计算加守护计算选择技能分享 很多小伙伴刚玩大唐无双,不清楚武将怎么养成.下面小编就为大家带来了大唐无双武将初始值计算加守护计算选择技能分享,有需要的小伙伴一起来看看吧. BB属性如上 ...
- python 编写函数,实现根据键盘输入的长、宽、高之值计算长方体体积
编写函数,实现根据键盘输入的长.宽.高之值计算长方体体积 n1 = input("长:") n2 = input("宽:") m =input("高: ...
- 深度缓冲中的深度值计算及可视化
概述 在渲染管线中的顶点变换中,介绍了顶点在各个坐标空间的变换.变换到最后,是屏幕坐标空间.在OpenGL中,屏幕空间坐标的Z值即是深度缓冲中的深度值.深度缓冲包含了一个介于0.0和1.0之间的深度值 ...
- 超级电容的容值计算(转)
源:超级电容的容值计算 最近在忙着设计一些硬件电路,其中就用到了超级电容.网上给出的超级电容的计算公式是: 其中U1是超级电容的初始电压,U2是超级电容的最低电压(系统能接受的最低电压):I是期间的电 ...
- 虹科方案 | 自带灭菌值计算功能—FH值验证干热灭菌强度
一.干热灭菌 对于能够耐受高温且不容易被蒸汽穿透或者容易被湿热破坏的材料,通常选用干热灭菌法灭菌.比如粉末.油品.油脂.玻璃制品和不锈钢设备的灭菌.由于干热灭菌对微生物的杀灭率低于同一温度下的饱和蒸汽 ...
最新文章
- spring cloud集成 consul源码分析
- NE5532前级音调板 带高中低音调节和音量调节
- Spring中BeanPostProcessor 执行过程
- 基于SVD的降维优化
- 【干货】TCP/IP协议三次握手四次挥手
- python是什么语言-python是什么语言?哪些人适合学习Python?
- Java中的break和continue关键字使用总结
- SWPU ROUND #6(DIV.3)
- duilib显示html,Duilib 控件类html富文本绘制
- [原]超快速搞定linux的vnc
- C#软件工程师必备技能(工业自动化)
- LabVIEW心率监测装置
- num =10在c语言中是什么意思,num是什么词性
- 机器学习数学相关书籍推荐
- 全国计算机四级薪资,全国计算机四级通过率有多少
- VS Warring
- sip协议呼叫流程详解
- 负载均衡常用流量分发方式
- 关于<graphics.h>的头文件
- Echarts 页面多图自适应的解决办法