比例检验是一种统计方法,用来比较两个比例是否有显著差异。常见的比例检验包括Z检验和自助法(bootstrap)/排列法。
下面是Python代码示例,演示如何进行比例检验,包括Z检验和自助法/排列法的实现:
import numpy as np
import scipy.stats as stats
# 数据示例
group1 = np.array([1, 0, 0, 1, 1, 1, 1, 1, 0, 1])
group2 = np.array([0, 1, 1, 0, 0, 0, 0, 0, 1, 0])
# Z检验
def z_test(group1, group2):
n1 = len(group1)
n2 = len(group2)
p1 = np.sum(group1) / n1
p2 = np.sum(group2) / n2
p = (np.sum(group1) + np.sum(group2)) / (n1 + n2)
z = (p1 - p2) / np.sqrt(p * (1 - p) * (1 / n1 + 1 / n2))
p_value = 2 * (1 - stats.norm.cdf(np.abs(z)))
return p_value
p_value_z = z_test(group1, group2)
print("Z检验的p值:", p_value_z)
# 自助法/排列法
def bootstrap_test(group1, group2, n):
p1 = np.sum(group1) / len(group1)
p2 = np.sum(group2) / len(group2)
p_diffs = []
for _ in range(n):
bootstrap_sample1 = np.random.choice(group1, size=len(group1), replace=True)
bootstrap_sample2 = np.random.choice(group2, size=len(group2), replace=True)
p_diff = np.sum(bootstrap_sample1) / len(bootstrap_sample1) - np.sum(bootstrap_sample2) / len(bootstrap_sample2)
p_diffs.append(p_diff)
p_value = (np.abs(p_diffs) >= np.abs(p1 - p2)).mean()
return p_value
p_value_bootstrap = bootstrap_test(group1, group2, 1000)
print("自助法/排列法的p值:", p_value_bootstrap)
以上代码示例中,首先定义了两个样本组group1和group2,然后分别实现了Z检验和自助法/排列法的函数。在Z检验中,通过计算样本比例和标准误差,进而计算出Z值和p值。在自助法/排列法中,通过重复采样生成多个bootstrap样本,并计算出不同样本组间的比例差异,最后计算p值。
通过运行以上代码,可以得到Z检验和自助法/排列法的p值。根据p值的大小,可以判断两个比例是否有显著差异。当p值小于设定的显著性水平(如0.05)时,可以拒绝原假设,即认为两个比例有显著差异。
上一篇:比例检验的自助法功效分析。
下一篇:比例控制 Matlab