你好,
我喜歡編寫一個腳本來獲取 UCL,以使用馬氏距離進行多變量離群值分析。
我可以通過 JMP 菜單獲取 UCL,但無論如何都可以獲取 UCL 並將其設置為腳本中的變量名。
感謝您的幫助。 謝謝。
你好@在,
從報告中提取此值似乎有點棘手,但您可以通過編寫“保存異常值距離”操作腳本然後提取列屬性“Mahal. 該操作產生的值”。將列屬性值保存為變量並不難。下面是一個使用 Thickness 樣本數據集的示例:
dt = Open("$SAMPLE_DATA/Quality Control/Thickness.jmp");
multi = dt << Multivariate(
Y(
:Thickness 01,
:Thickness 02,
:Thickness 03,
:Thickness 04,
:Thickness 05,
:Thickness 06,
:Thickness 07,
:Thickness 08,
:Thickness 09,
:Thickness 10,
:Thickness 11,
:Thickness 12
),
Estimation Method( "Row-wise" )
);
multi << Mahalanobis Distances( 1 , Save Outlier Distances);
mahal_ucl = Column("Mahal. Distances") << Get Property("Mahal. Value");然而,這個限制實際上很容易在函數中計算。它只是霍特林 T^2 圖表中 UCL 的平方根。
Mahal_UCL = function({p,m},
sqrt(((m-1)^2)/m*beta quantile(0.95,p/2,(m-p-1)/2));
);幫助菜單(幫助 > 書籍 > 多元方法)中第 49 頁的多元方法一書也提供了該公式。
下面是使用厚度數據的示例。馬氏控制限為 4.36。使用之前提供的函數,您可以計算 m=50 個數據點和 p=12 個變量的馬氏距離 UCL。這是顯示匹配控制限制的日誌輸出:
Mahal_UCL(12,50);
/*:
4.36283881449635
我在 alpha = 0.05 中編寫了硬代碼的函數 Mahal_UCL。您可以像這樣將 alpha 作為第三個參數:
Mahal_UCL = function({p, m, alpha},
sqrt( ( ( m-1 )^2 )/m*beta quantile( 1-alpha, p/2, ( m-p-1 )/2 ) );
);