kreuztabelle funktioniert nicht

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

Moderatoren: EDi, jogo

Antworten
studentin
Beiträge: 1
Registriert: Mi Jul 24, 2019 12:50 am

kreuztabelle funktioniert nicht

Beitrag von studentin »

Hallo,
ich hoffe, dass ich mich ein bisschen ausdrücken kann und mein Problem erklären. Ich bin nicht sehr klug was das hier angeht. Leider muss ich für meine Bachelorarbeit meine Daten mit R auswerten. In einer Hausarbeit hat auch alles funktioniert und mit anderen Datensätzen, funktionieren die Befehle auch. Ich hab eine csv Datei mit 421 Datensätzen eingeladen und damit möchte und muss ich erst mal eine Kreuztabelle erstellen. Allerdings verstehe ich nicht wo das Problem liegt. In meinem Studienheft steht noch eine Funktion mit tabular(), aber auch die bringt nur MIst raus mit dem Datensatz für meine Bachelorarbeit. Leider kann mir niemand in meinem Bekanntkreis helfen und ich drehe bald durch, weil die Zeit dann eng wird, wenn sich das Problem nicht löst. Ich hoffe jemand weiß eine Lösung, warum nicht bio und ide als Spalten und anders, divers, m und w als zeilen mit absoluten Häufigkeiten. Ich bin über jeden Tipp und jede Hilfe dankbar.

table(daten$ide, daten$bio)

Anderes Divers Männlich Weiblich
113 0 0 6 4
Anderes 2 1 0 5 5
Divers 1 0 2 15 7
Männlich 2 0 0 117 4
Weiblich 2 1 1 33 100
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: kreuztabelle funktioniert nicht

Beitrag von jogo »

Hallo Carla,

willkommen im Forum!
Kannst Du bitte den Output von

Code: Alles auswählen

str(daten)
in Deine nächste Nachricht kopieren.
Das kann dann schon einiges zur Aufklärung beitragen.

Und bitte verwende Formatierungen: viewtopic.php?f=20&t=29

Gruß, Jörg
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: kreuztabelle funktioniert nicht

Beitrag von student »

Hallo Carla,

ich schaue mal in die Kristallkugel und nehme mal ein Beispiel aus meiner Schublade. Ausgehend von einer CSV-Datei, die eingelesen in R folgende Struktur hat

Code: Alles auswählen

> Daten <- read.csv2("Sommerzeit.csv")
> str(Daten)
'data.frame':   517 obs. of  2 variables:
 $ Zustimmung: int  1 1 1 1 1 1 1 1 1 1 ...
 $ Geschlecht: int  1 1 1 1 1 1 1 1 1 1 ...
verpasse ich ich den verschiedenen Ausprägungen (Zustimmung 1 - 3, Geschlecht 1 & 2) ein Label und mache Faktoren daraus:

Code: Alles auswählen

> Daten$Zustimmung <- factor(Daten$Zustimmung, labels = c("ja", "nein", "unschlüssig"))
> Daten$Geschlecht <- factor(Daten$Geschlecht, labels = c("Frau", "Mann"))
Danach habe ich diesen Dataframe vorliegen:

Code: Alles auswählen

> str(Daten)
'data.frame':   517 obs. of  2 variables:
 $ Zustimmung: Factor w/ 3 levels "ja","nein","unschlüssig": 1 1 1 1 1 1 1 1 1 1 ...
 $ Geschlecht: Factor w/ 2 levels "Frau","Mann": 1 1 1 1 1 1 1 1 1 1 ...
Nun erstelle ich darauf basierend eine Tabelle:

Code: Alles auswählen

> DatenTabelle <- table(Daten)
> DatenTabelle
             Geschlecht
Zustimmung    Frau Mann
  ja            68  134
  nein         130   75
  unschlüssig   59   51
Ploten kannst Du das so:

Code: Alles auswählen

> barplot(DatenTabelle, main = "Zustimmung zur Sommerzeit", ylab = "Anzahl", beside = TRUE, legend = TRUE)
Zur Tabelle werden die Randsummen hinzugefügt:

Code: Alles auswählen

> DatenTabelle <- addmargins(table(Daten$Zustimmung, Daten$Geschlecht))
> DatenTabelle
             
              Frau Mann Sum
  ja            68  134 202
  nein         130   75 205
  unschlüssig   59   51 110
  Sum          257  260 517
Und die Tabelle noch relativiert:

Code: Alles auswählen

> TabRel <- prop.table(DatenTabelle)
> TabRel
             Geschlecht
Zustimmung          Frau       Mann
  ja          0.13152805 0.25918762
  nein        0.25145068 0.14506770
  unschlüssig 0.11411992 0.09864603
Und zum Schluss noch den Chi2-Test:

Code: Alles auswählen

> Ergebnis <- chisq.test(DatenTabelle, correct = FALSE)
> Ergebnis

        Pearson's Chi-squared test

data:  DatenTabelle
X-squared = 36.886, df = 2, p-value = 9.779e-09
Wenn Du das Beispiel nachvollziehen möchtest, die CSV-Datei Sommerzeit habe beigefügt. Vielleicht hilft das Beispiel weiter...!
Dateianhänge
Sommerzeit.csv
(2.55 KiB) 12-mal heruntergeladen
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
bigben
Beiträge: 2780
Registriert: Mi Okt 12, 2016 9:09 am

Re: kreuztabelle funktioniert nicht

Beitrag von bigben »

studentin hat geschrieben: Mi Jul 24, 2019 1:01 amich hoffe, dass ich mich ein bisschen ausdrücken kann und mein Problem erklären.
Hast Du irgendwo den Versuch gemacht, das Problem zu erklären? Habe ich dann wohl überlesen.
Ich bin nicht sehr klug was das hier angeht.


Deine Ausbilder halten Dich für klug genug, das hier in R zu machen. So schlimm wird es mit der mangelnden Klugheit wohl nicht sein. Wäre aber klug gewesen zu beschreiben, worin Du das Problem siehst.
Leider muss ich für meine Bachelorarbeit meine Daten mit R auswerten
Das Mitleid dazu wird in einem R-Forum begrenzt bleiben, aber das ist Dir bestimmt klar, oder?
Ich hab eine csv Datei mit 421 Datensätzen eingeladen und damit möchte und muss ich erst mal eine Kreuztabelle erstellen. Allerdings verstehe ich nicht wo das Problem liegt.


Ich auch nicht. Wenn die Datensätze eingeladen sind, ist ein wichtiger Schritt schon erledigt und weiter unten zeigst Du, dass Du erfolgreich eine Kreuztabelle erstellt hast.
aber auch die bringt nur MIst raus mit dem Datensatz für meine Bachelorarbeit.


"Mist" dürfte hier allegorisch gemeint sein. Echter Mist entsteht eher in Ställen. Ist das mit dieser anderen Funktion relevant, oder reicht table() für Dein Problem aus?
Ich hoffe jemand weiß eine Lösung, warum nicht bio und ide als Spalten und anders, divers, m und w als zeilen mit absoluten Häufigkeiten.
Darin scheint sich die Problembeschreibung zu verstecken. Da fehlt aber mindestens ein Verb/Prädikat im Nebensatz. So passt es nicht zur deutschen Syntax. Wenn ich mir ein Prädikat dazu denke, habe ich den Eindruck, dass Du falsche Vorstellungen davon hast, was eine Kreuztabelle ist. Wäre das möglich? Willst Du am Ende einfache Häufigkeitstabellen mittels

Code: Alles auswählen

table(daten$ide); table(daten$bio)
table(daten$ide, daten$bio)

Anderes Divers Männlich Weiblich
113 0 0 6 4
Anderes 2 1 0 5 5
Divers 1 0 2 15 7
Männlich 2 0 0 117 4
Weiblich 2 1 1 33 100
Die Tabelle hat es zerhauen, weil Du meinen Rat von hier noch nicht befolgt hast: viewtopic.php?f=20&t=29

Scheint so, als hättest Du all diese Leute danach befragt, welches Geschlecht ihrer subjektiven Identität und welches ihrer Biologie entspricht. Anscheinend haben 113 die Frage zu dämlich gefunden und nicht geantwortet und 117 waren übereinstimmend männlich, 100 übereinstimmend weiblich und alle anderen sind sehr schön kreuztabelliert. Ich hätte am ehesten ein Problem mit der Frage, worin sich "anders" von "divers" unterscheidet, aber das ist wohl eher nicht Dein Problem. Welches ist Dein Problem? Idealerweise in einem syntaktisch und korrekten deutschen Satz?

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten