2017-08-14 73 views
-1

我正在閱讀一本關於Python的Data Science的書,並且作者應用'sigma-clipping操作'來刪除由於拼寫錯誤而導致的異常。然而這個過程根本沒有解釋。什麼是西格瑪剪裁?你怎麼知道什麼時候應用它?

什麼是西格瑪剪輯?它僅適用於某些數據(例如,在美國用於出生率的書中)?

按文本:

quartiles = np.percentile(births['births'], [25, 50, 75]) #so we find the 25th, 50th, and 75th percentiles 
mu = quartiles[1] #we set mu = 50th percentile 
sig = 0.74 * (quartiles[2] - quartiles[0]) #??? 

This final line is a robust estimate of the sample mean, where the 0.74 comes 
from the interquartile range of a Gaussian distribution. 

爲什麼0.74?有這樣的證據嗎?

+0

https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.sigmaclip.html – DyZ

+0

你的迴應沒有幫助。你讀過上面的問題嗎? – NRH

+0

你混合了很多不同的問題。 *什麼是西格瑪剪輯?*完美地回答了上面的鏈接。 *爲什麼0.74?*和引用的書本文字與西格瑪剪輯無關,並在下面回答。 – kazemakase

回答

3

假設您有一組數據。計算其中位數m及其標準差sigma。只保留範圍內的數據(m-a*sigma,m+a*sigma),其值爲a,並丟棄其他所有數據。這是西格瑪裁剪的一個迭代。繼續迭代預定次數,並且/或者當西格瑪值的相對減小很小時停止。

西格馬限幅適用於去除異常值,以允許對分佈的均值進行更穩健的(即抗異常值)估計。所以它適用於你期望找到離羣值的數據。

至於0.74,它來自高斯分佈的四分之一範圍,根據文本。

4

這最後一行是樣品的穩健估計的意思是,在那裏所述0.74自帶 從高斯分佈的四分位數間距。

就是這樣,真的...

代碼試圖利用四分範圍,使其對異常穩健估計西格瑪。 0.74是一個修正因子。以下是如何計算的呢:

p1 = sp.stats.norm.ppf(0.25) # first quartile of standard normal distribution 
p2 = sp.stats.norm.ppf(0.75) # third quartile 
print(p2 - p1) # 1.3489795003921634 

sig = 1 # standard deviation of the standard normal distribution 
factor = sig/(p2 - p1) 
print(factor) # 0.74130110925280102 

在標準正態分佈sig==1和四分位範圍爲1.35。因此0.74是將四分位間距變爲西格瑪的校正因子。當然,這隻適用於正常分配。

+0

這非常有幫助 - 謝謝。 – NRH

相關問題