FAQ-878 Wie entferne ich Ausreißer mit einer benutzerdefinierten Definition?

Letztes Update: 04.07.2017

Um die Ausreißerzellen in einem Arbeitsblatt durch eine benutzerdefinierte Ausreißerdefinition zu identifizieren, müssen Sie eine LabTalk-Funktion verwenden. In den folgenden Beispielcodes definieren wir einen Wert als "Ausreißer", wenn sein absoluter Z-Wert (=abs((x-MeanOfColumn)/SDOfColumn)) größer ist als ein bestimmter Schwellenwert:

function dataset remoutliers(dataset ds1, double zthresh) { dataset ds2; double ii; sum(ds1);  //collect stats of ds1 double summean=sum.mean;  //store mean double sumsd=sum.SD;      //store SD double nr=ds1.getSize();  //number of rows for(ii=1; ii<=nr; ii++) { ds2[ii]=abs(ds1[ii]-summean)/sumsd<=zthresh?ds1[ii]:0/0; //set missing if outlier } return ds2; }

Sie können dann die Funktion remoutliers verwenden, um das gesamten Arbeitsblatt zu durchsuchen. Zum Maskieren der Ausreißer im folgenden Arbeitsblatt:

FAQ878 1.png

Führen Sie die untenstehenden Skripte aus:

zthreshold=1.0;  //Set the threshold Z nc=wks.ncols;  //number of columns nr=wks.maxrows;  //number of rows for(jj=1; jj<=nc; jj++){ dataset ds=wcol(jj); range rc=wcol(jj); wcol(jj)=remoutliers(wcol(jj),zthreshold); for(ii=1; ii<=nr; ii++) { if(rc[ii]==0/0) { rc[ii]=ds[ii]; //recover the data from original rc<ii>=1;      //if cell is missing, mask it } } }

Am Ende erhalten Sie die folgenden Ergebnisse.

FAQ878 2.png

Hinweis: Wenn Ihr Datensatz nach Zeilen angeordnet ist, müssen Sie die Arbeitsblattspalten zuerst transponieren.


Schlüsselwörter:Ausreißer maskieren, Ausreißer entdecken