如何在Python中进行假设检验?

3

我希望能够找到P值。我背景是统计学,对Python还比较陌生。有没有什么包可以让我做这个?我正在跟随《从零开始的数据科学》这本书,并且在假设检验和推断方面遇到了一些问题。


也许 SciPy 包 可以实现,这里有一个关于 卡方检验 的页面。 - chickity china chinese chicken
如何计算两个浮点数列表的p值?此外,Python t统计量的p值也可能有所帮助/相关。 - chickity china chinese chicken
1个回答

3

SciPy软件包有一个完整的模块,包括假设检验和内置分布函数等大量统计学内容:scipy.stats

例如,您可以使用Kolmogorov-Smirnov测试来测试随机样本是否符合正态分布:

import numpy as np
from scipy.stats import norm, pareto, kstest

n = 1000
sample_norm = norm.rvs(size=1000)  # generate normally distributed random sample
sample_pareto = pareto.rvs(1.0, size=1000)  # sample from some other distribution for comparison

d_norm, p_norm = kstest(sample_norm, norm.cdf)  # test if the sample_norm is distributed normally (correct hypothesis)
d_pareto, p_pareto = kstest(sample_pareto, norm.cdf)  # test if the sample_pareto is distributed normally (false hypothesis)

print('Statistic values: %.4f, %.4f' % (d_norm, d_pareto))
print('P-values: %.4f, %.4f' % (p_norm, p_pareto))

正如您所看到的,kstest返回统计量和p值的值。norm.cdf表示正态随机变量的累积分布函数。


这正是我在寻找的,谢谢!只有几个跟进问题。首先,在您提供的代码中,您在哪里描述了零假设和备择假设?并且您是否为这些值赋予了一个值?'sample_norm'和'sample_pareto'的值是否只是随机值? - rmahesh
sample_normsample_pareto基本上只是从正态分布和Pareto分布中抽样的数字数组。在这个例子中,我通过使用给定的2个参数调用kstest函数来测试零假设“sample_norm服从正态分布”与备择假设“sample_norm不服从正态分布”,然后对sample_pareto执行相同的操作。因此,正如您所看到的,假设本身并没有在代码中定义,而是由代码隐含地表示出来 :) - Slippy
非常感谢!我一直在寻找一种方法来做这件事并获得P值,而这似乎就是它! - rmahesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接