如何理解自由度?
來自Wikipedia,對統計數據的自由度有三種解釋:
在統計學中,自由度的數量是統計量的最終計算中可以****自由變化的值的數量。
統計參數的估計可以基於不同數量的信息或數據。進入參數估計的獨立信息的數量稱為自由度(df)。一般來說,參數估計的自由度等於進入估計的獨立分數的數量減去在參數本身估計中用作中間步驟的參數數量(在樣本方差中,一,因為樣本均值是唯一的中間步驟)。
在數學上,自由度是隨機向量域的維度,或者本質上是“自由”分量的數量:在完全確定向量之前需要知道多少個分量。
粗體字是我不太明白的。如果可能的話,一些數學公式將有助於澄清這個概念。
這三種解釋是否也相互一致?
這是一個微妙的問題。 需要一個有思想的人才能不理解那些引文!儘管它們具有暗示性,但事實證明它們都不是完全正確或普遍正確的。我沒有時間(這裡也沒有空間)進行完整的闡述,但我想分享一種方法和它所暗示的見解。
自由度 (DF) 的概念從何而來? 在基本治療中發現它的背景是:
- 學生 t 檢驗及其變體,例如 Behrens-Fisher 問題(其中兩個總體具有不同方差)的 Welch 或 Satterthwaite 解決方案。
- 卡方分佈(定義為獨立標準正態的平方和),與方差的抽樣分佈有關。
- F 檢驗(估計方差的比率)。
- 卡方檢驗,包括其在 (a) 列聯表中獨立性檢驗和 (b) 分佈估計擬合優度檢驗中的用途。
從本質上講,這些測試的範圍從精確(正常變量的學生 t 檢驗和 F 檢驗)到良好的近似值(學生 t 檢驗和 Welch/Satterthwaite 檢驗,用於不太嚴重的偏斜數據) 到基於漸近近似(卡方檢驗)。其中一些有趣的方面是非整數“自由度”的出現(Welch/Satterthwaite 檢驗,正如我們將看到的,卡方檢驗)。這是特別有趣的,因為它是第一個暗示 DF不是它聲稱的任何東西。
我們可以立即處理問題中的一些主張。 因為“統計的最終計算”沒有明確定義(顯然取決於計算使用的算法),所以它只能是一個模糊的建議,不值得進一步批評。同樣,“進入估計的獨立分數的數量”和“用作中間步驟的參數數量”都沒有明確定義。
“進入 [an] 估計的獨立信息片段”很難處理,因為這裡有兩種不同但密切相關的“獨立”意義。一是隨機變量的獨立性;另一個是功能獨立。 作為後者的一個例子,假設我們收集受試者的形態測量數據——為簡單起見,三個邊長X,是,Z, 表面積小號=2(X是+是Z+ZX), 和卷五=X是Z一套木塊。三個邊長可以被認為是獨立的隨機變量,但所有五個變量都是依賴 RV。這五個在功能上也是依賴的,因為向量值隨機變量的共域(不是“域”!)(X,是,Z,小號,五)描繪出一個三維流形R5. (因此,在任何時候本地ω∈R5, 有兩個函數Fω和Gω為此Fω(X(ψ),…,五(ψ))=0和Gω(X(ψ),…,五(ψ))=0積分ψ“靠近”ω及其衍生物F和G評價為ω是線性獨立的。)但是 - 這是踢球 - 對於塊上的許多概率測量,變量的子集,例如(X,小號,五)作為隨機變量依賴,但在功能上獨立。
已經被這些潛在的歧義所警告,讓我們舉起卡方擬合優度檢驗進行檢查,因為(a)它很簡單,(b)這是人們真正需要了解 DF 才能獲得p 值正確和 (c) 它經常被錯誤地使用。以下是該測試爭議最小的應用的簡要概要:
- 您有一組數據值(X1,…,Xn),被視為總體樣本。
- 您已經估計了一些參數θ1,…,θp的分佈。例如,您估計了平均值θ1和標準差θ2=θp正態分佈,假設總體是正態分佈的,但不知道(在獲取數據之前)什麼θ1或者θ2可能。
- 事先,您創建了一組ķ數據的“箱”。(當 bin 由數據確定時,可能會出現問題,即使經常這樣做。)使用這些 bin,數據可以減少到每個 bin 內的計數集。預測真正的價值是什麼(θ)可能是,你已經安排好了(希望)每個垃圾箱都會收到大致相同的數量。(等概率分箱確保卡方分佈確實是即將描述的卡方統計量的真實分佈的良好近似。)
- 你有很多數據——足以保證幾乎所有的箱子都應該有 5 或更大的計數。(我們希望,這將使χ2被某些人充分近似的統計量χ2分配。)
使用參數估計,您可以計算每個 bin 中的預期計數。卡方統計量是比率的總和
(觀測到的-預期的)2預期的.
許多權威人士告訴我們,這應該具有(非常接近的)卡方分佈。但是有一整套這樣的分佈。它們由一個參數區分ν通常稱為“自由度”。 關於如何確定的標準推理ν像這樣
我有ķ計數。那是ķ條數據。但是它們之間存在(功能)關係。首先,我事先知道計數的總和必須等於n. 那是一種關係。我估計兩個(或p, 通常)來自數據的參數。那是兩個(或p) 額外的關係,給予p+1總關係。假設它們(參數)都是(功能上)獨立的,那麼只剩下ķ-p-1(功能上)獨立的“自由度”:這是使用的價值ν.
這種推理的問題(這是問題中的引文暗示的那種計算)是錯誤的,除非有一些特殊的附加條件成立。 此外,這些條件與獨立性(功能或統計)、數據“組件”的數量、參數的數量以及原始問題中提到的任何其他內容無關*。*
讓我舉個例子。(為了盡可能清楚,我使用了少量的 bin,但這不是必需的。)讓我們生成 20 個獨立且同分佈 (iid) 的標準正態變量,並使用通常的公式估計它們的均值和標準差 (平均值 = 總和/計數等)。要測試擬合優度,請創建四個在標準正態四分位數處具有切點的 bin:-0.675、0、+0.657,並使用 bin 計數生成卡方統計量。在耐心允許的情況下重複;我有時間做 10,000 次重複。
關於 DF 的標準智慧說我們有 4 個 bin 和 1+2 = 3 個約束,這意味著這 10,000 個卡方統計量的分佈應該遵循具有 1 個 DF 的卡方分佈。這是直方圖:
深藍色的線圖的 PDFχ2(1)分佈——我們認為可行的分佈——而深紅色的線表示χ2(2)分佈(如果有人告訴你,這將是一個很好的猜測ν=1是不正確的)。 兩者都不符合數據。
您可能認為問題是由於數據集的小規模(n=20) 或者可能是 bin 數量的小尺寸。然而,即使有非常大的數據集和大量的 bin,問題仍然存在:這不僅僅是未能達到漸近近似。
事情出錯了,因為我違反了卡方檢驗的兩個要求:
- 您必須使用參數的最大似然估計。(在實踐中,這個要求可能會被輕微違反。)
- 您必鬚根據計數而不是實際數據進行估算!(這是至關重要的。)
紅色直方圖描繪了 10,000 次單獨迭代的卡方統計數據,遵循這些要求。果然,明顯跟隨著χ2(1)曲線(具有可接受的採樣誤差),正如我們最初希望的那樣。
這種比較的重點——我希望你已經看到了——是用於計算 p 值的正確 DF 取決於許多因素,而不是流形的維度、函數關係的計數或正態變量的幾何形狀. 某些函數依賴關係之間存在微妙而微妙的相互作用,正如在數量之間的數學關係中所發現的那樣,數據的分佈、它們的統計數據以及由它們形成的估計量。因此,DF 不能根據多元正態分佈的幾何形狀、功能獨立性、參數計數或任何其他此類性質的東西來充分解釋。
因此,我們被引導看到,“自由度”只是一種啟發式方法,它表明(t、卡方或 F)統計量的抽樣分佈應該是什麼,但它不是決定性的。 相信它是決定性的會導致嚴重的錯誤。(例如,在搜索“卡方擬合優度”時,Google上的熱門搜索是常春藤大學的網頁,但大部分內容完全錯誤!特別是,基於其說明的模擬顯示卡方它推薦的值為 7 DF 實際上有 9 個 DF。)
有了這種更細緻入微的理解,重新閱讀相關的 Wikipedia 文章是值得的:在它的細節中它得到了正確的結果,指出了 DF 啟發式傾向於在哪裡起作用,以及它在哪裡是近似值或根本不適用。
Kendall & Stuart 的第 II 卷第 5 版中很好地說明了這裡說明的現象(卡方 GOF 測試中的意外高 DF)。我很感激這個問題提供了機會,讓我回到這篇精彩的文本,其中充滿瞭如此有用的分析。
編輯(2017 年 1 月)
這是
R
生成“關於 DF 的標準智慧……”之後的圖形的代碼# # Simulate data, one iteration per column of `x`. # n <- 20 n.sim <- 1e4 bins <- qnorm(seq(0, 1, 1/4)) x <- matrix(rnorm(n*n.sim), nrow=n) # # Compute statistics. # m <- colMeans(x) s <- apply(sweep(x, 2, m), 2, sd) counts <- apply(matrix(as.numeric(cut(x, bins)), nrow=n), 2, tabulate, nbins=4) expectations <- mapply(function(m,s) n*diff(pnorm(bins, m, s)), m, s) chisquared <- colSums((counts - expectations)^2 / expectations) # # Plot histograms of means, variances, and chi-squared stats. The first # two confirm all is working as expected. # mfrow <- par("mfrow") par(mfrow=c(1,3)) red <- "#a04040" # Intended to show correct distributions blue <- "#404090" # To show the putative chi-squared distribution hist(m, freq=FALSE) curve(dnorm(x, sd=1/sqrt(n)), add=TRUE, col=red, lwd=2) hist(s^2, freq=FALSE) curve(dchisq(x*(n-1), df=n-1)*(n-1), add=TRUE, col=red, lwd=2) hist(chisquared, freq=FALSE, breaks=seq(0, ceiling(max(chisquared)), 1/4), xlim=c(0, 13), ylim=c(0, 0.55), col="#c0c0ff", border="#404040") curve(ifelse(x <= 0, Inf, dchisq(x, df=2)), add=TRUE, col=red, lwd=2) curve(ifelse(x <= 0, Inf, dchisq(x, df=1)), add=TRUE, col=blue, lwd=2) par(mfrow=mfrow)