Kreuztabelle symmetrisch machen
Moderator: jogo
Kreuztabelle symmetrisch machen
Hallo zusammen,
ich habe einen Datensatz mit der Übereinstimmung zweier Beurteiler. Für die jeweils die selbe Person haben zwei Rater eine Bewertung auf der gleichen Skala ausgegeben. Mittels table lasse ich mir jetzt die Kreuztabelle ausgeben und wollte anschließend mit Kappa in vcd die Raterübereinstimmung berechnen. Das Problem ist, dass die Kreuztabelle nicht symmetrisch ist, weil einer der Rater eine der Kategorien der Beurteilungsskala nicht verwendet hat.
Wie kann ich table dazu bringen, eine symmetrische Tabelle mit allen Kategorien auf beiden Achsen auszugeben, ohne, dass ich die Tabelle hinterher noch von Hand bearbeiten muss?
Danke für eure Hilfe und viele Grüße
Frank
ich habe einen Datensatz mit der Übereinstimmung zweier Beurteiler. Für die jeweils die selbe Person haben zwei Rater eine Bewertung auf der gleichen Skala ausgegeben. Mittels table lasse ich mir jetzt die Kreuztabelle ausgeben und wollte anschließend mit Kappa in vcd die Raterübereinstimmung berechnen. Das Problem ist, dass die Kreuztabelle nicht symmetrisch ist, weil einer der Rater eine der Kategorien der Beurteilungsskala nicht verwendet hat.
Wie kann ich table dazu bringen, eine symmetrische Tabelle mit allen Kategorien auf beiden Achsen auszugeben, ohne, dass ich die Tabelle hinterher noch von Hand bearbeiten muss?
Danke für eure Hilfe und viele Grüße
Frank
Re: Kreuztabelle symmetrisch machen
Hallo Frank,
willkommen im Forum!
Kannst Du und etwas mehr von den Daten zeigen und auch etwas Code?
Der Goldstandard ist ein reproduzierbares Beispiel: viewtopic.php?f=20&t=11
die Mindestanforderung sind Ergebnisse von str(...) und summary(...).
Gruß, Jörg
willkommen im Forum!
Kannst Du und etwas mehr von den Daten zeigen und auch etwas Code?
Der Goldstandard ist ein reproduzierbares Beispiel: viewtopic.php?f=20&t=11
die Mindestanforderung sind Ergebnisse von str(...) und summary(...).
Gruß, Jörg
Re: Kreuztabelle symmetrisch machen
Hallo Jörg,
danke für das Willkommen. Der Datensatz ist relativ groß, weil noch voll mit vielen anderen Variablen. Es geht um zwei Variablen in denen die Ratings von zwei Beurteilern für alle Teilnehmer stehen. Erstellt man für beide Variablen mit Table eine Kreuztabelle sieht das folgendermaßen aus:
Wie man sieht, fehlt in den Spalten die Kategorie 0, weil Beurteiler 1 das nicht vergeben hat. Wenn man jetzt versucht in vcd dafür Kappa zu berechnen, gibts ne Fehlermeldung, weil die Dimensionen nicht identisch sind.
Ich suche also nach einem Weg, dass table einem eine symmetrische Matrix ausgibt, also auch die Kategorie anzeigt, die der erste Beurteiler nicht gewählt hat.
Ich hoffe das war als Erklärung so ausreichend.
VG Frank
danke für das Willkommen. Der Datensatz ist relativ groß, weil noch voll mit vielen anderen Variablen. Es geht um zwei Variablen in denen die Ratings von zwei Beurteilern für alle Teilnehmer stehen. Erstellt man für beide Variablen mit Table eine Kreuztabelle sieht das folgendermaßen aus:
Code: Alles auswählen
>neubeurteilung<-table(Daten$Rater1, Daten$Rater2)
>neubeurteilung
1 2 3 4 5
0 2 0 0 0 0
1 9 8 3 0 0
2 1 30 25 2 0
3 0 2 19 14 0
4 0 0 5 6 0
5 0 0 0 0 1
Code: Alles auswählen
>Ergebnis <- Kappa(neubeurteilung, weights="Fleiss-Cohen")
Fehler in crossprod(colFreqs, rowFreqs) : nicht passende Argumente
Ich hoffe das war als Erklärung so ausreichend.
VG Frank
Re: Kreuztabelle symmetrisch machen
Hallo Frank,
so etwa könnte es gehen:
Gruß, Jörg
so etwa könnte es gehen:
Code: Alles auswählen
a <- letters[1:5]
set.seed(42)
DF <- data.frame(a, b=sample(a, rep=TRUE))
DF
table(DF$a, DF$b)
DF$b <- factor(as.character(DF$b), levels=levels(DF$a))
DF
str(DF)
table(DF$a, DF$b)
Re: Kreuztabelle symmetrisch machen
Hi!
Hilft das?
LG,
Bernhard
Code: Alles auswählen
bsp <- data.frame(Rater1 = sample(0:5, 100, replace=TRUE),
Rater2 = sample(1:5, 100, replace=TRUE))
nb <- table(bsp)
print(nb)
nb <- cbind(rep(0,6), nb)
print(nb)
print(dim(nb))
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Kreuztabelle symmetrisch machen
Super, danke. Beides funktioniert. Bernhards Lösung ist nur etwas leichter
LG Frank
LG Frank
Re: Kreuztabelle symmetrisch machen
Dafür würde Jörgs Lösung automatisch auch funktionieren, wenn der eine Rater nie zum Ergebnis `3` gekommen wäre, das wäre mit meinem Ansatz umständlicher. Gleiches gilt, wenn noch weitere Daten hinzukommen -- dann ist Jörgs Lösung zukunftssicher, meine führt zum Fehler, sobald Rater 1 doch irgendwann `0` sagt.
LG,
Bernhard
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte