Seite 1 von 1

Contingency Table

Verfasst: Mi Sep 16, 2020 9:43 pm
von danilov
Ich habe zwei reader die jeweils Bewertungen der gleichen Patienten auf einer Ordinalskala von 1-4 vergeben (nicht alle Patienten werden bewertet). Die Daten (Typ int) schauen etwa so aus

Code: Alles auswählen

  
     readerA readerB
1       NA      NA
2       NA      NA
3       NA      NA
4        2       2
5       NA      NA
6       NA      NA
7       NA      NA
8       NA      NA
9       NA      NA
10      NA      NA
11      NA      NA
12      NA      NA
13      NA      NA
14       2       1
15       2       1
16       1       4
17      NA      NA
18       2       3
19       2       2
20      NA      NA
21      NA      NA
22       3       2
23       2       1
24      NA      NA
25      NA      NA
26      NA      NA
27      NA      NA
28      NA      NA
29      NA      NA
30      NA      NA
31      NA      NA
32      NA      NA
33      NA      NA
34      NA      NA
35      NA      NA
36       3       1
37      NA      NA
38      NA      NA
39       2       1
40       3       3
41      NA      NA
42       2       2
43       2       2
44      NA      NA
45       2       2
46      NA      NA
47      NA      NA
48      NA      NA
49      NA      NA
50      NA      NA
51      NA      NA
52      NA      NA
53      NA      NA
54      NA      NA
55      NA      NA
56       3       2
57      NA      NA
58       2       2
59       2       1
60       2       1
61      NA      NA
62      NA      NA
63      NA      NA
64       2       2
65      NA      NA
66      NA      NA
67       1       2
Ich würde das Agreement der Reader gerne mit dem weighted Kappa bestimmen. Dafür benötige ich eine Contingency Tabelle der Daten. Ein

Code: Alles auswählen

table(name_des_datenframes)
liefert mit eine solche Tabelle:

Code: Alles auswählen

       readerB
readerA 1 2 3 4
      1 0 1 0 1
      2 6 7 1 0
      3 1 2 1 0
Ein vcd::Kappa(name_der_contingency_table) bringt aber die Fehlermeldung
Fehler in crossprod(colFreqs, rowFreqs) : nicht passende Argumente
. Ich würde vermuten, weil die Tabelle nicht 4x4 sondern 4x3 ist (weil ReaderA hier keine 4 vergeben hat).
Kann mir jemand helfen das Problem zu lösen?

Re: Contingency Table

Verfasst: Mi Sep 16, 2020 9:54 pm
von bigben
danilov hat geschrieben: Mi Sep 16, 2020 9:43 pmIch würde vermuten, weil die Tabelle nicht 4x4 sondern 4x3 ist (weil ReaderA hier keine 4 vergeben hat).
Kann mir jemand helfen das Problem zu lösen?
Hallo Danilo,

Wenn Du table mit einem Factor fütterst, dann werden laut Voreinstellung immer alle Faktorlevel gezählt und ausgegeben. Etwa so:

Code: Alles auswählen

readerA <- c(1, 2, 1)
readerB <-c(1, 2, 3)


A <- factor(c(1, 2, 1), levels = c(1, 2, 3, 4, 5, 6))
B <- factor(c(1, 1, 1), levels = c(1, 2, 3, 4, 5, 6))

table(A, B)
Das wird dann zu

Code: Alles auswählen

> table(A, B)
   B
A   1 2 3 4 5 6
  1 2 0 0 0 0 0
  2 1 0 0 0 0 0
  3 0 0 0 0 0 0
  4 0 0 0 0 0 0
  5 0 0 0 0 0 0
  6 0 0 0 0 0 0
obwohl ja die meisten dieser Werte gar nicht vorkamen.

HTH,
Bernhard

Re: Contingency Table

Verfasst: Do Sep 17, 2020 7:00 am
von danilov
Vielen Dank, die Konversion der Integer zu Faktoren und das manuelle Hinzufügen der fehlenden Levels hat funktioniert. Jetzt klappt es!