1、什么是统计显著性检验?
在统计中,统计意义是指产生的结果背后有原因,不是随机产生或偶然产生的。
SciPy为我们提供了一个名为scipy.stats
的模块,该模块具有执行统计显着性检验的功能。
以下是执行此类测试时很重要的一些技术和关键字:
统计假说
假设是关于总体参数的假设。
零假设
它假定该观察值在统计上不显着。
替代假设
它假设这些观察是由于某种原因。
它替代零假设。
例如:
为了评估学生,我们将采取以下措施:
“学生比平均水平差”-作为无效假设,并且:
“学生胜于平均水平”-作为替代假设。
单尾检验
当我们的假设仅测试值的一侧时,称为“单尾检验”。
例如:
对于原假设:
“均值等于k”,我们可以有另一个假设:
“均值小于k”,或:
“平均值大于k”
两尾测试
当我们的假设正在测试两个值时。
例如:
对于原假设:
“均值等于k”,我们可以有另一个假设:
“平均值不等于k”
在这种情况下,平均值小于或大于k,并且需要检查双方。
Alpha值
阿尔法值是有意义的水平。
例如:
要拒绝零假设,数据必须接近极限。
通常取值为0.01、0.05或0.1。
P值
P值表明数据实际上有多接近极限。
比较P值和alpha值以建立统计显着性。
如果p值<= alpha,我们将拒绝原假设,并说该数据具有统计意义。否则,我们接受原假设。
2、T-Test
T检验用于确定两个变量的均值之间是否存在显着差异。 并让我们知道它们是否属于同一分布。
这是一条两尾测试。
函数ttest_ind()
接受两个大小相同的样本,并生成t统计量和p值的元组。
例如:
查找给定值v1和v2是否来自同一分布:
import numpy as np
from scipy.stats import ttest_ind
v1 = np.random.normal(size=100)
v2 = np.random.normal(size=100)
res = ttest_ind(v1, v2)
print(res)
Result:
Ttest_indResult(statistic=0.40833510339674095, pvalue=0.68346891833752133)
如果只想返回p值,请使用pvalue
属性:
例如:
import numpy as np
from scipy.stats import ttest_ind
v1 = np.random.normal(size=100)
v2 = np.random.normal(size=100)
res = ttest_ind(v1, v2).pvalue
print(res)
Result:
0.68346891833752133
3、KS-Test
KS测试用于检查给定值是否遵循分布。
该函数将要测试的值和CDF作为两个参数。
CDF可以是返回概率的字符串或可调用函数。
它可以用作一尾或二尾测试。
默认情况下,它是两个尾部的。我们可以将参数Alternative传递为两侧,较小或较大之一的字符串。
例如:
查找给定值是否遵循正态分布:
import numpy as np
from scipy.stats import kstest
v = np.random.normal(size=100)
res = kstest(v, 'norm')
print(res)
Result:
KstestResult(statistic=0.047798701221956841, pvalue=0.97630967161777515)
4、数据的统计描述
为了查看数组中值的摘要,我们可以使用describe()
函数。
它返回以下描述:
- number of observations (nobs)
- minimum and maximum values = minmax
- mean
- variance
- skewness
- kurtosis
例如:
显示数组中值的统计描述:
import numpy as np
from scipy.stats import describe
v = np.random.normal(size=100)
res = describe(v)
print(res)
Result:
DescribeResult( nobs=100, minmax=(-2.0991855456740121, 2.1304142707414964), mean=0.11503747689121079, variance=0.99418092655064605, skewness=0.013953400984243667, kurtosis=-0.671060517912661 )
5、正态性检验(Skewness和Kurtosis)
正态性检验基于偏态和峰度。
normaltest()
函数为原假设返回p值:
“ x来自正态分布”。
Skewness(偏态):
数据对称性的度量。
对于正态分布,该值为0。
如果为负,则表示数据向左倾斜。
如果为正,则表示数据偏斜正确。
Kurtosis(峰度):
衡量数据是重还是轻尾到正态分布的度量。
正峰度意味着尾巴很重。
负峰度意味着轻微拖尾。
例如:
查找数组中值的偏度和峰度:
import numpy as np
from scipy.stats import skew, kurtosis
v = np.random.normal(size=100)
print(skew(v))
print(kurtosis(v))
Result:
0.11168446328610283
-0.1879320563260931
例如:
查找数据是否来自正态分布:
import numpy as np
from scipy.stats import normaltest
v = np.random.normal(size=100)
print(normaltest(v))
Result:
NormaltestResult(statistic=4.4783745697002848, pvalue=0.10654505998635538)