我希望能够找到P值。我背景是统计学,对Python还比较陌生。有没有什么包可以让我做这个?我正在跟随《从零开始的数据科学》这本书,并且在假设检验和推断方面遇到了一些问题。
我希望能够找到P值。我背景是统计学,对Python还比较陌生。有没有什么包可以让我做这个?我正在跟随《从零开始的数据科学》这本书,并且在假设检验和推断方面遇到了一些问题。
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
基本上只是从正态分布和Pareto分布中抽样的数字数组。在这个例子中,我通过使用给定的2个参数调用kstest
函数来测试零假设“sample_norm服从正态分布”与备择假设“sample_norm不服从正态分布”,然后对sample_pareto
执行相同的操作。因此,正如您所看到的,假设本身并没有在代码中定义,而是由代码隐含地表示出来 :) - Slippy