Umgang mit Missing Values
Umgang mit Missing Values
Hallo zusammen,
im Rahmen meines Pflichtpraktikums habe ich eine Mitarbeiterbefragung zu psychischen Belastungsfaktoren am Arbeitsplatz durchgeführt und soll diese nun auswerten.
Mein Fragebogen bestand mehr oder weniger aus 4 Teilen: A, B, C und D.
Während es in Teil A (Spalten 1-17) nicht relevant ist, ob alle Items beantwortet sind, und in Teil C (Spalten 66-81) sogar damit zu rechnen ist, würden NAs in Teil B (Spalten 18-65) und D (Spalten 82-129) die Ergebnisse verfälschen.
Wie kann ich genau diese Probanden herausfiltern und aus der Auswertung ausschließen, ohne automatisch alle Probanden, die ein Item nicht beantwortet haben, ebenfalls aus dem Datensatz zu werfen?
Vielen Dank bereits für Eure fachkundige Hilfe!
im Rahmen meines Pflichtpraktikums habe ich eine Mitarbeiterbefragung zu psychischen Belastungsfaktoren am Arbeitsplatz durchgeführt und soll diese nun auswerten.
Mein Fragebogen bestand mehr oder weniger aus 4 Teilen: A, B, C und D.
Während es in Teil A (Spalten 1-17) nicht relevant ist, ob alle Items beantwortet sind, und in Teil C (Spalten 66-81) sogar damit zu rechnen ist, würden NAs in Teil B (Spalten 18-65) und D (Spalten 82-129) die Ergebnisse verfälschen.
Wie kann ich genau diese Probanden herausfiltern und aus der Auswertung ausschließen, ohne automatisch alle Probanden, die ein Item nicht beantwortet haben, ebenfalls aus dem Datensatz zu werfen?
Vielen Dank bereits für Eure fachkundige Hilfe!
Re: Umgang mit Missing Values
Hallo PflipraS,
willkommen im Forum!
Wie sieht denn Deine Auswertung aus, wenn keine NAs vorhanden wären?
Bitte zeig uns den entsprechendne Code.
Gruß, Jörg
willkommen im Forum!
Wie sieht denn Deine Auswertung aus, wenn keine NAs vorhanden wären?
Bitte zeig uns den entsprechendne Code.
Gruß, Jörg
Re: Umgang mit Missing Values
Hallo Jörg,
Bisher bin ich so vorgegangen:
Ich habe mit
die VPN, die mehr als 15 Items nicht beantwortet haben, ausgeschlossen, da ich davon ausgehe, dass der Fragebogen nicht verstanden wurde oder bewusst nicht ausgefüllt wurde.
Für die Auswertung fasse ich Itemantworten zu Skalen zusammen, indem ich die Spalten aufaddiere und durch die Anzahl der Spalten teile, um einen Mittelwert zu erhalten, den ich dann mit einer Referenzdatenbank vergleichen kann.
Allerdings bin ich mir nicht über sicher, was R aus den NAs macht, wenn ich na.rm = TRUE setze. Berichtige mich bitte, wenn es nicht stimmt, aber ich vermute, dass R das als 0 in die Summe aufnimmt und so würde das Ergebnis verfälscht werden ((x + y + z +0)/4 < (x + y + z / 3)).
Ich bin also auf der Suche nach entweder einer Möglichkeit, bei den skalenrelevanten Items Personen mit NAs rauszuwerfen oder den Mittelwert flexibel durch die Anzahl der beantworteten Items zur Skala zu teilen.
(Ich hoffe, das war wenigstens ansatzweise verständlich - finde es schwierig, das Problem in Worte zu fassen)
Hier noch ein Bild von meinem Datensatz, evtl. hilft das ja, mein Problem zu verdeutlichen: VPN 5 hat in der Skala Lebenszufriedenheit die Werte 83 (= zufrieden), 83, NA, 100 (= sehr zufrieden), 83 und auf der Skala jedoch nur 53.2 (= weder zufrieden noch unzufrieden). Das Ergebnis auf der Skala ist also deutlich ins Negative verfälscht. Deshalb möchte ich diese Person entweder ausschließen oder einen Code finden, der merkt, dass nur 3 der 5 Skalenitems beantwortet wurden und die Summe der Spalten dann nur durch 3 teilt.
Bisher bin ich so vorgegangen:
Ich habe mit
Code: Alles auswählen
maxNA <- 15
Daten <- ohneNA[!(rowSums(is.na(ohneNA))>maxNA),]
Für die Auswertung fasse ich Itemantworten zu Skalen zusammen, indem ich die Spalten aufaddiere und durch die Anzahl der Spalten teile, um einen Mittelwert zu erhalten, den ich dann mit einer Referenzdatenbank vergleichen kann.
Code: Alles auswählen
Daten$Quantitative2011 <- rowSums(Daten[,c("B1.1", "B1.2", "B1.3", "B1.5")], na.rm=TRUE)/4
Ich bin also auf der Suche nach entweder einer Möglichkeit, bei den skalenrelevanten Items Personen mit NAs rauszuwerfen oder den Mittelwert flexibel durch die Anzahl der beantworteten Items zur Skala zu teilen.
(Ich hoffe, das war wenigstens ansatzweise verständlich - finde es schwierig, das Problem in Worte zu fassen)
Hier noch ein Bild von meinem Datensatz, evtl. hilft das ja, mein Problem zu verdeutlichen: VPN 5 hat in der Skala Lebenszufriedenheit die Werte 83 (= zufrieden), 83, NA, 100 (= sehr zufrieden), 83 und auf der Skala jedoch nur 53.2 (= weder zufrieden noch unzufrieden). Das Ergebnis auf der Skala ist also deutlich ins Negative verfälscht. Deshalb möchte ich diese Person entweder ausschließen oder einen Code finden, der merkt, dass nur 3 der 5 Skalenitems beantwortet wurden und die Summe der Spalten dann nur durch 3 teilt.
Zuletzt geändert von PflipraS am Do Okt 15, 2020 2:44 pm, insgesamt 1-mal geändert.
Re: Umgang mit Missing Values
Hallo PflipraS,
NA ist jedenfalls keine 0.
Gruß, Jörg
ja, ich berichtige Dich:PflipraS hat geschrieben: Do Okt 15, 2020 2:30 pm Allerdings bin ich mir nicht über sicher, was R aus den NAs macht, wenn ich na.rm = TRUE setze. Berichtige mich bitte, wenn es nicht stimmt, aber ich vermute, dass R das als 0 in die Summe aufnimmt und so würde das Ergebnis verfälscht werden ((x + y + z +0)/4 < (x + y + z / 3)).
Ich bin also auf der Suche nach entweder einer Möglichkeit, bei den skalenrelevanten Items Personen mit NAs rauszuwerfen oder den Mittelwert flexibel durch die Anzahl der beantworteten Items zur Skala zu teilen.
Code: Alles auswählen
mean(c(1, 2, 3))
mean(c(1, 2, 3, NA), na.rm=TRUE)
Gruß, Jörg
Re: Umgang mit Missing Values
Vielen Dank! Das ist eine wichtige Erkenntnis für mein weiteres Arbeiten!
Jedoch bin ich auch durch die mean-Funktion nicht weitergekommen:
liefert
sprich der Mittelwert über alles für jede Person gleich...
Jedoch bin ich auch durch die mean-Funktion nicht weitergekommen:
Code: Alles auswählen
Daten$L_Zufriedenheit2011 <- mean(rowSums(Daten[,c("B16.1", "B16.2", "B16.3", "B16.4", "B16.5")], na.rm=TRUE))
Zuletzt geändert von PflipraS am Do Okt 15, 2020 3:01 pm, insgesamt 1-mal geändert.
Re: Umgang mit Missing Values
Vermutlich möchtest Du:
Gruß, Jörg
p.s.:
Bitte formatiere Codestücke passend, siehe: viewtopic.php?f=20&t=29
Code: Alles auswählen
Daten$L_Zufriedenheit2011 <- rowMeans(Daten[,c("B16.1", "B16.2", "B16.3", "B16.4", "B16.5")], na.rm=TRUE)
p.s.:
Bitte formatiere Codestücke passend, siehe: viewtopic.php?f=20&t=29
Re: Umgang mit Missing Values
Klasse! Heute bist Du mein persönlicher Held!
Tausend Dank!
Tausend Dank!