p 值计算(置信度)

p 值计算(置信度)注意 这里需要对 取绝对值 即 2 273 2 273 是介于 1 96 到 2 58 之间 所以 p 值介于 0 01 到 0 05 之间

大家好,欢迎来到IT知识分享网。

一、p值的概念

在这里插入图片描述

下图中,μ0 表示整个地区的总体均值,μ 表示整个矿区的整体均值, X ‾ \overline{X} X 表示矿区抽样的均值

  • H0是无效假设(原假设),即,矿区的均值和该地区的均值其实是一样的,只是因为抽样误差而导致的(即矿区的样本是整个地区样本的一部分)
  • H1是备择假设,即,矿区的数据分布和整个地区的数据分布是完全不同的,两者均值本身就不相等。所以从矿区中抽样出来的均值自然和整个地区的均值不同,即矿区影响了新生儿头围的发育
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • μ 越大,p 越小;μ越小,p越大
    在这里插入图片描述
    接受 H1 即表示:矿区新生儿的头围,和全地区的数据,是不一致的
    在这里插入图片描述


如下图所示,即表示,H0的零假设其实就是假设 “没有差别”,拒绝了 “没有差别” 的假设,那结论自然就是 “有差别”
在这里插入图片描述

在这里插入图片描述

参考:【统计】从P值到6σ(六西格玛)质量控制(P值与Z值,与置信水平的关系,python scipy 计算)

在这里插入图片描述

In [88]: from scipy.stats import norm In [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.17795 In [92]: norm.cdf(-1.96) Out[92]: 0.0 In [93]: norm.cdf(1.96)-norm.cdf(-1.96) Out[93]: 0.3559 # 参考 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.37305 In [114]: scipy.stats.t.cdf(1.67, df=1) Out[114]: 0.37305 

二、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.html exp 后缀表示实验组,base 后缀表示基线组 """ num = num_exp + num_base mu = mu_exp - mu_base mu_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_base t_value = mu / np.sqrt(var) # 自由度 degrees of freedom,当自由度足够大时,计算出来的p值几乎没有差别 df = num - 1 # df = var2 / ((var_exp2)/(num_exp2 * (num_exp-1)) + (var_base2) / (num_base2 * (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, mu return pvalue, lower_bound, upper_bound, mu_ratio """ arpu 相对值 # old_df,自由度 df=num-1 mu: 0.007, var: 0.004, t_value: 0.2, df: In [193]: 0.007 / np.sqrt(0.004) Out[193]: 0. In [179]: t.sf(0.2, ) Out[179]: 0.94182 # new_df,自由度 df=var2 / ((var_exp2)/(num_exp2 * (num_exp-1)) + (var_base2) / (num_base2 * (num_base-1))) mu: -0.007, var: 0.004, t_value: -0.2, df: .10005 In [180]: t.sf(0.2, .10005) Out[180]: 0.26953 arpu 绝对值 # old_df,自由度 df=num-1 mu: 0.16, var: 0.7, t_value: 0., df: In [194]: 0.16 / np.sqrt(0.7) Out[194]: 0. In [190]: t.sf(0., ) Out[190]: 0. # new_df,自由度df=var2 / ((var_exp2)/(num_exp2 * (num_exp-1)) + (var_base2) / (num_base2 * (num_base-1))) mu: 0.16, var: 0.7, t_value: 0., df: .10005 In [191]: t.sf(0., .1005) Out[191]: 0.87206 结论 1. 使用arpu 绝对值 还是 相对值,计算出来的p值没有差异 2. 使用新版的 df 计算方法,p值也没有差异(当自由度足够大时,对p值计算几乎没有影响了,因为当自由度足够大时,已经趋近于正态分布,算出来的面积已经基本是不变的常数了) """ 

关于 自由度 df 的理解

  • 根据谢宇老师《回归分析》一书中的介绍:自由度是通过样本统计量来估计总体参数时必须涉及的一个基本概念,指的是计算样本统计量时能自由取值的数值个数。当做t检验时,是用样本方差去对总体方差进行估计。需要变量减去观测样本的均值,故而样本中只有n-1个自由取值。确定了n-1个数,基于均值,第n个数就确定了。所以一般来讲,丧失的自由度数目也就是需要估计的参数的数目,或者约束条件的数目。

其他参考

  • 维基百科 学生t-分布
  • python绘制正态分布及三大抽样分布的概率密度图像(一)
  • 官方文档 scipy.stats.t

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/136637.html

(0)
上一篇 2025-06-25 22:20
下一篇 2025-06-25 22:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信