Prace dyplomowe · SPSS

Kappa Cohena i ICC w SPSS – zgodność oceniających krok po kroku

Zgodność dwóch i więcej oceniających w SPSS na jednym przykładzie: kappa Cohena w Crosstabs, kappa ważona w osobnym oknie Weighted Kappa (od wersji 27), ICC w Reliability Analysis z wyborem modelu i typu, przełożenie ustawień SPSS na nazwy form McGrawa i Wonga oraz Shrouta i Fleissa, tabele wynikowe, składnia i zapis APA – z plikiem .sav do pobrania.

Strona główna / Blog / Kappa i ICC w SPSS
W skrócie: Kappę Cohena dla dwóch oceniających i kategorii nominalnych policzysz w Analyze → Descriptive Statistics → Crosstabs → Statistics → Kappa; kappę ważoną dla skali porządkowej – w osobnym oknie Analyze → Scale → Weighted Kappa (od wersji 27), a ICC dla ocen ilościowych – w Analyze → Scale → Reliability Analysis → Statistics. Przy ICC wybierz model i typ świadomie: domyślny model mieszany ze spójnością pomija systematyczne różnice między oceniającymi, a do pracy podaj pełną nazwę formy, miarę pojedynczą lub średnią i przedział ufności. Przy kappie podaj procent zgodności i przedział ufności, a przy kappie ważonej – rodzaj wag.

Która miara i które okno w SPSS

Gdy dwie osoby kodują te same odpowiedzi albo kilka osób punktuje te same prace, recenzent zapyta o zgodność oceniających. Wybór miary, paradoksy kappy i alfę Krippendorffa omawia poradnik zgodność sędziów: kappa, ICC i alfa, a R – jego przykład. Tutaj zostajemy przy SPSS: które okno, co zaznaczyć i co przepisać z wydruku.

Miary zgodności oceniających i ich okna w SPSS (nazwy według dokumentacji IBM SPSS Statistics 32)
OcenyMiaraOknoSkładnia
2 oceniających, kategorie nominalnekappa CohenaAnalyze → Descriptive Statistics → Crosstabs → Statistics → KappaCROSSTABS /STATISTICS=KAPPA
2 oceniających, kategorie uporządkowanekappa ważonaAnalyze → Scale → Weighted Kappa (od wersji 27)WEIGHTED KAPPA
3+ oceniających, kategorie nominalnekappa FleissaAnalyze → Scale → Reliability Analysis → Statistics–
2+ oceniających, oceny ilościoweICCAnalyze → Scale → Reliability Analysis → StatisticsRELIABILITY /ICC=…

Ścieżki, nazwy opcji i składnię sprawdziliśmy w dokumentacji IBM SPSS Statistics 32 (IBM Corp., b.d.-a, b.d.-b, b.d.-c, b.d.-d, b.d.-e, b.d.-f). Podajemy je po angielsku, a polskie nazwy – tylko tam, gdzie znaleźliśmy je w polskiej dokumentacji IBM; w polskim interfejsie mogą wyglądać inaczej. Dokumentacja nie wymienia wszystkich nazw kolumn w tabelach wynikowych (np. Asymptotic Standard Error, Approximate T). Odtwarzamy je z typowego wydruku, więc w Twojej wersji mogą się nieco różnić. Ogólne zasady czytania wydruku opisuje wpis jak czytać wyniki z SPSS.

Przykład i pliki do pobrania

Wszystkie liczby pochodzą z jednego zbioru symulowanego. Troje prowadzących (A, B i C) niezależnie oceniło 80 raportów z ćwiczeń laboratoryjnych:

  • kat_A, kat_B – główny problem raportu według A i B: 1 = metoda, 2 = analiza danych, 3 = wnioski (kategorie nominalne);
  • poz_A, poz_B – ogólna ocena z rubryki: 1 = niewystarczający, 2 = dostateczny, 3 = dobry, 4 = bardzo dobry (kategorie uporządkowane);
  • pkt_A, pkt_B, pkt_C – punkty 0–40 od każdego z trojga oceniających.

Pobierz plik .sav z etykietami zmiennych i wartości albo ten sam zbiór w pliku CSV. Format SPSS wyjaśnia hasło plik .sav.

Przygotowanie danych

  • Jeden wiersz = jeden oceniany obiekt, a każdy oceniający w osobnej kolumnie (format szeroki, zob. format długi i szeroki danych). Oceny jednego raportu od A i B muszą stać w tym samym wierszu.
  • Te same kody u obu oceniających. Kappa opiera się na tabeli kwadratowej, w której wiersze i kolumny wyrażają tę samą skalę (IBM Corp., b.d.-a). Jeśli A zapisał „metodę” jako 1, a B jako 3, SPSS policzy kappę z błędnej tabeli i nie ostrzeże.
  • Ten sam typ zmiennych. Kappa nie jest liczona, gdy jedna zmienna jest tekstowa, a druga liczbowa; zmienne tekstowe muszą mieć tę samą długość (IBM Corp., b.d.-d). Okno Weighted Kappa też wymaga zmiennych wyłącznie tekstowych albo wyłącznie liczbowych (IBM Corp., b.d.-e). Najprościej zakodować kategorie liczbami z etykietami wartości – zob. przygotowanie danych w SPSS.
  • Kategoria, której jeden oceniający nie użył, nie psuje tabeli: komórki z wartością obserwowaną tylko dla jednej zmiennej dostają liczebność 0 (IBM Corp., b.d.-a).

Kappa Cohena w Crosstabs krok po kroku

Pytanie: czy A i B tak samo wskazują główny problem raportu?

  1. Analyze → Descriptive Statistics → Crosstabs. Przenieś kat_A do Row(s), a kat_B do Column(s).
  2. Statistics: zaznacz Kappa (tak samo w polskiej dokumentacji). Chi-kwadrat nie jest tu potrzebny – sprawdza związek, a nie zgodność.
  3. Cells: liczebności obserwowane i procent od ogółu (Total). Potem Paste zamiast OK.
kat_A * kat_B Crosstabulation (Count) – liczby policzone w R tymi samymi metodami co SPSS; układ tabeli jak w SPSS
kat_A \ kat_Bmetodaanaliza danychwnioskiTotal
metoda184527
analiza danych421429
wnioski741324
Total29292280
Symmetric Measures – liczby policzone w R tymi samymi metodami co SPSS (błąd asymptotyczny: Fleiss i in., 1969); układ tabeli jak w SPSS, nazwy kolumn odtworzone z typowego wydruku
ValueAsymptotic Standard ErrorApproximate TApproximate Significance
Measure of Agreement – Kappa.473.0805.970.000
N of Valid Cases80

Najpierw sprawdź N i przekątną: A i B zgodzili się w 18 + 21 + 13 = 52 raportach, czyli w 65.0%. Przy takich rozkładach brzegowych przypadek dałby 33.6% zgodności, więc kappa = (.650 − .336)/(1 − .336) = .473 (Cohen, 1960). Approximate T to kappa podzielona przez błąd standardowy liczony przy założeniu hipotezy zerowej, a Sig. = .000 zapisz jako p < .001. Ten test mówi tylko, że zgodność przewyższa przypadkową – do pracy ważniejszy jest przedział ufności. W sprawdzonej dokumentacji okna Crosstabs go nie znaleźliśmy, więc policz go z błędu asymptotycznego: .473 ± 1.96 × .080 = [.316, .629]. Ten sam wzór na błąd (Fleiss i in., 1969) stosuje kalkulator kappy Cohena i testu McNemara – wpisz tam tabelę i porównaj wynik.

Kappa w Crosstabs jest zawsze nieważona: pomyłka „metoda” zamiast „wnioski” waży tyle samo co każda inna. Dla kategorii nominalnych tak ma być. Dla trojga i więcej oceniających użyj kappy Fleissa w oknie Reliability Analysis (IBM Corp., b.d.-c), a nie średniej z kapp dla par.

Kappa ważona – osobne okno od wersji 27

Rubryka 1–4 jest porządkowa: różnica „dobry” – „bardzo dobry” to mniejszy błąd niż „niewystarczający” – „bardzo dobry”. Tę różnicę uwzględnia kappa ważona (Cohen, 1968). Polecenie CROSSTABS jej nie liczy – opis podkomendy STATISTICS jej nie wymienia (IBM Corp., b.d.-d). Służy do tego osobna procedura Analyze → Scale → Weighted Kappa (w polskiej dokumentacji: Analiza → Skala → Ważony współczynnik Kappa). Opis polecenia WEIGHTED KAPPA wskazuje w historii wydań wersję 27.0 (IBM Corp., b.d.-f), a sama procedura zastąpiła wcześniejsze rozszerzenie STATS WEIGHTED KAPPA (IBM Corp., b.d.-e). W starszej wersji SPSS policz kappę ważoną w kalkulatorze albo w R.

  1. Analyze → Scale → Weighted Kappa. Przenieś poz_A i poz_B do Pairwise raters (pol. Zmienne oceniające parami). Oceniających w wierszach i kolumnach możesz też wskazać osobno opcją Specify raters for rows and columns (IBM Corp., b.d.-e).
  2. Criteria: wagi liniowe (Cicchetti–Allison) są domyślne, kwadratowe wybierasz sam; poziom asymptotycznego przedziału ufności domyślnie 95% (IBM Corp., b.d.-e).
  3. Print: zaznacz Display the crosstabulation of rating variables – tabela ocen jest domyślnie wyłączona.
Kappa nieważona i ważona, poz_A i poz_B – liczby policzone w R tymi samymi metodami co SPSS (błędy: Fleiss i in., 1969; z = kappa / błąd przy hipotezie zerowej); układ tabeli jak w SPSS, nazwy kolumn odtworzone z typowego wydruku
WagiKappaAsymptotic Std. ErrorzSig.95% CI Lower95% CI Upper
brak (Crosstabs).447.0727.011.000.305.589
liniowe (domyślne).615.0607.852.000.498.731
kwadratowe.756.0516.840.000.657.855

A i B dali identyczną ocenę tylko w 47 z 80 raportów (58.8%), ale 29 z 33 niezgodności to sąsiednie stopnie (rysunek 1A). Dlatego kappa ważona jest wyższa od nieważonej, a kwadratowa – od liniowej: kwadrat odległości karze bliskie pomyłki jeszcze łagodniej. Wagi wybierz przed analizą i nazwij w opisie. W Criteria wybierasz jeden rodzaj wag, więc drugi wymaga ponownego uruchomienia. Wzory wag i ich wybór omawia hasło kappa ważona.

Dwa panele. A: tabela 4 na 4 ocen z rubryki u oceniających A i B dla 80 raportów; 47 ocen zgodnych na przekątnej, 29 różni się o jeden stopień, 4 o dwa stopnie. B: wykres punktowy punktów 0–40 od oceniających B i C względem punktów od A; punkty B leżą wokół linii równości, punkty C średnio o 3.2 punktu niżej
Rysunek 1. A – tabela zgodności ocen z rubryki (niebieskie – oceny zgodne, beżowe – różnica o jeden stopień, czerwone – o dwa i więcej). B – punkty od B i C względem punktów od A; linia przerywana oznacza tę samą liczbę punktów. To nie jest wykres z SPSS. Obliczenia i rysunek: R (dane symulowane).

ICC w Reliability Analysis krok po kroku

Pytanie: czy troje oceniających przyznaje raportom tyle samo punktów? Średnie: A – 26.41, B – 26.55, C – 23.21. C jest surowszy, ale porządek raportów ma podobny (rysunek 1B).

  1. Analyze → Scale → Reliability Analysis (pol. Analiza → Skala → Analiza rzetelności). Przenieś pkt_A, pkt_B i pkt_C do Items – tu „pozycjami” są oceniający.
  2. Statistics (pol. Statystyki): zaznacz Intraclass correlation coefficient (pol. Współczynnik korelacji wewnątrzklasowej).
  3. Model: Two-Way Random, gdy oceniający są próbą z szerszej grupy, na którą uogólniasz wynik; Two-Way Mixed, gdy interesują Cię tylko ci konkretni oceniający; One-Way Random, gdy każdy obiekt oceniali inni oceniający (IBM Corp., b.d.-c).
  4. Type: Absolute Agreement (pol. Bezwzględna zgodność), gdy liczy się ta sama liczba punktów; Consistency (pol. Spójność), gdy wystarczy ten sam porządek. Zostaw Confidence interval 95% i Test value 0, potem Paste.

Uwaga na ustawienia domyślne: według opisu składni bez jawnego wyboru SPSS liczy model mieszany i typ spójności (IBM Corp., b.d.-b). Przy ocenach punktowych zwykle to nie jest to, o co pyta recenzent. Tak samo ustawiony ICC we wpisie alfa Cronbacha w SPSS służy do rzetelności skali, a nie do zgodności oceniających.

Ustawienia ICC w SPSS a nazwy form u McGrawa i Wonga (1996) oraz Shrouta i Fleissa (1979)
Model i typ w oknieSkładnia /ICC=McGraw i Wong: miara pojedyncza / średniaShrout i Fleiss
One-Way RandomMODEL(ONEWAY)ICC(1) / ICC(k)ICC(1,1) / ICC(1,k)
Two-Way Random, Absolute AgreementMODEL(RANDOM) TYPE(ABSOLUTE)ICC(A,1) / ICC(A,k)ICC(2,1) / ICC(2,k)
Two-Way Random, ConsistencyMODEL(RANDOM) TYPE(CONSISTENCY)ICC(C,1) / ICC(C,k)brak odpowiednika
Two-Way Mixed, ConsistencyMODEL(MIXED) TYPE(CONSISTENCY)ICC(C,1) / ICC(C,k)ICC(3,1) / ICC(3,k)
Two-Way Mixed, Absolute AgreementMODEL(MIXED) TYPE(ABSOLUTE)ICC(A,1) / ICC(A,k)brak odpowiednika

Shrout i Fleiss (1979) opisali sześć form, McGraw i Wong (1996) – dziesięć, i to ich rozróżnienie modelu i typu odpowiada oknu SPSS. Modele losowy i mieszany dają tę samą liczbę; różni je to, na kogo wolno uogólnić wynik. W wierszu z „brakiem odpowiednika” w pracy podaj nazwę według McGrawa i Wonga. Formy i wzory ze średnich kwadratów wyjaśnia hasło ICC.

Intraclass Correlation Coefficient, Two-Way Random, Absolute Agreement (pkt_A, pkt_B, pkt_C) – liczby policzone w R tymi samymi metodami co SPSS (wzory i przedziały: McGraw i Wong, 1996); układ tabeli jak w SPSS, nazwy kolumn odtworzone z typowego wydruku
Intraclass Correlation95% CI Lower Bound95% CI Upper BoundF Test with True Value 0: Valuedf1df2Sig
Single Measures.797.508.90123.58979158.000
Average Measures.922.756.96523.58979158.000

Single Measures to rzetelność oceny jednego oceniającego, Average Measures – średniej z trojga. Do pracy weź wiersz zgodny z tym, jak wynik będzie używany: jeśli dalej każdy raport oceni jedna osoba, raportuj miarę pojedynczą (Koo i Li, 2016). Test F sprawdza tylko, czy ICC różni się od 0, więc ważniejszy jest przedział ufności. Jego dolna granica (.508) jest tu niska, bo C systematycznie zaniża punkty.

Ta sama tabela przy innych ustawieniach (miara pojedyncza i średnia) – liczby policzone w R tymi samymi metodami co SPSS
UstawieniaSingle Measures [95% CI]Average Measures [95% CI]F (df1, df2)
Two-Way Random, Absolute Agreement.797 [.508, .901].922 [.756, .965]23.589 (79, 158)
Two-Way Mixed, Consistency.883 [.836, .919].958 [.939, .971]23.589 (79, 158)
One-Way Random.790 [.714, .852].919 [.882, .945]12.284 (79, 160)
Tylko A i B: Two-Way Random, Absolute Agreement.882 [.822, .923].937 [.902, .960]15.770 (79, 79)

Spójność (.883) pomija przesunięcie oceniającego C, a zgodność bezwzględna (.797) je karze. Bez C zgodność bezwzględna rośnie do .882. Różnica między typami to wskazówka, że któryś oceniający punktuje systematycznie inaczej – sprawdź średnie w kolumnach. Taki oceniający wymaga ponownego szkolenia, a nie innego ICC. Plan badania powtarzalności, SEM i wykres Blanda–Altmana opisuje wpis badanie rzetelności pomiaru klinicznego, a formy ICC dla innych danych przeliczysz w kalkulatorze ICC.

Zapis wyników w stylu APA

Podaj liczbę obiektów i oceniających, procent zgodności, rodzaj wag albo pełną nazwę formy ICC i przedział ufności. Wzory:

Dwoje oceniających niezależnie wskazało główny problem 80 raportów. Zgodność obserwowana wyniosła 65.0%, kappa Cohena κ = .47, 95% CI [.32, .63]. Ogólną ocenę z rubryki (1–4) oceniający przyznali identycznie w 58.8% raportów, a niemal wszystkie rozbieżności dotyczyły sąsiednich stopni; kappa ważona z wagami liniowymi κw = .61, 95% CI [.50, .73] (z wagami kwadratowymi κw = .76, 95% CI [.66, .85]).
Zgodność punktów (0–40) przyznanych 80 raportom przez troje oceniających oszacowano współczynnikiem korelacji wewnątrzklasowej w dwuczynnikowym modelu losowym, z definicją zgodności bezwzględnej, dla pojedynczego oceniającego: ICC(A,1) = .80, 95% CI [.51, .90], F(79, 158) = 23.59, p < .001. Oceniający C przyznawał średnio o 3.2 punktu mniej niż pozostali; przy definicji spójności ICC(C,1) = .88, 95% CI [.84, .92].

Opisy innych analiz przygotuje generator opisu wyników APA, a test do hipotezy podpowie kreator doboru testu.

Przykład reprodukowalny

Składnia SPSS i kod R

Przepis 1 to składnia do wklejenia w edytorze składni SPSS. Napisaliśmy ją według opisu poleceń CROSSTABS, WEIGHTED KAPPA i RELIABILITY w Command Syntax Reference (IBM Corp., b.d.-b, b.d.-d, b.d.-f), ale nie uruchamialiśmy jej w SPSS. Przepis 2 w R tworzy pliki do pobrania i liczy liczby z tabel: kappę i kappę ważoną z błędami Fleissa, Cohena i Everitta oraz ICC ze średnich kwadratów ANOVA z przedziałami McGrawa i Wonga, z kontrolą w pakietach DescTools i psych.

1. Składnia SPSS: CROSSTABS, WEIGHTED KAPPA i RELIABILITY

Dane wejściowe: plik kappa-icc-spss-dane.sav otwarty w SPSS (wersja 27 lub nowsza dla WEIGHTED KAPPA).

Co odczytać: tabelę krzyżową i Symmetric Measures (kappa), wynik kappy ważonej z przedziałem ufności i tabelę Intraclass Correlation Coefficient (wiersz Single Measures).

SPSS
* Zgodność oceniających: 80 raportów, oceniający A, B i C.
* Składnia zgodna z opisem CROSSTABS, WEIGHTED KAPPA i RELIABILITY w Command Syntax Reference; nie była uruchamiana w SPSS.

* 1. Kappa Cohena: główny problem raportu (kategorie nominalne).
CROSSTABS
  /TABLES=kat_A BY kat_B
  /STATISTICS=KAPPA
  /CELLS=COUNT TOTAL.

* 2. Kappa ważona: ocena z rubryki 1–4 (SPSS 27 lub nowszy), wagi liniowe i kwadratowe.
WEIGHTED KAPPA poz_A BY poz_B
  /CRITERIA ASYMPTOTICCILEVEL=95 WEIGHTING=LINEAR
  /PRINT TABULATION(ALL).
WEIGHTED KAPPA poz_A BY poz_B
  /CRITERIA ASYMPTOTICCILEVEL=95 WEIGHTING=QUADRATIC.

* 3. ICC: punkty 0–40, model dwuczynnikowy losowy, zgodność bezwzględna.
RELIABILITY
  /VARIABLES=pkt_A pkt_B pkt_C
  /SCALE(PUNKTY)=ALL
  /MODEL=ALPHA
  /ICC=MODEL(RANDOM) TYPE(ABSOLUTE) CIN=95 TESTVAL=0.

* Dla porównania: model mieszany, spójność.
RELIABILITY
  /VARIABLES=pkt_A pkt_B pkt_C
  /SCALE(PUNKTY)=ALL
  /MODEL=ALPHA
  /ICC=MODEL(MIXED) TYPE(CONSISTENCY) CIN=95 TESTVAL=0.

2. Te same liczby w R i pliki .sav oraz CSV

Dane wejściowe: 80 raportów ocenionych przez troje prowadzących (dane symulowane, set.seed(3110)); pakiety haven, psych i DescTools.

Co odczytać: tabele krzyżowe, kappę z błędem, T, p i przedziałem, kappę ważoną (liniową i kwadratową), średnie kwadraty ANOVA oraz ICC z przedziałami i testem F przy trzech ustawieniach – wyniki zgodne z CohenKappa() i psych::ICC().

R
# B311 – kappa Cohena, kappa ważona i ICC w SPSS: liczby do tabel w układzie SPSS
# Dane symulowane, set.seed(3110): 80 raportów z ćwiczeń laboratoryjnych oceniło niezależnie troje
# prowadzących (A, B, C). A i B przypisali raportowi główny problem (kategorie nominalne) i ogólną ocenę
# z rubryki 1–4 (kategorie porządkowe); A, B i C przyznali punkty 0–40. Oceniający C punktuje surowiej.
# Metody jak w SPSS: kappa z tabeli kwadratowej z asymptotycznym błędem standardowym
# (Fleiss i in., 1969) i T = kappa / błąd przy H0; kappa ważona z wagami liniowymi (domyślne) i kwadratowymi;
# ICC ze średnich kwadratów dwuczynnikowej ANOVA (raport × oceniający) z testem F i przedziałami
# McGrawa i Wonga (1996); kontrola: psych::ICC() i DescTools::CohenKappa().
suppressPackageStartupMessages({ library(haven); library(psych); library(DescTools) })
set.seed(3110)
n <- 80
# 1. główny problem raportu: 1 = metoda, 2 = analiza danych, 3 = wnioski
prawda <- sample(1:3, n, replace = TRUE, prob = c(.40, .35, .25))
ocen_kat <- function(traf) ifelse(runif(n) < traf, prawda, sapply(prawda, function(k) sample(setdiff(1:3, k), 1)))
kat_A <- ocen_kat(.85); kat_B <- ocen_kat(.80)
# 2. ogólna ocena z rubryki: 1 = niewystarczający, 2 = dostateczny, 3 = dobry, 4 = bardzo dobry
jakosc <- rnorm(n)
progi <- c(-Inf, -0.9, 0.1, 1.0, Inf)
poz_A <- as.integer(cut(jakosc + rnorm(n, 0, .45), progi))
poz_B <- as.integer(cut(jakosc + rnorm(n, 0, .45), progi))
# 3. punkty 0–40 od trojga oceniających; C przyznaje średnio ok. 3 punkty mniej
wynik <- 26 + 5 * jakosc
ogr <- function(x) pmin(40, pmax(0, round(x)))
pkt_A <- ogr(wynik + rnorm(n, 0, 2)); pkt_B <- ogr(wynik + 0.5 + rnorm(n, 0, 2)); pkt_C <- ogr(wynik - 3 + rnorm(n, 0, 2))
dane <- data.frame(id = 1:n, kat_A, kat_B, poz_A, poz_B, pkt_A, pkt_B, pkt_C)

# Krok 1. Plik .sav z etykietami zmiennych i wartości – i ten sam zbiór w CSV
sav <- dane
et_kat <- c("metoda" = 1, "analiza danych" = 2, "wnioski" = 3)
et_poz <- c("niewystarczający" = 1, "dostateczny" = 2, "dobry" = 3, "bardzo dobry" = 4)
for (v in c("kat_A", "kat_B")) sav[[v]] <- labelled(sav[[v]], labels = et_kat)
for (v in c("poz_A", "poz_B")) sav[[v]] <- labelled(sav[[v]], labels = et_poz)
etykiety <- c(id = "Numer raportu", kat_A = "Główny problem – oceniający A", kat_B = "Główny problem – oceniający B",
              poz_A = "Ocena z rubryki 1–4 – oceniający A", poz_B = "Ocena z rubryki 1–4 – oceniający B",
              pkt_A = "Punkty 0–40 – oceniający A", pkt_B = "Punkty 0–40 – oceniający B", pkt_C = "Punkty 0–40 – oceniający C")
for (v in names(etykiety)) attr(sav[[v]], "label") <- etykiety[[v]]
for (v in names(sav)) attr(sav[[v]], "format.spss") <- "F2.0"
write_sav(sav, "../kappa-icc-spss-dane.sav")
write.csv(dane, "../kappa-icc-spss-dane.csv", row.names = FALSE, fileEncoding = "UTF-8")
sapply(read_sav("../kappa-icc-spss-dane.sav"), function(x) names(attributes(x)))   # tylko etykiety i format

# Funkcja: kappa (ważona albo nie) z błędami standardowymi Fleissa, Cohena i Everitta (1969)
kappa_spss <- function(a, b, k, wagi = c("brak", "liniowe", "kwadratowe")) {
  wagi <- match.arg(wagi)
  tab <- table(factor(a, 1:k), factor(b, 1:k)); N <- sum(tab); p <- tab / N
  w <- switch(wagi, brak = diag(k),
              liniowe = 1 - abs(outer(1:k, 1:k, "-")) / (k - 1),
              kwadratowe = 1 - (outer(1:k, 1:k, "-"))^2 / (k - 1)^2)
  pr <- rowSums(p); pc <- colSums(p)
  po <- sum(w * p); pe <- sum(w * outer(pr, pc)); kap <- (po - pe) / (1 - pe)
  wr <- as.vector(w %*% pc); wc <- as.vector(t(w) %*% pr)      # średnie wagi wiersza i kolumny
  sk <- outer(wr, wc, "+")
  var1 <- (sum(p * (w * (1 - pe) - sk * (1 - po))^2) - (po * pe - 2 * pe + po)^2) / (N * (1 - pe)^4)
  var0 <- (sum(outer(pr, pc) * (w - sk)^2) - pe^2) / (N * (1 - pe)^2)
  se <- sqrt(var1); se0 <- sqrt(var0); z <- kap / se0
  c(N = N, po = po, pe = pe, kappa = kap, ase = se, T_z = z, p = 2 * pnorm(-abs(z)),
    ci_dol = kap - qnorm(.975) * se, ci_gor = kap + qnorm(.975) * se)
}

# Krok 2. Crosstabs: kat_A × kat_B – tabela krzyżowa i Symmetric Measures (Kappa)
table(kat_A = dane$kat_A, kat_B = dane$kat_B)
k1 <- kappa_spss(dane$kat_A, dane$kat_B, 3)
round(k1, 3)
format.pval(k1[["p"]], digits = 3)
print(CohenKappa(dane$kat_A, dane$kat_B, conf.level = .95), digits = 4)   # kontrola: ten sam błąd standardowy

# Krok 3. Weighted Kappa: poz_A i poz_B, wagi liniowe (domyślne w SPSS) i kwadratowe
table(poz_A = dane$poz_A, poz_B = dane$poz_B)
kw <- rbind(nieważona = kappa_spss(dane$poz_A, dane$poz_B, 4),
            liniowe = kappa_spss(dane$poz_A, dane$poz_B, 4, "liniowe"),
            kwadratowe = kappa_spss(dane$poz_A, dane$poz_B, 4, "kwadratowe"))
round(kw, 3)
format.pval(kw[, "p"], digits = 3)
tab_poz <- table(factor(dane$poz_A, 1:4), factor(dane$poz_B, 1:4))
print(CohenKappa(tab_poz, weights = "Equal-Spacing", conf.level = .95), digits = 4)   # kontrola: wagi liniowe
print(CohenKappa(tab_poz, weights = "Fleiss-Cohen", conf.level = .95), digits = 4)    # kontrola: wagi kwadratowe

# Krok 4. ICC: średnie kwadraty z ANOVA raport × oceniający (pkt_A, pkt_B, pkt_C)
X <- as.matrix(dane[, c("pkt_A", "pkt_B", "pkt_C")]); k <- ncol(X)
round(colMeans(X), 2)
sr <- mean(X)
SSR <- k * sum((rowMeans(X) - sr)^2); SSC <- n * sum((colMeans(X) - sr)^2)
SST <- sum((X - sr)^2); SSE <- SST - SSR - SSC; SSW <- SST - SSR
MSR <- SSR / (n - 1); MSC <- SSC / (k - 1); MSE <- SSE / ((n - 1) * (k - 1)); MSW <- SSW / (n * (k - 1))
round(c(MSR = MSR, MSC = MSC, MSE = MSE, MSW = MSW), 3)

# Wzory McGrawa i Wonga (1996) – miara pojedyncza i średnia, przedziały 95%, test F przy wartości testowej 0
icc_spss <- function(model = c("ONEWAY", "RANDOM", "MIXED"), typ = c("CONSISTENCY", "ABSOLUTE"), alfa = .05) {
  model <- match.arg(model); typ <- match.arg(typ)
  if (model == "ONEWAY") {
    F0 <- MSR / MSW; df1 <- n - 1; df2 <- n * (k - 1)
    FL <- F0 / qf(1 - alfa / 2, df1, df2); FU <- F0 * qf(1 - alfa / 2, df2, df1)
    poj <- c((MSR - MSW) / (MSR + (k - 1) * MSW), (FL - 1) / (FL + k - 1), (FU - 1) / (FU + k - 1))
    sre <- c((MSR - MSW) / MSR, 1 - 1 / FL, 1 - 1 / FU)
  } else if (typ == "CONSISTENCY") {
    F0 <- MSR / MSE; df1 <- n - 1; df2 <- (n - 1) * (k - 1)
    FL <- F0 / qf(1 - alfa / 2, df1, df2); FU <- F0 * qf(1 - alfa / 2, df2, df1)
    poj <- c((MSR - MSE) / (MSR + (k - 1) * MSE), (FL - 1) / (FL + k - 1), (FU - 1) / (FU + k - 1))
    sre <- c((MSR - MSE) / MSR, 1 - 1 / FL, 1 - 1 / FU)
  } else {
    F0 <- MSR / MSE; df1 <- n - 1; df2 <- (n - 1) * (k - 1)
    r1 <- (MSR - MSE) / (MSR + (k - 1) * MSE + k * (MSC - MSE) / n)
    a <- k * r1 / (n * (1 - r1)); b <- 1 + k * r1 * (n - 1) / (n * (1 - r1))
    v <- (a * MSC + b * MSE)^2 / ((a * MSC)^2 / (k - 1) + (b * MSE)^2 / ((n - 1) * (k - 1)))
    Fs <- qf(1 - alfa / 2, n - 1, v); Fs2 <- qf(1 - alfa / 2, v, n - 1)
    lo <- n * (MSR - Fs * MSE) / (Fs * (k * MSC + (k * n - k - n) * MSE) + n * MSR)
    up <- n * (Fs2 * MSR - MSE) / (k * MSC + (k * n - k - n) * MSE + n * Fs2 * MSR)
    poj <- c(r1, lo, up)
    sre <- c((MSR - MSE) / (MSR + (MSC - MSE) / n), k * lo / (1 + (k - 1) * lo), k * up / (1 + (k - 1) * up))
  }
  out <- rbind(single = c(poj, F0, df1, df2), average = c(sre, F0, df1, df2))
  colnames(out) <- c("ICC", "lower", "upper", "F", "df1", "df2")
  cbind(round(out, 3), p = signif(pf(F0, df1, df2, lower.tail = FALSE), 3))
}
cat("\nTwo-Way Random, Absolute Agreement\n"); print(icc_spss("RANDOM", "ABSOLUTE"))
cat("\nTwo-Way Mixed, Consistency\n");        print(icc_spss("MIXED", "CONSISTENCY"))
cat("\nOne-Way Random\n");                    print(icc_spss("ONEWAY"))
# kontrola: psych::ICC (ICC1 = One-Way, ICC2 = absolutna zgodność, ICC3 = spójność; k = miara średnia)
print(psych::ICC(X, lmer = FALSE)$results[, c("type", "ICC", "F", "df1", "df2", "p", "lower bound", "upper bound")], digits = 3)

# Krok 5. Te same oceny bez oceniającego C: przesunięcie C obniżało zgodność bezwzględną
X <- X[, 1:2]; k <- 2; sr <- mean(X)
SSR <- k * sum((rowMeans(X) - sr)^2); SSC <- n * sum((colMeans(X) - sr)^2)
SSE <- sum((X - sr)^2) - SSR - SSC
MSR <- SSR / (n - 1); MSC <- SSC / (k - 1); MSE <- SSE / ((n - 1) * (k - 1))
cat("\nA i B: Two-Way Random, Absolute Agreement\n"); print(icc_spss("RANDOM", "ABSOLUTE"))
Wynik w R
$id
[1] "label"       "format.spss"

$kat_A
[1] "label"       "format.spss" "class"       "labels"     

$kat_B
[1] "label"       "format.spss" "class"       "labels"     

$poz_A
[1] "label"       "format.spss" "class"       "labels"     

$poz_B
[1] "label"       "format.spss" "class"       "labels"     

$pkt_A
[1] "label"       "format.spss"

$pkt_B
[1] "label"       "format.spss"

$pkt_C
[1] "label"       "format.spss"

     kat_B
kat_A  1  2  3
    1 18  4  5
    2  4 21  4
    3  7  4 13
     N     po     pe  kappa    ase    T_z      p ci_dol ci_gor 
80.000  0.650  0.336  0.473  0.080  5.970  0.000  0.316  0.629 
[1] "2.37e-09"
 kappa lwr.ci upr.ci 
0.4727 0.3164 0.6289 
     poz_B
poz_A  1  2  3  4
    1 10  7  1  0
    2  2 16  5  0
    3  2  6  6  1
    4  0  1  8 15
            N    po    pe kappa   ase   T_z p ci_dol ci_gor
nieważona  80 0.588 0.254 0.447 0.072 7.011 0  0.305  0.589
liniowe    80 0.846 0.600 0.615 0.060 7.852 0  0.498  0.731
kwadratowe 80 0.937 0.744 0.756 0.051 6.840 0  0.657  0.855
[1] "2.36e-12" "4.09e-15" "7.94e-12"
 kappa lwr.ci upr.ci 
0.6146 0.4978 0.7313 
 kappa lwr.ci upr.ci 
0.7558 0.6567 0.8548 
pkt_A pkt_B pkt_C 
26.41 26.55 23.21 
    MSR     MSC     MSE     MSW 
 90.184 285.304   3.823   7.342 

Two-Way Random, Absolute Agreement
          ICC lower upper      F df1 df2        p
single  0.797 0.508 0.901 23.589  79 158 2.36e-58
average 0.922 0.756 0.965 23.589  79 158 2.36e-58

Two-Way Mixed, Consistency
          ICC lower upper      F df1 df2        p
single  0.883 0.836 0.919 23.589  79 158 2.36e-58
average 0.958 0.939 0.971 23.589  79 158 2.36e-58

One-Way Random
          ICC lower upper      F df1 df2        p
single  0.790 0.714 0.852 12.284  79 160 7.84e-40
average 0.919 0.882 0.945 12.284  79 160 7.84e-40
                         type   ICC    F df1 df2        p lower bound upper bound
Single_raters_absolute   ICC1 0.790 12.3  79 160 7.84e-40       0.714       0.852
Single_random_raters     ICC2 0.797 23.6  79 158 2.36e-58       0.508       0.901
Single_fixed_raters      ICC3 0.883 23.6  79 158 2.36e-58       0.836       0.919
Average_raters_absolute ICC1k 0.919 12.3  79 160 7.84e-40       0.882       0.945
Average_random_raters   ICC2k 0.922 23.6  79 158 2.36e-58       0.756       0.965
Average_fixed_raters    ICC3k 0.958 23.6  79 158 2.36e-58       0.939       0.971

A i B: Two-Way Random, Absolute Agreement
          ICC lower upper     F df1 df2        p
single  0.882 0.822 0.923 15.77  79  79 1.15e-27
average 0.937 0.902 0.960 15.77  79  79 1.15e-27

Bibliografia oprogramowania

Wyniki na tej stronie pochodzą z uruchomienia pokazanego kodu w R 4.5.3; rysunek przygotowano w pakietach ggplot2 i patchwork. Składni SPSS nie uruchamialiśmy. W pracy podaj wersję programu, którego faktycznie użyłeś.

  1. R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
  2. haven (wersja 2.5.5): Wickham, H., Miller, E., & Smith, D. (2025). haven: Import and export 'SPSS', 'Stata' and 'SAS' files [R package]. https://doi.org/10.32614/CRAN.package.haven
  3. psych (wersja 2.6.5): Revelle, W. (2026). psych: Procedures for psychological, psychometric, and personality research (R package version 2.6.5) [Computer software]. Northwestern University. https://CRAN.R-project.org/package=psych
  4. DescTools (wersja 0.99.60): Signorell, A. (2025). DescTools: Tools for descriptive statistics (R package version 0.99.60) [Computer software]. https://doi.org/10.32614/CRAN.package.DescTools
  5. ggplot2 (wersja 4.0.2): Wickham, H. (2016). ggplot2: Elegant graphics for data analysis. Springer. https://ggplot2.tidyverse.org
  6. patchwork (wersja 1.3.2): Pedersen, T. L. (2025). patchwork: The composer of plots [R package]. https://doi.org/10.32614/CRAN.package.patchwork

Typowe błędy

  • Chi-kwadrat zamiast kappy. Silny związek w tabeli krzyżowej nie oznacza zgodności – oceniający może konsekwentnie mylić dwie kategorie.
  • Zwykła kappa dla skali porządkowej albo kappa ważona bez podania wag. W wersji 27 i nowszej użyj Weighted Kappa i napisz, czy wagi były liniowe, czy kwadratowe.
  • ICC z ustawień domyślnych (model mieszany, spójność) przy pytaniu o tę samą liczbę punktów – i „ICC = .96” bez nazwy formy. Podaj model, typ i to, czy to miara pojedyncza, czy średnia.
  • Same oceny bez przedziału ufności. Przy 80 obiektach przedział ICC(A,1) sięgał od .51 do .90 – to inny wniosek niż sama wartość .80.
  • „Sig. = .000” jako dowód dobrej zgodności. Test sprawdza tylko różnicę od zera (zob. wartość p).

Z serii SPSS zob. też chi-kwadrat w SPSS (to samo okno Crosstabs), testy nieparametryczne w SPSS i korelację i regresję w SPSS.

Najczęstsze pytania

Gdzie w SPSS jest kappa Cohena?

W oknie Analyze → Descriptive Statistics → Crosstabs: oceny pierwszego oceniającego w Row(s), drugiego w Column(s), a w Statistics zaznacz Kappa. Wynik jest w tabeli Symmetric Measures. Kody kategorii i typ zmiennych muszą być u obu oceniających takie same, bo kappa wymaga tabeli kwadratowej z tą samą skalą w wierszach i kolumnach.

Czy SPSS liczy kappę ważoną?

Tak, od wersji 27 w osobnym oknie Analyze → Scale → Weighted Kappa (polecenie WEIGHTED KAPPA), z wagami liniowymi (domyślnie) albo kwadratowymi i asymptotycznym przedziałem ufności. Kappa w Crosstabs jest zawsze nieważona. W starszej wersji policz kappę ważoną w kalkulatorze albo w R.

Jaki model i typ ICC wybrać w SPSS przy ocenach kilku sędziów?

Two-Way Random, gdy oceniający są próbą z szerszej grupy, Two-Way Mixed, gdy interesują Cię tylko ci konkretni, i One-Way Random, gdy każdy obiekt oceniali inni ludzie. Typ Absolute Agreement wybierz, gdy liczy się ta sama liczba punktów, a Consistency – gdy wystarczy ten sam porządek. Domyślne ustawienia składni to model mieszany i spójność.

Single Measures czy Average Measures – który wiersz ICC przepisać?

Single Measures opisuje rzetelność oceny jednego oceniającego, a Average Measures – średniej z wszystkich oceniających. Raportuj ten wiersz, który odpowiada temu, jak wynik będzie używany: jeśli w badaniu właściwym każdy obiekt oceni jedna osoba, podaj miarę pojedynczą. W przykładzie było to .80 wobec .92 dla średniej z trojga.

Jak nazwać ICC z SPSS w pracy?

Podaj model, typ i rodzaj miary, np. dwuczynnikowy model losowy, zgodność bezwzględna, pojedynczy oceniający – ICC(A,1) według McGrawa i Wonga, czyli ICC(2,1) według Shrouta i Fleissa. Model mieszany ze spójnością to ICC(C,1) albo ICC(3,1). Dopisz 95% przedział ufności, a test F względem zera traktuj jako informację dodatkową.

Powiązane hasła

Przeczytaj też

Masz oceny kilku sędziów w SPSS i nie wiesz, którą miarę zgodności podać?

Sprawdzimy układ danych, wybór kappy albo formy ICC, ustawienia w SPSS i opis wyników oraz wyjaśnimy je tak, żebyś umiał(a) samodzielnie je opisać i obronić.

Oferta dla studentówWyceń analizę

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Cohen, J. (1960). A coefficient of agreement for nominal scales. Educational and Psychological Measurement, 20(1), 37–46. https://doi.org/10.1177/001316446002000104
  2. Cohen, J. (1968). Weighted kappa: Nominal scale agreement provision for scaled disagreement or partial credit. Psychological Bulletin, 70(4), 213–220. https://doi.org/10.1037/h0026256
  3. Fleiss, J. L., Cohen, J., & Everitt, B. S. (1969). Large sample standard errors of kappa and weighted kappa. Psychological Bulletin, 72(5), 323–327. https://doi.org/10.1037/h0028106
  4. IBM Corp. (b.d.-a). Crosstabs statistics. IBM SPSS Statistics 32.0.0 documentation. https://www.ibm.com/docs/en/spss-statistics/32.0.0?topic=crosstabs-statistics ● Otwarty dostęp
  5. IBM Corp. (b.d.-b). ICC subcommand (RELIABILITY command). IBM SPSS Statistics 32.0.0 Command Syntax Reference. https://www.ibm.com/docs/en/SSLVMB_32.0.0/statistics_reference_project_ddita/spss/base/syn_reliability_icc.html ● Otwarty dostęp
  6. IBM Corp. (b.d.-c). Reliability Analysis statistics. IBM SPSS Statistics 32.0.0 documentation. https://www.ibm.com/docs/en/spss-statistics/32.0.0?topic=analysis-reliability-statistics ● Otwarty dostęp
  7. IBM Corp. (b.d.-d). STATISTICS subcommand (CROSSTABS command). IBM SPSS Statistics 32.0.0 Command Syntax Reference. https://www.ibm.com/docs/en/SSLVMB_32.0.0/statistics_reference_project_ddita/spss/base/syn_crosstabs_statistics.html ● Otwarty dostęp
  8. IBM Corp. (b.d.-e). Weighted Kappa. IBM SPSS Statistics 32.0.0 documentation. https://www.ibm.com/docs/en/spss-statistics/32.0.0?topic=features-weighted-kappa ● Otwarty dostęp
  9. IBM Corp. (b.d.-f). WEIGHTED KAPPA. IBM SPSS Statistics 32.0.0 Command Syntax Reference. https://www.ibm.com/docs/en/spss-statistics/32.0.0?topic=reference-weighted-kappa ● Otwarty dostęp
  10. Koo, T. K., & Li, M. Y. (2016). A guideline of selecting and reporting intraclass correlation coefficients for reliability research. Journal of Chiropractic Medicine, 15(2), 155–163. https://doi.org/10.1016/j.jcm.2016.02.012 ● Otwarty dostęp
  11. McGraw, K. O., & Wong, S. P. (1996). Forming inferences about some intraclass correlation coefficients. Psychological Methods, 1(1), 30–46. https://doi.org/10.1037/1082-989X.1.1.30
  12. Shrout, P. E., & Fleiss, J. L. (1979). Intraclass correlations: Uses in assessing rater reliability. Psychological Bulletin, 86(2), 420–428. https://doi.org/10.1037/0033-2909.86.2.420

Cytowania BibTeX

@article{cohen1960coefficient, author={Cohen, Jacob}, title={{A coefficient of agreement for nominal scales}}, journal={Educational and Psychological Measurement}, year={1960}, volume={20}, number={1}, pages={37--46}, doi={10.1177/001316446002000104}}
@article{cohen1968weighted, author={Cohen, Jacob}, title={{Weighted kappa: Nominal scale agreement provision for scaled disagreement or partial credit}}, journal={Psychological Bulletin}, year={1968}, volume={70}, number={4}, pages={213--220}, doi={10.1037/h0026256}}
@article{fleiss1969large, author={Fleiss, Joseph L. and Cohen, Jacob and Everitt, B. S.}, title={{Large sample standard errors of kappa and weighted kappa}}, journal={Psychological Bulletin}, year={1969}, volume={72}, number={5}, pages={323--327}, doi={10.1037/h0028106}}
@misc{ibmndcrosstabsstat32kappa, author={{IBM Corp.}}, title={{Crosstabs statistics}}, howpublished={IBM SPSS Statistics 32.0.0 documentation}, year={b.d.-a}, publisher={IBM}, url={https://www.ibm.com/docs/en/spss-statistics/32.0.0?topic=crosstabs-statistics}}
@misc{ibmndreliabilityicc32, author={{IBM Corp.}}, title={{ICC subcommand (RELIABILITY command)}}, howpublished={IBM SPSS Statistics 32.0.0 Command Syntax Reference}, year={b.d.-b}, publisher={IBM}, url={https://www.ibm.com/docs/en/SSLVMB_32.0.0/statistics_reference_project_ddita/spss/base/syn_reliability_icc.html}}
@misc{ibmndreliabilitystat32, author={{IBM Corp.}}, title={{Reliability Analysis statistics}}, howpublished={IBM SPSS Statistics 32.0.0 documentation}, year={b.d.-c}, publisher={IBM}, url={https://www.ibm.com/docs/en/spss-statistics/32.0.0?topic=analysis-reliability-statistics}}
@misc{ibmndcrosstabsstatsyntax32, author={{IBM Corp.}}, title={{STATISTICS subcommand (CROSSTABS command)}}, howpublished={IBM SPSS Statistics 32.0.0 Command Syntax Reference}, year={b.d.-d}, publisher={IBM}, url={https://www.ibm.com/docs/en/SSLVMB_32.0.0/statistics_reference_project_ddita/spss/base/syn_crosstabs_statistics.html}}
@misc{ibmndweightedkappa32, author={{IBM Corp.}}, title={{Weighted Kappa}}, howpublished={IBM SPSS Statistics 32.0.0 documentation}, year={b.d.-e}, publisher={IBM}, url={https://www.ibm.com/docs/en/spss-statistics/32.0.0?topic=features-weighted-kappa}}
@misc{ibmndweightedkappasyntax32, author={{IBM Corp.}}, title={{WEIGHTED KAPPA}}, howpublished={IBM SPSS Statistics 32.0.0 Command Syntax Reference}, year={b.d.-f}, publisher={IBM}, url={https://www.ibm.com/docs/en/spss-statistics/32.0.0?topic=reference-weighted-kappa}}
@article{koo2016guideline, author={Koo, Terry K. and Li, Mae Y.}, title={{A guideline of selecting and reporting intraclass correlation coefficients for reliability research}}, journal={Journal of Chiropractic Medicine}, year={2016}, volume={15}, number={2}, pages={155--163}, doi={10.1016/j.jcm.2016.02.012}}
@article{mcgraw1996forming, author={McGraw, Kenneth O. and Wong, S. P.}, title={{Forming inferences about some intraclass correlation coefficients}}, journal={Psychological Methods}, year={1996}, volume={1}, number={1}, pages={30--46}, doi={10.1037/1082-989x.1.1.30}}
@article{shrout1979intraclass, author={Shrout, Patrick E. and Fleiss, Joseph L.}, title={{Intraclass correlations: Uses in assessing rater reliability}}, journal={Psychological Bulletin}, year={1979}, volume={86}, number={2}, pages={420--428}, doi={10.1037/0033-2909.86.2.420}}
R