如何在Python中執行F檢驗
統計學家使用F檢驗來檢查兩個資料集是否具有相同的方差。F檢驗以羅納德·費希爾爵士命名。要使用F檢驗,我們提出兩個假設,一個零假設和一個備擇假設。然後,我們選擇F檢驗批准的這兩個假設中的任何一個。
方差是資料分佈度量,用於說明資料偏離均值的程度。較高的值表示比較低值更大的離散度。
在本文中,您將學習如何在Python程式語言中執行F檢驗及其用例。
F檢驗過程
執行F檢驗的過程如下:
首先,定義零假設和備擇假設。
零假設或H0:σ12 = σ22(總體方差相等)
備擇假設或H1:σ12 ≠ σ22(總體方差不相等)
選擇用於檢驗的統計量。
計算總體的自由度。例如,如果m和n是總體樣本大小,則自由度分別表示為(df1) = m–1 和 (df2) = n – 1。
現在從F分佈表中查詢F值。
最後,將alpha值除以2(用於雙尾檢驗)以計算臨界值。
因此,我們使用總體的自由度來定義F值。我們在第一行讀取df1,在第一列讀取df2。
對於不同型別的自由度,有各種F表。我們將步驟2中計算的F統計量與步驟4中計算的臨界值進行比較。如果臨界值小於F統計量,則可以拒絕零假設。相反,如果在某個顯著性水平下臨界值大於F統計量,則可以接受零假設。

假設
在根據資料集執行F檢驗之前,我們做一些假設。
資料總體服從正態分佈,即符合鐘形曲線。
樣本彼此不相關,即總體中不存在多重共線性。
除了這些假設之外,在執行F檢驗時,我們還應該考慮以下關鍵點:
要執行右尾檢驗,最大方差值應位於分子中。
在雙尾檢驗的情況下,將alpha值除以2後確定臨界值。
檢查您是否有方差或標準差。
如果F表中沒有自由度,則使用最大值作為臨界值。
Python中的F檢驗
語法
scipy stats.f()
引數
x : quantiles q : lower or upper tail probability dfn, dfd shape parameters loc :location parameter scale : scale parameter (default=1) size : random variate shape moments : [‘mvsk’] letters, specifying which moments to compute
解釋
在此方法中,使用者必須將f值和每個陣列的可迭代長度傳遞到scipy.stats.f.cdf()中,並將其與1相減以執行F檢驗。
演算法
首先,匯入NumPy和Scipy.stats庫進行操作。
然後建立兩個具有兩個不同變數名的隨機值列表,並將它們轉換為NumPy陣列,並使用Numpy計算每個陣列的方差。
定義一個函式來計算F分數,首先我們將陣列的方差除以自由度為1。
然後計算每個陣列的可迭代長度,並將f值(方差比)和長度傳遞給CDF函式,並從1中減去該值以計算p值。
最後,函式返回p值和f值。
示例
import numpy as np import scipy.stats # Create data group1 = [0.28, 0.2, 0.26, 0.28, 0.5] group2 = [0.2, 0.23, 0.26, 0.21, 0.23] # Converting the list to an array x = np.array(group1) y = np.array(group2) # Calculate the variance of each group print(np.var(group1), np.var(group2)) def f_test(group1, group2): f = np.var(group1, ddof=1)/np.var(group2, ddof=1) nun = x.size-1 dun = y.size-1 p_value = 1-scipy.stats.f.cdf(f, nun, dun) return f, p_value # perform F-test f_test(x, y)
輸出
Variances: 0.010464 0.00042400000000000017
您可以觀察到F檢驗值為4.38712,相應的p值為0.019127。
由於p值小於.05,我們將放棄零假設。因此,我們可以說這兩個總體方差不相等。
結論
閱讀本文後,您現在知道了如何使用F檢驗來檢查兩個樣本是否屬於具有相同方差的總體。您學習了F檢驗的過程、假設和Python實現。讓我們總結一下本文的一些要點:
F檢驗告訴您兩個總體方差是否相等。
計算自由度並計算臨界值。
從F表中找到F統計量,並將其與上一步中計算的臨界值進行比較。
根據臨界值和F統計量的比較結果,接受或拒絕零假設。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP