比例测试:Z-test vs bootstrap/permutation - 不同的结果
Posted
技术标签:
【中文标题】比例测试:Z-test vs bootstrap/permutation - 不同的结果【英文标题】:Proportion Test: Z-test vs bootstrap/permutation - different results 【发布时间】:2019-07-23 18:21:48 【问题描述】:我正在学习假设检验,并通过以下示例:
一家大型电力公司的首席执行官声称,他的 1,000,000 名客户中有 80% 对他们获得的服务非常满意。为了验证这一说法,当地报纸使用简单随机抽样调查了 100 名客户。在抽样的客户中,73% 的人表示他们非常满意。基于这些发现,我们是否可以拒绝 CEO 的假设,即 80% 的客户非常满意?使用 0.05 的显着性水平。
与 python 中的自举方法相比,使用单样本 z 检验计算 p 值时,我得到了不同的结果。
Z-测试方法:
σ = sqrt [(0.8 * 0.2) / 100] = sqrt(0.0016) = 0.04 z = (p - P) / σ = (.73 - .80)/0.04 = -1.75
双尾检验,因此 P(z 1.75) = 0.04。
因此,P 值 = 0.04 + 0.04 = 0.08。
引导方法(在 Python 中):
一般的方法是从总体(1,000,000)中随机抽取一个大小为 100 的样本,其中 80% 的人都满意
repeat 5000 times:
take random sample of size 100 from population (1,000,000, 80% of which are satisfied)
count the number of satisfied customers in sample, and append count to list satisfied_counts
calculate number of times that a value of 73 or more extreme (<73) occurs. Divide this by the number of items in satisfied_counts
Since it's a two-tailed test, double the result to get the p-value.
使用此方法,p 值为 0.11。
代码如下:
population = np.array(['satisfied']*800000+['not satisfied']*200000) # 80% satisfied (1M population)
num_runs = 5000
sample_size = 100
satisfied_counts = []
for i in range(num_runs):
sample = np.random.choice(population, size=sample_size, replace = False)
hist = pd.Series(sample).value_counts()
satisfied_counts.append(hist['satisfied'])
p_val = sum(i <= 73 for i in satisfied_counts) / len(satisfied_counts) * 2
为什么这两个结果不同?任何帮助/指向正确的方向表示赞赏!
【问题讨论】:
【参考方案1】:区别在于栅栏柱/舍入误差的一种形式。
正态近似表示获得 0.73 的几率大约是对应正态分布介于 0.725 和 0.735 之间的几率。因此,您应该使用 0.735 作为截止值。这将使这两个数字更接近。
【讨论】:
谢谢,就是这样!以上是关于比例测试:Z-test vs bootstrap/permutation - 不同的结果的主要内容,如果未能解决你的问题,请参考以下文章
Bootstrap 3.x.x VS Alpha 4 - 巫师破碎
打开 bootstrap.min.css 崩溃 VS2010
Apple Accelerate vDSP fft vs DFT 和比例因子
如何在 VS2017 上将 ASP.MVC 脚手架从 Bootstrap 3 更新到 Bootstrap 4?