当前位置: 首页 > news >正文

Python 中的 F-Test

文章目录

    • F 统计量和 P 值
    • 方差(ANOVA) 分析中的 F 值


本篇文章介绍 F 统计、F 分布以及如何使用 Python 对数据执行 F-Test 测试。

F 统计量是在方差分析检验或回归分析后获得的数字,以确定两个总体的平均值是否存在显着差异。 它类似于 T 检验的 T 统计量,执行 T 检验会告诉您单个变量是否具有统计显着性,而 F 检验会告诉您一组变量是否具有统计显着性。

统计显着性意味着什么?

如果你有一个实质性的结果,那么你得到这些结果可能不是巧合。 如果您的检验结果在统计上不显着,则必须丢弃它们,因为它们无效,并且您不能拒绝原假设。


F 统计量和 P 值

在确定总体结果是否显着时,您必须考虑 F 统计量和 p 值。

为什么? 结果显着并不一定意味着您的所有变量也都显着。 简而言之,统计涉及比较所有变量的综合影响。


方差(ANOVA) 分析中的 F 值

方差分析检验是一种统计分析方法,用于评估基于方差的均值差异,以查看两个或多个分类组之间是否存在统计上重要的差异。

ANOVA 将自变量分成两组或更多组,这是另一个重要的组成部分。 例如,一个或多个组可能被预测会影响因变量,而另一组可能被用作控制组并且预计不会产生影响。

在某种程度上,在方差分析中,F 值就像一种工具,有助于回答两个统计量或总体的均值之间的方差是否显着不同的问题。 P 值是获得至少与观察到的结果一样极端的结果的可能性,假定零假设为真,同样由方差分析中的 F 值确定。

称为 f 比率的测试统计量可以计算如下:

要使用 Python 执行以下测试,我们可以使用 Python 中的 SciPy 模块。

SciPy 为许多问题类型提供算法,包括优化、积分、插值、特征值问题、代数方程、微分方程、统计等等。

要安装 scipy,请运行以下命令:

pip install scipy

我们可以在 scipy.stats 模块中使用以下类。 scipy 中的 stats 类包含执行统计操作所需的所有函数和类。

>>> from scipy.stats import f

scipy.stats.f 有一个 CDF(累积分布函数)方法。 可以针对给定的统计信息计算使用 p 值。

因此,您可以确定是拒绝还是接受给定 alpha 水平的 NULL 假设。

考虑下面的例子:

导入模块并创建变量。

from scipy.stats import f
import numpy as np
a = np.array([1,2,1,2,1,2,1,2,1,2])
b = np.array([1,3,-1,2,1,5,-1,6,-1,2])
alpha = 0.05 # you can set to level.
The formula to calculate the F value is Var(X)/Var(Y).# calculating F value.
F = a.var()/b.var()
Since F is a distribution:df1 = len(a) - 1
df2 = len(b) - 1

scipy.stats.f 类包含我们可以用来计算给定统计数据的 p 值和临界值的函数。

# Fetching p-value.
p_value = f.cdf(F, df1, df2)
p_value > alpha

从上面的代码中,我们可以得到使用F统计计算的p值; 我们将拒绝 NULL 假设,即 a 的方差等于 b 的方差。

假设您对所提供的反映正态性的数据没有信心。 F 检验的更可靠替代方法是 Bartlett 检验或 Levene 检验。

Scipy 还提供了执行这些测试的工具。

巴特利特测试:

>>> from scipy.stats import bartlett
>>> x = [8.88, 9.12, 9.04, 8.98, 9.00, 9.08, 9.01, 8.85, 9.06, 8.99]
>>> y = [8.88, 8.95, 9.29, 9.44, 9.15, 9.58, 8.36, 9.18, 8.67, 9.05]
>>> z = [8.95, 9.12, 8.95, 8.85, 9.03, 8.84, 9.07, 8.98, 8.86, 8.98]
>>> stat, p = bartlett(x, y, z)
>>> p
1.1254782518834628e-05

p 值非常小; 我们可以说给定的总体没有相等的方差。

这是因为方差的不同。

>>> [np.var(x, ddof=1) for x in [x, y, z]]
[0.007054444444444413, 0.13073888888888888, 0.008890000000000002]

Levene 的测试:

>>> from scipy.stats import levene
>>> x = [8.88, 9.12, 9.04, 8.98, 9.00, 9.08, 9.01, 8.85, 9.06, 8.99]
>>> y = [8.88, 8.95, 9.29, 9.44, 9.15, 9.58, 8.36, 9.18, 8.67, 9.05]
>>> z = [8.95, 9.12, 8.95, 8.85, 9.03, 8.84, 9.07, 8.98, 8.86, 8.98]
>>> stat, p = levene(x, y, z)
>>> p
0.002431505967249681

p 值非常小; 我们可以说给定的总体没有相等的方差。

>>> [np.var(x, ddof=1) for x in [x, y, z]]
[0.007054444444444413, 0.13073888888888888, 0.008890000000000002]
http://www.lryc.cn/news/92273.html

相关文章:

  • Docker网络模式
  • 百度离线资源治理
  • C++进阶之继承
  • 在 Transformers 中使用约束波束搜索引导文本生成
  • Centos7更换OpenSSL版本
  • 基于摄影测量的三维重建【终极指南】
  • 配置ThreadPoolExecutor
  • Yolov5s算法从训练到部署
  • 分布式补充技术 01.AOP技术
  • QT 多对一服务插件 CTK开发(五)
  • [Windows]_[初级]_[创建目录和文件的名字注意事项]
  • 「QT」QT5程序设计目录
  • ConcurrentHashMap核心源码(JDK1.8)
  • 【Python】文件 读取 写 os模块 shutil模块 pickle模块
  • PAT A1087 All Roads Lead to Rome
  • 浅谈HttpURLConnection所有方法详解
  • 前端快速创建web3应用模版分享
  • 越权漏洞讲解
  • 短视频矩阵源码系统打包.源码
  • 云南LED、LCD显示屏系统建设,户外、室内广告大屏建设方案
  • Shell脚本:expect脚本免交互
  • 王道考研计算机网络第二章知识点汇总
  • 06.05
  • 【虹科案例】虹科数字化仪在激光雷达大气研究中的应用
  • Java抽象类介绍
  • 适配器模式的运用
  • 2023/6/8总结
  • AIGC大模型之——以文生图介绍
  • kali学习笔记(二)
  • avx指令集判断的坑