[英]Removing outlier from excel using R code
以下數據表來自excel文件
Part A B C D E F G H I J K L
XXX 0 1 1 2 0 1 2 3 1 2 1 0
YYY 0 1 2 2 0 30 1 1 0 1 10 0
....
所以,我想顯示那些包含具有邏輯的異常值的部分
[median – t * MAD, median + t * MAD]
那么如何使用 R by function 對大量數據進行編碼呢?
您可能希望基於中位數和 MAD(絕對偏差中位數)而不是非穩健標准平均值和 SD 來計算穩健的 Z 分數。 然后使用 Z 評估您的數據,Z=0 表示中位數,Z=1 表示 MAD,等等。
假設我們有以下數據,其中一組是異常值:
df <- rbind( data.frame(tag='normal', res=rnorm(1000)*2.71), data.frame(tag='outlier', res=rnorm(20)*42))
然后Z它:
df$z <- with(df, (res - median(res))/mad(res))
這給了我們這樣的東西:
> head(df)
tag res z
1 normal -3.097 -1.0532
2 normal -0.650 -0.1890
3 normal 1.200 0.4645
4 normal 1.866 0.6996
5 normal -6.280 -2.1774
6 normal 1.682 0.6346
然后將其切成 Z 帶,例如。
df$band <- cut(df$z, breaks=c(-99,-3,-1,1,3,99))
這可以用簡單的方式分析:
> addmargins(xtabs(~band+tag, df))
tag
band normal outlier Sum
(-99,-3] 1 9 10
(-3,-1] 137 0 137
(-1,1] 719 2 721
(1,3] 143 1 144
(3,99] 0 8 8
Sum 1000 20 1020
可以看出,顯然,具有最大 Z 的那些(那些在 (-99,-3) 和 (3,99) Z 波段中的,是來自異常值社區的那些)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.