Hallo,
ich glaube, dass Grundprinzip der "Gewichtung" habe ich durchaus verstanden. An Beispielen verstehe ich es. Aber mir fällt es schwer, das Prinzip bzw. den errechneten Gewichtungsfaktor auf meine eigenen Daten oder Ergebnisse anzuwenden. Bei diesem letzten Schritt stehe ich irgendwie auf dem Schlauch. Daher möchte ich das gerne an einem Beispiel hier durchspielen, in der Hoffnung auf Korrekturen und Hinweise eurerseits. Die Beispiele sind natürlich stark vereinfacht.
Es geht weniger um die technische Umsetzung mit SPSS/R/Python/xyz, sondern um den Rechenweg an sich. Am Ende ist ein Script, mit dem die hier behandelten Beispieldaten erzeugt werden können. Eine CSV oder ZIP hochzuladen habe ich nicht geschafft. Akzeptiert das Forum scheinbar nicht.
Ausgangslage
- Fragebogen-Umfrage mit 50 Personen im Sample
- 36% weiblich; 64% männlich (in diesem Sample)
- In der Vergleichspopulation (die "echte Bevölkerung") sind 60% weiblich und 40% männlich.
- Das ergibt nach meiner Rechnung die Gewichtungsfaktoren: 1.666667 für weiblich und 0.625000 für männlich
Ergebnisse der Umfrage
Der Fragebogen beinhaltet zwei unterschiedliche Arten von Fragen.
- Frage A "Fühlst du dich gut?" kann mit Ja (TRUE) oder Nein (FALSE) beantwortet werden.
- Frage B "Wie fühlst du dich auf einer Skala von sehr gut (0) bis sehr schlecht (4)?" kann auf einer Likert-Skale von 0 bis 4 beantwortet werden.
Häufigkeiten Gesamt und nach Geschlecht zu Frage A:
- Code: Alles auswählen
> addmargins(table(df$gender, df$foo), 1)
FALSE TRUE
female 8 10
male 18 14
Sum 26 24
Häufigkeiten Gesamt und nach Geschlecht zu Frage B:
- Code: Alles auswählen
> addmargins(table(df$gender, df$bar), 1)
0 1 2 3 4
female 3 5 6 1 3
male 7 6 8 7 4
Sum 10 11 14 8 7
Es wäre durchaus möglich, die Resultate bei Frage B zu dichitomisieren und Werte von 0 bis einschl. 2 einfach als "Ja, ich fühle mich gut." zu werten.
Mein Problem
Und hier komme ich nun nicht weiter. Wie kann ich die Gewichtungsfaktoren auf meine Ergebnisse anwenden, um die Ergebnisse auf die "echte Bevölkerung" zu gewichten?
Minimal Working Example
Hier ist der R-Code mit dem die oben beschriebenen Daten erzeugt werden können.
- Code: Alles auswählen
set.seed(0)
k = 50
df <- data.frame(
gender = sample(c("female", "male", "male"), k, replace = TRUE),
foo = sample(c(TRUE, FALSE), k, replace = TRUE),
bar = sample(c(0, 1, 2, 3, 4), k, replace = TRUE)
)
# Frequency
# tab = xtabs(~ gender + foo, data=df)
tab = table(df$gender)
print(tab)
# Fraction
frac = addmargins(prop.table(tab))
print(frac)
# Real poluatin gender fraction
real_female_frac = 0.6
real_male_frac = 0.4
# Weights
weight_female = real_female_frac / frac["female"]
weight_male = real_male_frac / frac["male"]
print(c(weight_female, weight_male))
print(table(df$foo))
print(table(df$bar))