你好,
我喜欢编写一个脚本来获取 UCL,以使用 Mahalanobis 距离进行多元异常值分析。
我可以通过 JMP 菜单获取 UCL,但无论如何都可以获取 UCL 并将其设置为脚本中的变量名。
我很感激你的帮助。 谢谢。
你好@在,
从报告中提升这个值似乎有点棘手,但您可以通过编写“保存异常距离”操作脚本然后拉出列属性“Mahal. 该行动产生的价值”。将列属性值保存为变量并不难。下面是一个使用厚度样本数据集的示例:
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");但是,这个限制实际上很容易在函数中计算。它只是 Hotelling 的 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
函数 Mahal_UCL 我在 alpha = 0.05 中编写了硬代码。您可以将 alpha 作为第三个参数,如下所示:
Mahal_UCL = function({p, m, alpha},
sqrt( ( ( m-1 )^2 )/m*beta quantile( 1-alpha, p/2, ( m-p-1 )/2 ) );
);