共識是指兩個以上的人對某件事情有一致看法。樣本觀察值和另一樣本觀察值相關,統計上稱為相依樣本。如果兩個相依樣本又有配對關係,那麼這種成對的類別資料稱為配對資料(matched pairs data)。由於兩樣本相依,獨立樣本的統計方法不合時宜,必須改以配對模型進行統計檢定。
McNemar、Cohen's kappa及Fleiss' kappa是最簡單、常見的配對模型。McNemar可視為針對配對資料的卡方檢定,Cohen's kappa用來檢定兩人意見的一致性,Fleiss' kappa則用來檢定三人以上意見的一致性。
McNemar Test
McNemar Test是美國心理學家Quinn McNemar在1947年發展出來的統計方法,用於分析具有配對性質的\(2 \times 2\)交叉表,檢定行與列的邊際機率是否相等。其統計量為:
\[X^2=\frac{(b-c)^2}{b+c}\]
Q2 同意 | Q2 不同意 | 小計 | |
Q1 同意 | a | b | a+b |
Q1 不同意 | c | d | c+d |
小計 | a+c | b+d | N |
由密西根大學社會系教授Ronald Inglehart發起的世界價值觀調查(World Values Survey, WVS)是全球最具規模與歷史的調查。這項調查於1981年開始於西歐,如今已經擴展到世界各國。從1990-1991年第一波全球調查為止,迄今已經進展到第七波(2017-2020)調查。
這項調查台灣於1995年開始參加,當年由中研院社會學研究所的瞿海源主持。在最新的第七波(2017-2020)調查,共有51國參與也包含台灣。台灣調查的相關資料可以在這裡下載。台灣版問卷【B3 請問休閒時間在您生活中的重要性,是很重要、還算重要、不太重要,還是一點也不重要?】與【B5 請問工作在您生活中的重要性,是很重要、還算重要、不太重要,還是一點也不重要?】。我們以McNemar檢定,檢驗台灣民眾對休閒與工作的態度是否有差異?
> work_leisure<-read.csv("c:/Users/USER/Downloads/important_in_life.csv", header=TRUE, sep=",")
> str(work_leisure)
'data.frame': 1223 obs. of 2 variables:
$ leisure: int 3 1 1 2 1 1 1 1 1 1 ...
$ work : int 2 1 1 1 1 1 2 1 2 1 ...
問卷中的選項分為很重要、還算重要、不太重要、一點也不重要四種尺度。為了分析方便,我們把很重要與還算重要合併為「重要」;不太重要、一點也不重要合併為「不重要」後進行McNemar檢定。
> attach(work_leisure)
> leisure[leisure<=2]<-1
> leisure[leisure>=3]<-2
> work[work<=2]<-1
> work[work>=3]<-2
> leisure<-factor(leisure, levels=c(1,2), labels=c("Important", "Not at all important"))
> work<-factor(work, levels=c(1,2), labels=c("Important", "Not at all important"))
> table(leisure, work)
work
leisure Important Not at all important
Important 995 89
Not at all important 121 18
> mcnemar.test(leisure, work, correct=F)
McNemar's Chi-squared test
data: leisure and work
McNemar's chi-squared = 4.8762, df = 1, p-value = 0.02723
McNemar檢定的p值小於.05達到統計顯著,顯示台灣民眾對於休閒與工作的態度有差異。
Cohen's \(\kappa\)
Cohen's \(\kappa\)由美國統計與心理學家Jacob Cohen提出,用來評估兩人意見的一致性。\(\kappa\)介於0到1之間,數值越大代表兩人的共識越高。例如面對相同的疾病,理想上兩位醫師的診斷應該具有相同共識,診斷的差異來自於醫學訓練、臨床經驗與醫療設備。\(\kappa\)常用在醫學與心理學,用來評估醫師對疾病診斷是否有差異。
Joseph Fleiss 1971年的論文Measuring nominal scale agreement among many raters,描述六位不同醫師針對30名精神病患的診斷結果。我們將資料稍加整理為diagnosis.csv用來說明Cohen's \(\kappa\)的應用。
讀取diagnosis後,我們可以發現儘管同樣都是精神科醫師,但對於病患的診斷還是有些微的差異:
> diagnosis<-read.csv("c:/Users/USER/Downloads/diagnosis.csv", header=T, sep=",")
> diagnosis$psychiatrist.A<-factor(diagnosis$psychiatrist.A, levels=c(1,2,3,4,5), labels=c("Depression", "Personality disorder", "Schizophrenia", "Neurosis", "Other"))
> diagnosis$psychiatrist.B<-factor(diagnosis$psychiatrist.B, levels=c(1,2,3,4,5), labels=c("Depression", "Personality disorder", "Schizophrenia", "Neurosis", "Other"))
> diagnosis$psychiatrist.C<-factor(diagnosis$psychiatrist.C, levels=c(1,2,3,4,5), labels=c("Depression", "Personality disorder", "Schizophrenia", "Neurosis", "Other"))
> diagnosis$psychiatrist.D<-factor(diagnosis$psychiatrist.D, levels=c(1,2,3,4,5), labels=c("Depression", "Personality disorder", "Schizophrenia", "Neurosis", "Other"))
> diagnosis$psychiatrist.E<-factor(diagnosis$psychiatrist.E, levels=c(1,2,3,4,5), labels=c("Depression", "Personality disorder", "Schizophrenia", "Neurosis", "Other"))
> diagnosis$psychiatrist.F<-factor(diagnosis$psychiatrist.F, levels=c(1,2,3,4,5), labels=c("Depression", "Personality disorder", "Schizophrenia", "Neurosis", "Other"))
> head(diagnosis)
patient psychiatrist.A psychiatrist.B psychiatrist.C psychiatrist.D psychiatrist.E psychiatrist.F
1 no. 1 Neurosis Neurosis Neurosis Neurosis Neurosis Neurosis
2 no. 2 Personality disorder Personality disorder Other Other Personality disorder Other
3 no. 3 Schizophrenia Personality disorder Other Schizophrenia Schizophrenia Schizophrenia
4 no. 4 Other Other Other Other Other Other
5 no. 5 Neurosis Neurosis Personality disorder Personality disorder Neurosis Personality disorder
6 no. 6 Depression Schizophrenia Schizophrenia Schizophrenia Schizophrenia Depression
我們挑選A醫師與B醫師,用irr套件中的kappa2()來評估兩位醫師的診斷是否有共識:
> diagnosis_cohenK<-diagnosis[,2:3]
> install.packages("irr")
> library(irr)
> kappa2(diagnosis_cohenK)
Cohen's Kappa for 2 Raters (Weights: unweighted)
Subjects = 30
Raters = 2
Kappa = 0.452
z = 4.95
p-value = 7.35e-07
Cohen's \(\kappa\)為0.452,兩位醫師的診斷雖沒有完全達到高度共識,但仍有中度水準。
Fleiss \(\kappa\)
相較於Cohen's \(\kappa\)只適用於兩人,Fleiss \(\kappa\)就沒有人數限制,可用來評估多人意見的一致性。所以我們以上述相同的例子,評估六位精神科醫師的診斷是否有共識:
> diagnosis_fleiss<-diagnosis[,2:7]
> kappam.fleiss(diagnosis_fleiss)
Fleiss' Kappa for m Raters
Subjects = 30
Raters = 6
Kappa = 0.437
z = 18.1
p-value = 0
分析結果顯示,Fleiss \(\kappa\)為0.437,六位醫師的診斷仍有中度水準。