你好,
有什麼方法可以檢測 JMP 中超過 3 個標準偏差的異常值?
我應該說我熟悉“探索異常值”選項以及“Levey Jennings”控製圖。但是,除了 3SD,還有其他方法可以檢測異常值嗎?
謝謝,
氖
我的第二個公式應該顯示 > 3 SD 的值包含錯誤。因此它不起作用。 您必須將“*”替換為 *
因此,為了獲得值,正確的公式是:
If(:Data > Col Mean(:Data) + Col Std Dev(:Data) * 3,
:數據,
.
)
只是一個簡單的附錄@托馬斯1回复。 如果您有嚴重的異常值,則 Col Std Dev 可能會非常大,並且可能會使平均值產生偏差。
另一種方法是使用中值 + k* 偽 sigma 作為篩選上限,中值 - k* 偽 sigma 用於篩選下限。
這是名為 weight 的列的列公式。 對於原始數據,有時分位數 0.85 和 0.15 用於計算偽 sigma,其中 6 作為 ps 的乘數。
Local( {ps},
ps = (Col Quantile( :weight, 0.75 ) - Col Quantile( :weight, 0.25 )) / 1.349;
If(
:weight > Col Quantile( :weight, 0.5 ) + 5 * ps, 1,
:weight < Col Quantile( :weight, 0.5 ) - 5 * ps, -1,
0
);
)如果您正在編寫腳本,則分發平台會計算穩健均值和穩健標準差。這是一個獲取這些值的簡單腳本。
Names Default To Here(1);
dt = Open( "$sample_data/Big class.jmp");
dist = dt << Distribution(
Continuous Distribution(
Column( :height ),
Quantiles( 0 ),
Horizontal Layout( 1 ),
Histogram( 0 ),
Vertical( 0 ),
Outlier Box Plot( 0 ),
Customize Summary Statistics(
Trimmed Mean( 1 ),
Robust Mean( 1 ),
Robust Std Dev( 1 ),
Set Alpha Level( 0.05 )
)
)
);
snames = report(dist)["Summary Statistics"][TableBox(1)][StringColBox(1)] << get;
svalues= report(dist)["Summary Statistics"][TableBox(1)][NumberColBox(1)] << get;
stats = Associative Array(snames, svalues); //cretea a keyed list
r_xb = stats["Robust Mean"];
r_sd = stats["Robust Standard Deviation"];
show(r_xb, r_sd);
//now use r_xb + <4|5|6> * r_sd and r_xb - <4|5|6> * r_sd for screening limits
@NeF寫道:
你好,
有什麼方法可以檢測 JMP 中超過 3 個標準偏差的異常值?
我應該說我熟悉“探索異常值”選項以及“Levey Jennings”控製圖。但是,除了 3SD,還有其他方法可以檢測異常值嗎?
謝謝,
氖
這可以通過使用公式創建一個新的公式列來解決:
If(:Data > Col Mean(:Data) + Col Std Dev(:Data) * 3,
1、
0
)
數據列是您的源列。
如果您想要 vaules > 3SDs,則公式為:
If(:Data > Col Mean(:Data) + Col Std Dev(:Data) * 3,
:數據,
“。”
)