Variance

使用中位數計算方差

  • October 15, 2015

我有一個非常偏斜的一維隨機變量。為了規範這個分佈,我想使用中位數而不是平均值。我的問題是:我可以使用公式中的中位數而不是平均值來計算分佈的方差嗎?

即我可以更換

我背後的理由是,由於方差是分佈集中趨勢的傳播量度,它不應該是一個問題,但我正在尋找驗證這個邏輯。

均值最小化平方誤差(或 L2 範數,請參閱此處此處),因此自然選擇方差來測量與均值的距離是使用平方誤差(請參閱此處了解我們為何對其進行平方)。另一方面,中位數使絕對誤差(L1 範數)最小化,即它是位於數據“中間”的值,因此與中位數的絕對距離(所謂的中位數絕對偏差或 MAD)似乎是更好地衡量中位數附近的變異程度。您可以在此線程中閱讀有關此關係的更多信息。

簡而言之,方差與 MAD 的不同之處在於它們如何定義數據的中心點,這會影響我們測量其周圍數據點變化的方式。平方值使得異常值對中心點(均值)的影響更大,而在中位數的情況下,所有點對其影響相同,因此絕對距離似乎更合適。

這也可以通過簡單的模擬來顯示。如果您比較平均值和中位數的平方距離值,則總平方距離與平均值的距離幾乎總是小於與中位數的距離。另一方面,總絕對距離離中位數更小,然後離平均值更小。用於進行模擬的 R 代碼發佈在下面。

sqtest  <- function(x) sum((x-mean(x))^2)  < sum((x-median(x))^2)
abstest <- function(x) sum(abs(x-mean(x))) > sum(abs(x-median(x)))

mean(replicate(1000, sqtest(rnorm(1000))))
mean(replicate(1000, abstest(rnorm(1000))))

mean(replicate(1000, sqtest(rexp(1000))))
mean(replicate(1000, abstest(rexp(1000))))

mean(replicate(1000, sqtest(runif(1000))))
mean(replicate(1000, abstest(runif(1000))))

在估計這種“方差”時使用中位數而不是均值的情況下,這將導致比傳統上使用均值更高的估計值。

順便說一句,L1 和 L2 範數的關係也可以在貝葉斯上下文中考慮,就像在這個線程中一樣。

引用自:https://stats.stackexchange.com/questions/177052

comments powered by Disqus