⭐️ statsmodels 中 ztest 基本使用
statsmodels 也是一个强大的统计分析库,提供了丰富的统计模型和检验功能。对于 Z 检验,statsmodels 提供了 ztest 函数。
以下是使用 statsmodels 进行 Z 检验的示例:
from statsmodels.stats.weightstats import ztest
import numpy as np
# 示例数据,两列数据
data = np.array([[1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5],
[2, 3, 3, 4, 4, 4, 5, 5, 5, 5, 6, 6]])
# ztest假设检验
z_stat, p_value = ztest(data, value=3, alternative="two-sided", usevar="pooled")
# 打印结果
print(f"Z-statistic: {z_stat}")
print(f"P-value: {p_value}")
运行结果如下:
Z-statistic: [-3. -1. -1. 1. 1. 1. 3. 3. 3. 3. 5. 5.]
P-value: [2.69979606e-03 3.17310508e-01 3.17310508e-01 3.17310508e-01
3.17310508e-01 3.17310508e-01 2.69979606e-03 2.69979606e-03
2.69979606e-03 2.69979606e-03 5.73303144e-07 5.73303144e-07]
在这个示例中,z_stat 是 Z 统计量,p_value 是对应的 p 值,你可以使用这些值来判断是否拒绝原假设。
更多细节参考 statsmodels 官网
⭐️ ztest中ddof起什么作用
在 statsmodels.api.stats.ztest 中,ddof 表示 Delta Degrees of Freedom ,即自由度的修正值。在 Z 检验中,ddof 参数用于调整标准差的自由度。
在统计学中,标准差的自由度是指在计算标准差时用于估计总体标准差的自由度。标准差是衡量数据分散程度的一种度量,用于描述数据集中个体值与均值的离散程度。
在样本统计中,我们通常使用样本标准差(sample standard deviation)来估计总体标准差。样本标准差的计算式如下:
在这里,n−ddof 表示样本标准差的自由度。这个修正是由于使用样本数据估计总体标准差时,我们失去了一个自由度。
如果我们从整个总体中取得所有可能的样本,计算每个样本的样本标准差,然后将这些样本标准差的平均值作为总体标准差,那么自由度的修正是不需要的。但在实际应用中,我们通常只能获得一个样本,因此需要使用 n−ddof 来进行自由度的修正。
在 Z 检验等统计推断中,自由度的修正是为了更好地适应样本估计总体标准差的情况,确保统计检验的准确性。
以下是一个示例,演示了如何使用 ddof 参数:
import statsmodels.api as sm
import numpy as np
# 示例数据
sample_data = np.array([1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5])
# 假设检验,这里假设总体均值为 3
mean_value = 3
# 使用默认的 ddof(ddof=0)
z_stat_default, p_value_default = sm.stats.ztest(sample_data, value=mean_value)
# 使用 ddof=1
z_stat_ddof1, p_value_ddof1 = sm.stats.ztest(sample_data, value=mean_value, ddof=1)
# 打印结果
print(f"Z-statistic (Default ddof=0): {z_stat_default}, P-value: {p_value_default}")
print(f"Z-statistic (ddof=1): {z_stat_ddof1}, P-value: {p_value_ddof1}")
运行结果如下:
Z-statistic (Default ddof=0): 0.9380831519646864, P-value: 0.34820167941312596
Z-statistic (ddof=1): 0.9380831519646864, P-value: 0.34820167941312596
以上就是本文的内容。
笔者水平有限,若有不对的地方欢迎评论指正!