chi²-Test mit zwei Datensätzen

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

electricEH
Beiträge: 19
Registriert: Sa Mär 16, 2019 11:46 am

chi²-Test mit zwei Datensätzen

Beitrag von electricEH »

Hallo zusammen,
ich möchte die Geschlechterverteilung (1=weibl., 2=männl, 3=nicht zugeordnet) von zwei verschiedenen Datensätzen miteinander vergleichen. Ich denke, dass dafür ein chi²-Test sinnvoll wäre, weiß aber nicht, wie ich das in RStudio anwende, wenn ich keine Gruppenvariable habe, sondern zwei verschiedene Datensätze, die ich nicht so einfach in einem zusammenfassen kann, weil sie teilweise unterschiedliche Variablen haben.
Bin dankbar für jeden Tip!
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: chi²-Test mit zwei Datensätzen

Beitrag von jogo »

Hallo EH,

kannst Du uns bitte das Ergebnis von summary(...) für die beiden Datensätze zeigen?

Gruß, Jörg
electricEH
Beiträge: 19
Registriert: Sa Mär 16, 2019 11:46 am

Re: chi²-Test mit zwei Datensätzen

Beitrag von electricEH »

Das sind ziemlich große Datensätze mit vielen Variablen, falls du die komplette summary meinst.

Für die gender-Variable sieht das so aus:

> summary(data_eh$gender)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 1.00 1.00 1.35 2.00 3.00
> summary(data_jw$gender)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.000 1.000 1.000 1.203 1.000 3.000
electricEH
Beiträge: 19
Registriert: Sa Mär 16, 2019 11:46 am

Re: chi²-Test mit zwei Datensätzen

Beitrag von electricEH »

Okay, es hat sich erledigt. Ich habe gemerkt, dass ich sowieso einen Gesamtdatensatz brauche und eine Gruppenvariable und das doch nicht so kompliziert ist wie ich dachte. Danke trotzdem :-)
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: chi²-Test mit zwei Datensätzen

Beitrag von jogo »

electricEH hat geschrieben: Di Apr 09, 2019 12:12 pm Das sind ziemlich große Datensätze mit vielen Variablen, falls du die komplette summary meinst.

Für die gender-Variable sieht das so aus:

> summary(data_eh$gender)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 1.00 1.00 1.35 2.00 3.00
> summary(data_jw$gender)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.000 1.000 1.000 1.203 1.000 3.000
ähhhm, ich hätte das jetzt so nicht erwartet, denn das Geschlecht ist sicher kein Merkmal, das kardinal skaliert ist.
Ich hätte also eher sowas erwartet wie bei:

Code: Alles auswählen

summary(iris$Species)
Gruß, Jörg
electricEH
Beiträge: 19
Registriert: Sa Mär 16, 2019 11:46 am

Re: chi²-Test mit zwei Datensätzen

Beitrag von electricEH »

Naja, das liegt halt daran, dass die drei Geschlechtsoptionen im Umfrageprogramm den Zahlen 1 bis 3 zugeordnet waren. Wie kann ich die Skala denn im Nachhinein nominalskalieren, damit ich den chi²-Test gut durchführen kann?

Und ich verstehe nicht, was ich mit deinem Beispiel anfangen kann ohne dass ich die zugehörigen Daten habe.
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: chi²-Test mit zwei Datensätzen

Beitrag von bigben »

Hallo electricEH,

R merkt sich zu allen Zahlen, ob sie nominalskalenniveau, ordinalskalenniveau, ganzzahlig metrisch oder Fließkommazahlen sind. Wenn man das richtig in R hinterlegt, passen sich viele Funktionen selbst an und es passiert nicht so ein Blödsinn wie die Mittelwertbildung aus der Geschlechtszuordnung. Eine Frau und ein Nicht-zugeordnet ergeben ja keine zwei Männer.

Nominalskalierte Daten haben in R den Typ factor, ordinalskalierte den Typ ordered, ganzzahlige den Typ integer und normale Zahlen numeric. Eine Umwandlung kann z. B. so erfolgen:

Code: Alles auswählen

sex1 <- c(2,3,1,1,2,1,1,2,3,1,1,1,2,2,2)
sex2 <- factor(sex1, labels = c("Frau", "Mann", "Divers"))
Das erleichtert vieles. Beispielsweise kann man nicht mehr versehentlich einen Mittelwert bilden:

Code: Alles auswählen

> mean(sex1)
[1] 1.777778
> mean(sex2)
[1] NA
Warning message:
In mean.default(sex2) :
  Argument ist weder numerisch noch boolesch: gebe NA zurück
 
Beispielsweise passen die Grafikfunktionen sich an, wie Du an diesen beiden Plots siehst:

Code: Alles auswählen

sex1 <- c(2,3,1,1,2,1,1,2,3,1,1,1,2,2,2)
sex2 <- factor(sex1, labels = c("Frau", "Mann", "Divers"))

werte <- rnorm(length(sex1))
plot(werte ~ sex1, main = "Numerisches Geschlecht")
plot(werte ~ sex2, main = "Nominales Geschlecht")
Wenn man Regressionen rechnet, dann führt R automatisch eine Dummycodierung durch und so weiter und so fort. Es ist daher immer klug, R das Skalenniveau mitzuteilen.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: chi²-Test mit zwei Datensätzen

Beitrag von jogo »

electricEH hat geschrieben: Mi Apr 10, 2019 3:13 pm Naja, das liegt halt daran, dass die drei Geschlechtsoptionen im Umfrageprogramm den Zahlen 1 bis 3 zugeordnet waren. Wie kann ich die Skala denn im Nachhinein nominalskalieren, damit ich den chi²-Test gut durchführen kann?
es gibt die Funktion as.factor(), mit der man eine numerische Spalte in einen Faktror umwandeln kann. ... oder auch die Funktion factor(), um einen Faktor zu erzeugen.
Und ich verstehe nicht, was ich mit deinem Beispiel anfangen kann ohne dass ich die zugehörigen Daten habe.
Bitte probiere den Code aus, um festzustellen, dass Du sehr wohl die Daten zur Verfügung hast. (R liefert ein ansehnliches Rudel an Daten standardmäßig mit.)

Gruß, Jörg
electricEH
Beiträge: 19
Registriert: Sa Mär 16, 2019 11:46 am

Re: chi²-Test mit zwei Datensätzen

Beitrag von electricEH »

Ihr habt recht, ich hab das jetzt umgewandelt.

Und danke Jörg, das wusste ich nicht, dass R selbst Daten hat.

Nur merke ich, dass jetzt bestimmte Rechnungen nicht mehr funktionieren, z.B. in einer Partialkorrelation für gender zu kontrollieren. Brauche ich dafür jetzt andere Tests?
electricEH
Beiträge: 19
Registriert: Sa Mär 16, 2019 11:46 am

Re: chi²-Test mit zwei Datensätzen

Beitrag von electricEH »

Meine Vorgängerin hat auch jeweils ein Regressionsgewicht für Gender angegeben, wenn sie das als Kontrollvariable mit in die Regression aufgenommen hat. Das geht dann auch nicht, weil bei nominalskalierten Variablen dann für jede Ausprägung ein Intercept angegeben wird (bzw. eins wird auf 1 gesetzt soweit ichd as verstanden habe). Oder gibt es irgendeine Möglichkeit, den Einfluss von Gender dann auf eine Zahl zu bringen?
Antworten