Hallo,
Ich schreibe gerne ein Skript, um die UCL für die multivariate Ausreißeranalyse mithilfe der Mahalanobis-Distanz zu erhalten.
Ich kann die UCL abrufen, indem ich über das JMP-Menü gehe, aber gibt es dort überhaupt eine Möglichkeit, die UCL abzurufen und sie in einem Skript auf den Variablennamen zu setzen?
Ich schätze Ihre Hilfe. Danke.
Vielen Dank für Ihre Hilfe, Cameron. Das ist sehr hilfreich.
Hallo @BEI ,
Es scheint ein wenig schwierig zu sein, diesen Wert aus dem Bericht zu extrahieren, aber Sie könnten darauf zugreifen, indem Sie die Aktion „Ausreißerabstände speichern“ per Skript erstellen und dann die Spalteneigenschaft „Mahal“ herausziehen. „Wert“, der sich aus dieser Aktion ergibt.Es ist nicht allzu schwierig, Spalteneigenschaftswerte als Variablen zu speichern.Hier ist ein Beispiel mit dem Beispieldatensatz „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");Dieser Grenzwert lässt sich jedoch tatsächlich sehr einfach in einer Funktion berechnen.Es handelt sich lediglich um die Quadratwurzel der UCL im T^2-Diagramm eines Hotellings.
Mahal_UCL = function({p,m},
sqrt(((m-1)^2)/m*beta quantile(0.95,p/2,(m-p-1)/2));
);Die Formel finden Sie auch im Buch „Multivariate Methoden“ auf Seite 49 im Hilfemenü (Hilfe > Bücher > Multivariate Methoden).
Hier ist ein Beispiel für die Verwendung der Dickendaten.Die Mahalanobis-Kontrollgrenze liegt bei 4,36. Mit der zuvor bereitgestellten Funktion können Sie die Mahalanobis-Distanz UCL für m=50 Datenpunkte und p=12 Variablen berechnen.Hier ist die Protokollausgabe, die eine passende Kontrollgrenze zeigt:
Mahal_UCL(12,50);
/*:
4.36283881449635
Die Funktion Mahal_UCL habe ich in Alpha = 0,05 fest codiert. Sie könnten Alpha wie folgt zu einem dritten Parameter machen:
Mahal_UCL = function({p, m, alpha},
sqrt( ( ( m-1 )^2 )/m*beta quantile( 1-alpha, p/2, ( m-p-1 )/2 ) );
);