質性研究中的編碼者間信度
每種質性編碼設計適合哪種係數,alpha 的 0.800 和 0.667 兩條閾值出自何處,以及應當雙重編碼多大比例的資料。
編碼者間信度(intercoder reliability,ICR)是經機遇校正的指標,衡量兩名或更多編碼者把同一份碼本應用到相同摘錄上時的一致程度。採用內容分析或固定碼本的質性研究,通常在佔資料 10% 到 25% 的雙重編碼樣本上報告 Krippendorff's alpha 或 Cohen's kappa,以 α ≥ 0.800 為慣常標準,以 0.667 作為得出初步結論的下限。反身性主題分析不報告這一系數,因為這種方法認為編碼是一種詮釋行為,不存在可供第二名編碼者去對照的準確答案。
編碼者間信度是各自獨立編碼同一材料的編碼者之間的一致性,用一個扣除了機遇一致的係數來測量。碼本(codebook)也稱編碼框架(coding frame),列出全部程式碼,併為每個程式碼給出定義、納入與排除規則以及示例。百分比一致率是編碼者給出相同程式碼的摘錄所佔的比例,不做機遇校正。Cohen's kappa 比較兩名編碼者,Fleiss' kappa 比較人數固定、且每人都編碼了全部摘錄的一組編碼者。Krippendorff's alpha 適用於任意數量的編碼者和存在缺失編碼的情況,也適用於名義、有序或定距程式碼。主題分析是在整個資料集中提煉主題的一族方法,這一族方法內部對 ICR 看法不一。
標註者間一致性詳解講解各個係數的計算。碼本編制指南講解如何撰寫程式碼。教程 Code Interview Transcripts With Two Coders and Report Alpha 在 Potato 中從摘錄到 alpha 完整走完一個項目,Potato 中的質性研究則把 Potato 的質性研究功能集中列在一處。
質性研究何時報告編碼者間信度
內容分析者把 ICR 視為這種方法的必要條件,O'Connor 和 Joffe(2020)也把 ICR 用於主題分析。只要由幾名編碼者分擔材料,係數就有用武之地,因為係數能表明每名編碼者在獨自編碼之前以相同的方式應用碼本。統計每個程式碼出現在多少份訪談中的研究,出於同樣的理由也需要 ICR。在團隊內部,為每個程式碼計算係數的編碼者可以看出哪些程式碼被各人理解得不一樣,O'Connor 和 Joffe 認為圍繞這些程式碼的討論往往比最終分數更有價值。某些領域的審稿人會要求報告 ICR,COREQ 報告清單也要求寫明編碼者人數。
方法本身何時反對使用係數
反身性主題分析(TA)把研究者的主觀性視為一種資源,把編碼視為一種詮釋行為。Braun 和 Clarke(2023)否認編碼可以是準確的,並稱共識編碼和測量編碼者間一致性是加在反身性研究上的"概念上不融貫"(conceptually incoherent)的做法。Braun 和 Clarke 把反身性 TA 與另外兩類主題分析區分開來。編碼信度 TA 使用彼此獨立的編碼者和一致性係數,框架分析等碼本取向的方法則借用了編碼信度 TA 的部分結構化程式。一些紮根理論研究者同樣拒絕 ICR,因為紮根理論在分析推進過程中遞迴地構建程式碼。反身性 TA 的研究報告用對研究者反身性和理論假設的描述來代替係數。
O'Connor 和 Joffe 回應這種認識論上的反對意見時,把高係數理解為共享同一概念框架的研究者對資料達成共識性詮釋的證據。兩位作者認為更大的風險在於虛假的精確,因為一個高數字可能讓一項薄弱的分析看起來很嚴謹。每項研究選定一種立場,並在方法部分寫明這一立場。
哪種係數適合哪種編碼設計
係數取決於編碼開始前做出的兩項決定。第一項決定是分析單元,要麼是每名編碼者都看到的固定摘錄,要麼是由每名編碼者自行劃定的片段。第二項決定是一段摘錄只取一個程式碼還是可以取多個程式碼。
| 編碼設計 | 係數 |
|---|---|
| 兩名編碼者,每段摘錄一個程式碼 | Cohen's kappa 或名義 alpha |
| 三名或更多編碼者,每人編碼全部摘錄 | Fleiss' kappa 或名義 alpha |
| 編碼者編碼的摘錄部分重疊但不相同,或存在缺失編碼 | Krippendorff's alpha |
| 每段摘錄多個程式碼 | 逐個程式碼計算 alpha 或 kappa,在每段摘錄上按出現或不出現計分 |
| 程式碼位於有序量表上,例如強度 | 有序 alpha 或加權 kappa |
| 每名編碼者自行劃定片段邊界 | 針對單元化資料的 alpha,或先固定片段 |
在訪談編碼中,一段摘錄取多個程式碼很常見。O'Connor 和 Joffe 為每名編碼者在每段摘錄上把每個程式碼記為 1 或 0,再逐個程式碼計算係數。逐個程式碼的數值能顯示哪些定義需要修改,而單一的彙總數字會讓可靠的程式碼掩蓋不可靠的程式碼。Krippendorff(2004)針對內容分析提出了同樣的論點,並把各變數中最小的值作為整體的信度。
片段邊界是訪談編碼中更難處理的問題。各自挑選引文來編碼的編碼者在拆分與合併上做法不同,自動比較還可能把只差一個標點符號的兩段引文當作不同的單元。Krippendorff 2004 年的另一篇論文把 alpha 擴充套件到編碼者在連續文本中自行識別的單元。更簡單的做法是先固定片段。第一名編碼者切分並編碼轉錄稿,第二名編碼者拿到相同的片段,但其中的程式碼已被移除。這樣 ICR 測量的是固定摘錄上的程式碼應用情況,邊界上的一致性則不在測量之內。
慣用閾值及其出處
Krippendorff(2004)建議要求 α ≥ 0.800,在仍可接受初步結論的場合則要求 α ≥ 0.667。同一篇論文指出,除了完全一致之外"there are no magical numbers"(不存在神奇的數字),把可接受的水平與得出無效結論的代價聯絡起來,並要求研究者參考置信區間。對於 kappa,O'Connor 和 Joffe 把 Landis 和 Koch(1977)的分級概括為 0.41 到 0.60 為中等,0.61 到 0.80 為高度,0.81 到 1 為近乎完全。McHugh(2012)認為 Cohen 最初的解釋對健康研究而言過於寬鬆,把 0.60 到 0.79 的 kappa 稱為中等,把 0.80 到 0.90 稱為強。O'Connor 和 Joffe 還引用了 Miles 和 Huberman 對百分比一致率的標準:95% 的程式碼上達到 80% 的一致。O'Connor 和 Joffe 建議在編碼開始前確定閾值,對於為醫療、政策或財務決策提供依據的發現,閾值要定得更高。
雙重編碼樣本的規模
O'Connor 和 Joffe 認為佔資料單元 10% 到 25% 的樣本是常見做法,樣本可以隨機抽取,也可以按事先說明的規則抽取,例如從每個層中各取一個案例。在正式抽樣之前,兩名編碼者先非正式地編碼一份訪談並比較編碼結果,以發現被誤讀的定義。修訂之後,下一輪使用另一個子集,信度輪次中編碼過的摘錄則用最終碼本重新編碼。後來加入的編碼者需要單獨做一次信度檢驗。在每個係數旁邊報告摘錄數和編碼者人數,因為來自小樣本的係數區間很寬。
從分歧到碼本修訂
編碼者各自獨立編碼信度樣本,然後碰面逐一討論每處分歧。團隊改寫不清楚的定義,補充排除規則和示例,併合並編碼者無法區分的程式碼。編碼者隨後在新摘錄上進行第二輪獨立編碼,以檢驗修訂後的碼本。O'Connor 和 Joffe 提醒,由同一批編碼者反覆進行多輪編碼,可能在這些編碼者之間產生"interpretive convergence"(詮釋趨同),卻並沒有讓碼本對新讀者變得更清楚。報告獨立編碼得出的係數,即編碼者討論任何分歧之前的係數。最終的編碼資料隨後來自共識、第三名編碼者的投票或資深研究者的決定,方法部分要寫明所用的規則。
在 Potato 中進行一輪信度檢驗
下面的配置針對一組關於就診可及性的訪談摘錄設定一輪信度檢驗。樣本之外的每段摘錄交給一名編碼者,兩名編碼者共同編碼在每名參與者內部抽取的 20% 樣本。碼本在這一輪中保持固定,任何編碼者都不能在輪次中途新增程式碼。每個程式碼的定義顯示為該程式碼的提示框:
annotation_task_name: Clinic access interviews, reliability round 1
task_dir: .
output_annotation_dir: annotation_output/
data_files:
- data/excerpts.jsonl
item_properties:
id_key: id
text_key: text
user_config:
allow_all_users: true
users: []
# Two coders on a 20% sample drawn within each participant, one coder elsewhere
num_annotators_per_item:
default: 1
overlap_sample:
fraction: 0.2
count: 2
stratify_by: participant_id
seed: 7
assignment_strategy: random
# Coders apply the agreed codes and cannot add new ones during the round
codebook_mode: fixed
annotation_schemes:
- annotation_type: multiselect
name: codes
description: Which codes apply to this excerpt? Hover over a code for its definition.
humanize_labels: false
labels:
- {name: Access barriers, tooltip: "Distance, transport, opening hours, or waiting time keep the participant from care"}
- {name: Cost concerns, tooltip: "Fees, insurance, or lost wages shape whether the participant seeks care"}
- {name: Provider trust, tooltip: "Confidence or distrust in clinic staff, their competence, or their motives"}
- {name: Administrative burden, tooltip: "Forms, referrals, phone queues, or eligibility rules the participant has to work through"}
- {name: No code applies, tooltip: "The excerpt touches none of the codes above"}
adjudication:
enabled: true
adjudicator_users: [lead]
min_annotations: 2data/excerpts.jsonl 的每一行包含 id、text 和 participant_id。"No code applies" 這個程式碼保證每段摘錄都有答案。Potato 的信度匯出會丟棄編碼者沒有選擇任何程式碼的摘錄,如果沒有這個程式碼,"某個主題"與"沒有主題"之間的分歧就永遠不會計入 alpha。雙編碼者教程解釋了隨機分配。在 QDA 模式中建立碼本的團隊,也可以在這一輪中保持 qda_mode 開啟,同時設定 codebook_mode: fixed。在 QDA 模式下,Potato 會跳過那項在啟用重疊時拒絕 search.annotator_claim 的檢查。在樣本編碼期間,請保持 annotator_claim 關閉。
兩名編碼者都完成後,匯出信度表並凍結這一輪:
python -m potato.export --config config.yaml --format reliability --output export/
potato snapshot create config.yaml --tag icr-round-1 --note "Reliability round 1"匯出會寫出 reliability.csv 和 reliability.md,每道題一行。對於 codes 這道題,該行給出基於每段摘錄程式碼集合、使用 MASI 距離的 Krippendorff's alpha,在摘錄上做的 95% 百分位 bootstrap 區間,以程式碼集合完全相同計的百分比一致率,以及摘錄數和編碼者人數。快照在標籤下儲存這一輪的配置、資料、編碼結果和每道題的 alpha,詳見項目快照。隨後,負責人開啟 /adjudicate,裁定每處分歧,並在分歧由定義引起的地方勾選 "Flag for guideline update"。adjudication 匯出把這些標記寫入 adjudication_log.jsonl。被標記的摘錄決定了下一輪之前碼本修訂的議程。
Potato 的兩種一致性報告對質性編碼者所用的方案類型覆蓋如下:
| 方案 | reliability 匯出 | /admin/iaa 儀表板 |
|---|---|---|
radio、select(每段摘錄一個程式碼) | 名義 alpha,百分比一致率 | 百分比一致率,在編碼者兩兩配對上取平均的 Cohen's kappa,Fleiss' kappa,名義 alpha |
multiselect、hierarchical_multiselect(多個程式碼) | 使用 MASI 距離的 alpha,百分比一致率 | 平均 Jaccard,使用 MASI 距離的 alpha |
likert | 有序 alpha | 線性和二次加權 kappa,Spearman's rho,有序 alpha |
span(高亮的段落) | 在各摘錄上彙總的字元級 alpha | 詞元級 kappa,精確與部分跨度 F1,字元級 alpha,Mathet's gamma |
textbox 和備忘錄 | 無 | 無 |
當分配到某段摘錄的每名編碼者都完成後,儀表板才為這段摘錄計分,一致性漂移則在主體編碼階段逐個視窗顯示同樣的係數。Potato 2.13.1 中還有四處不足:
- 沒有逐個程式碼的 alpha。 兩種報告都是每道題給出一個值,雙編碼者教程中有一個指令碼,可以根據 CSV 匯出為每個程式碼計算 alpha。
- 沒有單元化 alpha。
span題的字元級 alpha 把每個字元當作固定單元,跨度與結構化輸出的一致性解釋了兩者的區別。 - 沒有其他指數。 Potato 不計算 Scott's pi、Holsti 指數、Gwet's AC1 或 Brennan 和 Prediger 的 kappa。
- 不做閾值判斷。 匯出只報告數值,不附標籤,儀表板則把 0.6 到 0.8 之間的任何值標為 "substantial"。這一區間的起點低於 Krippendorff 的 0.667。請把每個值與研究事先確定的閾值相比較。
常見問題
編碼者間信度應該用 Krippendorff's alpha 還是 Cohen's kappa?
當編碼者超過兩名、編碼者編碼的摘錄部分重疊但不相同,或者程式碼是有序的,用 Krippendorff's alpha;當兩名編碼者把無序程式碼應用到相同的摘錄上時,兩種係數都可以。在兩名編碼者的完整名義資料上,兩個值通常很接近。當編碼者使用某個程式碼的頻率不同時,兩個值會拉開差距,因為 kappa 根據每名編碼者各自的程式碼頻率計算機遇一致,而 alpha 根據合併後的頻率計算。
編碼者間信度的 Krippendorff's alpha 達到多少才可以接受?
alpha 達到 0.800 或更高是慣常標準,0.667 是 Krippendorff(2004)接受初步結論的最低值。Krippendorff 把臨界值與錯誤結論的代價聯絡起來,在結果關乎人命時設定的標準要高得多。把閾值應用到每個程式碼上,而不是應用到各程式碼的平均值上,並在點估計旁邊報告 bootstrap 區間。
編碼者間一致性的 Cohen's kappa 多高才算足夠?
按照 Landis 和 Koch(1977)的分級,0.81 到 0.90 的 kappa 算作近乎完全,按照 McHugh(2012)更嚴格的量表則算作強。McHugh 只把高於 0.90 的 kappa 稱為近乎完全。Landis 和 Koch 把 0.61 到 0.80 稱為高度,而 McHugh 在健康研究中只把 0.60 到 0.79 稱為中等。在編碼開始前確定標準,併為每個程式碼報告 kappa。
報告 Krippendorff's alpha 時應該同時報告百分比一致率嗎?
應該,把百分比一致率作為 alpha 旁邊的描述性數字,信度結論則以 alpha 為準。百分比一致率不考慮機遇。兩名很少使用某個程式碼的編碼者,即使在該程式碼適用於哪裡這一點上從未一致,在大多數摘錄上仍然是一致的。Krippendorff(2004)不接受把百分比一致率作為信度指標,McHugh(2012)則建議同時計算百分比一致率和 kappa。Potato 的 reliability 匯出為每道題同時寫出這兩列。
延伸閱讀
- Potato 中的質性研究:是否要報告 ICR,以及 Potato 的質性研究功能
- 質性資料分析軟體對比:各個 QDA 程式報告哪些係數
- Code Interview Transcripts With Two Coders and Report Alpha:一個帶逐個程式碼 alpha 的完整編碼項目
- 訪談轉錄稿編碼:從錄音到已編碼摘錄的各個步驟
- LLM 輔助的質性編碼:把模型用作第二名編碼者
- 質性編碼的共享碼本:碼本模式和修訂歷史
- 裁定與分歧處理:解決分歧
- 一致性計算器:根據任何工具匯出的程式碼 CSV 計算 alpha 和 kappa
參考文獻
- Braun, V., & Clarke, V. (2023). Toward good practice in thematic analysis: Avoiding common problems and be(com)ing a knowing researcher. International Journal of Transgender Health, 24(1), 1-6. https://doi.org/10.1080/26895269.2022.2129597
- Krippendorff, K. (2004). Reliability in content analysis: Some common misconceptions and recommendations. Human Communication Research, 30(3), 411-433. https://doi.org/10.1111/j.1468-2958.2004.tb00738.x
- Krippendorff, K. (2004). Measuring the reliability of qualitative text analysis data. Quality & Quantity, 38(6), 787-800. https://doi.org/10.1007/s11135-004-8107-7
- Landis, J. R., & Koch, G. G. (1977). The measurement of observer agreement for categorical data. Biometrics, 33(1). https://doi.org/10.2307/2529310
- McHugh, M. L. (2012). Interrater reliability: The kappa statistic. Biochemia Medica, 22(3), 276-282. https://doi.org/10.11613/BM.2012.031
- O'Connor, C., & Joffe, H. (2020). Intercoder reliability in qualitative research: Debates and practical guidelines. International Journal of Qualitative Methods, 19, 1-13. https://doi.org/10.1177/1609406919899220