Ausreißeranalyse bei Korrelationen von Skalenmittelwerten

Modelle zur Korrelations- und Regressionsanalyse

Moderator: EDi

Antworten
Ante
Beiträge: 9
Registriert: Di Apr 25, 2023 10:59 am

Ausreißeranalyse bei Korrelationen von Skalenmittelwerten

Beitrag von Ante »

Hallo,
ich würde gerne in der Lage sein, Ausreißer anhand der Standardabweichung (Mittelwert ± 3 Standardabweichungen) in bestimmten Skalen ausfindig zu machen, um diese Ausreißer/Probanden dann entfernen zu können.
Einen Lösungsweg habe ich gefunden, wie im kompletten Datensatz dann die entsprechenden Ausreißer entfernt werden.

Code: Alles auswählen


#absoluten Wert des Z-Scores für jeden Wert in jeder Spalte finden:
z_scores <- as.data.frame(sapply(data_z,function(data_z)(abs(data_z-mean(data_z))/sd(data_z))))

#nur Zeilen im Dataframe, wobei alle Z-Scores kleiner als der absolute Wert 3 sind halten :

no_outliers <- z_scores[!rowSums(z_scores>3), ]

#Anzahl der Zeilen und Spalten des neuen Dataframes anzeigen:

dim(no_outliers)

Aber hat jemand eine Idee wie man nur Probanden entfernt, die nur in einer bestimmten Skala ausreißen?
Ich bedanke mich im Voraus für eine Antwort!
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: Ausreißeranalyse bei Korrelationen von Skalenmittelwerten

Beitrag von bigben »

Hallo Ante,

das Löschen von Ausreißern nach so einem einfachen Kriterium ist meistens eine fragwürdige Vorgehensweise. Du musst selbst entscheiden, ob Du das mit uns diskutieren willst oder nicht, aber ohne einen warnend erhobenen Zeigefinger konnte ich das jetzt nicht stehen lassen.

Für das von Dir geplante Vorgehen musst Du zunächst z_scores pro Skala bilden, dann identifizieren, welche Probanden in dieser oder jener Skala einen extremen z-Score aufweisen und die dann löschen.

Der Code, den Du da postest sagt wenig wenn man nicht weiß, was sich am Anfang in data_z befindet.
Ist das Code, den Du selbst geschrieben hast oder Code, den Du von anderen übernommen hast? Anders gefragt: Spiegelt dieser Code deinen bisherigen Entwicklungsstand in Sachen R wieder?

VG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Ante
Beiträge: 9
Registriert: Di Apr 25, 2023 10:59 am

Re: Ausreißeranalyse bei Korrelationen von Skalenmittelwerten

Beitrag von Ante »

Hallo Bernhard,
den Code habe ich im Internet gefunden gehabt: https://statologie.de/ausreisser-r/

Ja ich habe den Code für jede Skala/Faktor angewendet (hier im Code als Beispiel: Skala/Faktor 1). Nur als Ergebnis erhalte ich immer "NULL" . Es müssten doch bei dim() die Zeilenangaben/Caseanzahlen rauskommen.

Code: Alles auswählen


#1.Skala DC_F1_skala_mean (Ausreißeranalyse bei neuen DCS Skalen:)

#Skala als dataframe machen:

DC_F1 <-select(data_only, c(DC_F1_skala_mean ))

data_z <-DC_F1

#Z-Score-Methode bei Skala F1:

#absoluten Wert des Z-Scores für jeden Wert in jeder Spalte finden:
z_scores <- as.data.frame(sapply(data_z,function(data_z)(abs(data_z-mean(data_z))/sd(data_z))))

#nur Zeilen im Dataframe, wobei alle Z-Scores kleiner als der absolute Wert 3 sind halten :

no_outliers <- z_scores[!rowSums(z_scores>3), ]

#Anzahl der Zeilen und Spalten des neuen Dataframes anzeigen:

dim(no_outliers)


#ursprüngliche Dataframe "DC_F1": hatte 121 Zeilen (cases). 

#Ergebnis: NuLL= Das neue Dataframe "no_outliers" hat keine Werte, die mindestens einen Z-Score mit einem Absolutwert größer als 3 aufweist???







#nur Zeilen im Dataframe, bei dennen alle Z-Scores größer als der absolute Wert -3 sind, werden behalten :

no_out <- z_scores[!rowSums(z_scores< -3), ]

#Anzahl der Zeilen und Spalten des neuen Dataframes anzeigen:

dim(no_out)


#ursprüngliche Dataframe "DC_F1": hatte 121 Zeilen (cases). 

#Ergebnis: NuLL= Das neue Dataframe "no_out" hat keine Werte, die -3 SD vom <mittelwert entfernt sind???


Im Global Environment, sehe ich aber das es bei dem dataframe "no_outliers" und "no_out" immer noch 121 Zeilen/cases sind. Heißt das, es gibt keine Ausreißer?
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: Ausreißeranalyse bei Korrelationen von Skalenmittelwerten

Beitrag von bigben »

Hallo Ante,

Der Code, den Du da postest sagt wenig wenn man nicht weiß, was sich am Anfang in data_only befindet. Du wirst sehen, dass sich hier kaum je einer ohne Datenbeispiel zu Code äußern wird. Bitte schau Dir diesen Thread mal an: viewtopic.php?t=11 Kapitel 3.
Mit vernünftigen Beispieldaten wird man Dir helfen können.
Heißt das, es gibt keine Ausreißer?
Nach Deinem Kriterium ist ein Ausreißer am z-Score erkennbar. Die z-Scores könntest Du plotten oder Dir ein Summary dazu anzeigen lassen.

Code: Alles auswählen

summary(z_scores)
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Ante
Beiträge: 9
Registriert: Di Apr 25, 2023 10:59 am

Re: Ausreißeranalyse bei Korrelationen von Skalenmittelwerten

Beitrag von Ante »

ok, danke. Und warum gibt dim() NULL als Ergebnis aus?
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: Ausreißeranalyse bei Korrelationen von Skalenmittelwerten

Beitrag von bigben »

Nun, offensichtlich ist das das Ergebnis, wenn Du Deine Daten in Deinen Code steckst.
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten