Hola,
Me gusta escribir un script para obtener el UCL para el análisis de valores atípicos multivariados utilizando la distancia de Mahalanobis.
Puedo obtener el UCL al pasar por el menú JMP, pero de todos modos se puede obtener el UCL y establecerlo en el nombre de la variable en un script.
Agradezco su ayuda. Gracias.
Muchas gracias por tu ayuda Cameron. Esto es muy útil.
Hola @A ,
Parece un poco complicado sacar este valor del informe, pero puede obtenerlo escribiendo la acción "Guardar distancias atípicas" y luego extrayendo la propiedad de columna "Mahal. Valor" que resulta de esa acción.No es demasiado difícil obtener valores de propiedad de columna guardados como variables.Aquí hay un ejemplo usando el conjunto de datos de muestra Grosor:
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");Sin embargo, este límite es realmente muy fácil de calcular en una función.Es solo la raíz cuadrada de la UCL en un gráfico T^2 de Hotelling.
Mahal_UCL = function({p,m},
sqrt(((m-1)^2)/m*beta quantile(0.95,p/2,(m-p-1)/2));
);La fórmula también se proporciona en el libro Métodos multivariados en la página 49 en el menú Ayuda (Ayuda > Libros > Métodos multivariados).
Aquí hay un ejemplo usando los datos de Espesor.El límite de control de Mahalanobis es 4,36. Con la función proporcionada anteriormente, puede calcular la distancia UCL de Mahalanobis para m = 50 puntos de datos y p = 12 variables.Aquí está la salida del registro que muestra un límite de control coincidente:
Mahal_UCL(12,50);
/*:
4.36283881449635
La función Mahal_UCL Escribí códigos duros en alfa = 0.05. Podrías hacer que alfa sea un tercer parámetro así:
Mahal_UCL = function({p, m, alpha},
sqrt( ( ( m-1 )^2 )/m*beta quantile( 1-alpha, p/2, ( m-p-1 )/2 ) );
);