SciPy 统计显着性检验

创建于 2024-12-03 / 25
字体: [默认] [大] [更大]

什么是统计显着性检验?

在统计学中,统计显着性意味着产生的结果是有原因的,它不是随机产生的,也不是偶然产生的。

SciPy 为我们提供了一个名为 scipy.stats 的模块,它具有执行统计显着性检验的功能。

以下是一些在执行此类测试时很重要的技术和关键字:


统计假设

假设是关于总体参数的假设。


零假设

假设观察结果在统计上不显着。


替代假设

假设观察是由于某种原因造成的。

它是零假设的替代品。

示例:

对于我们将采取的学生评估:

"学生比平均水平差" - 作为零假设,并且:

"学生优于平均水平" - 作为替代假设。


单尾检验

当我们的假设只检验值的一侧时,它被称为"单尾检验"。

示例:

对于原假设:

"均值等于k",我们可以有备择假设:

"均值小于k", 或:

"均值大于k"


双尾检验

当我们的假设同时检验两个值时。

示例:

对于原假设:

"均值等于k",我们可以有备择假设:

"均值不等于k"

在这种情况下,均值小于或大于 k,两边都要检查。


Alpha 阿尔法值

Alpha 值是显着性水平。

示例:

要拒绝零假设,数据必须有多接近极端值。

通常取 0.01、0.05 或 0.1。


P值

P 值说明数据实际与极端的接近程度。

比较P值和alpha值以确定统计学意义。

如果 p 值 <= alpha,我们拒绝原假设并说数据具有统计显着性。 否则我们接受原假设。


T-Test

T-tests 用于确定两个变量的均值之间是否存在显着差异。并让我们知道它们是否属于同一分布。

这是一个双尾测试。

函数 ttest_ind() 获取两个大小相同的样本,并生成一个 t-statistic 和 p-value 的元组。

实例

查找给定值 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)

结果:

  Ttest_indResult(statistic=0.40833510339674095, pvalue=0.68346891833752133)

亲自试一试 »

如果您只想返回 p 值,请使用 pvalue 属性:

实例

...
res = ttest_ind(v1, v2).pvalue

print(res)

结果:

  0.68346891833752133

亲自试一试 »

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)

结果:

  KstestResult(statistic=0.047798701221956841, pvalue=0.97630967161777515)

亲自试一试 »

数据统计说明

为了查看数组中值的摘要,我们可以使用 describe() 函数。

它返回以下描述:

  1. 观察次数(nobs)
  2. 最小值和最大值 = minmax
  3. 意思
  4. 差异
  5. 偏度
  6. 峰度

实例

显示数组中值的统计描述:

import numpy as np
from scipy.stats import describe

v = np.random.normal(size=100)
res = describe(v)

print(res)

结果:

  DescribeResult(
    nobs=100,
    minmax=(-2.0991855456740121, 2.1304142707414964),
    mean=0.11503747689121079,
    variance=0.99418092655064605,
    skewness=0.013953400984243667,
    kurtosis=-0.671060517912661
  )

亲自试一试 »

正态性检验(偏度和峰度)

正态性检验基于偏度和峰度。

normaltest() 函数返回原假设的 p 值:

"x 来自正态分布".


偏度:

数据对称性的度量。

对于正态分布,它是 0。

如果为负数,则表示数据向左倾斜。

如果为正,则表示数据向右倾斜。


峰度:

衡量数据是重尾还是轻度尾随正态分布的度量。

正峰度意味着重尾。

负峰度意味着轻微拖尾。


实例

查找数组中值的偏度和峰度:

import numpy as np
from scipy.stats import skew, kurtosis

v = np.random.normal(size=100)

print(skew(v))
print(kurtosis(v))

结果:

  0.11168446328610283
  -0.1879320563260931

亲自试一试 »

实例

判断数据是否来自正态分布:

import numpy as np
from scipy.stats import normaltest

v = np.random.normal(size=100)

print(normaltest(v))

结果:

  NormaltestResult(statistic=4.4783745697002848, pvalue=0.10654505998635538)

亲自试一试 »

0 人点赞过