Как рассчитать коэффициент внутриклассовой корреляции в Python

Коэффициент внутриклассовой корреляции (ICC или intraclass correlation coefficient) используется, чтобы определить, могут ли предметы или предметы быть надежно оценены разными оценщиками.

Значение ICC может варьироваться от 0 до 1, где 0 означает отсутствие надежность среди оценщиков и 1 указывает на абсолютную надежность.\n

Самый простой способ рассчитать ICC в Python — использовать pingouin.intraclass_corr() из статистический пакет pingouin, использующий следующий синтаксис:

pingouin.intraclass_corr(data, targets, raters, ratings)

где:

  • data: имя датафрейма
  • targets: имя столбца, содержащего targets (оцениваемые вещи)
  • raters: название столбца, содержащего оценщиков
  • ratings: Название столбца, содержащего рейтинги

В этом руководстве представлен пример использования этой функции на практике.

Шаг 1. Установите Pingouin

Во-первых, мы должны установить Pingouin:

pip install pingouin

Шаг 2. Создайте данные

Предположим, четырех разных судей попросили оценить качество шести разных колледжей. вступительные экзамены. Мы можем создать следующий фрейм данных для хранения рейтингов судей:

import pandas as pd

#создайте DataFrame
df = pd.DataFrame({'exam': [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6,
                            1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6],
                   'judge': ['A', 'A', 'A', 'A', 'A', 'A',
                             'B', 'B', 'B', 'B', 'B', 'B',
                             'C', 'C', 'C', 'C', 'C', 'C',
                             'D', 'D', 'D', 'D', 'D', 'D'],
                   'rating': [1, 1, 3, 6, 6, 7, 2, 3, 8, 4, 5, 5,
                              0, 4, 1, 5, 5, 6, 1, 2, 3, 3, 6, 4]})

#view first five rows of DataFrame
df.head()

#	exam	judge	rating
#0	1	A	1
#1	2	A	1
#2	3	A	3
#3	4	A	6
#4	5	A	6

Шаг 3. Рассчитайте коэффициент внутриклассовой корреляции

Далее мы будем использовать следующий код для расчета коэффициента внутриклассовой корреляции:

import pingouin as pg

icc = pg.intraclass_corr(data=df, targets='exam', raters='judge', ratings='rating')

icc.set_index('Type')

        Description	        ICC	  F	    df1	 df2 pval	CI95%
Type							
ICC1	Single raters absolute	0.505252  5.084916  5	 18  0.004430  [0.11, 0.89]
ICC2	Single random raters	0.503054  4.909385  5	 15  0.007352  [0.1, 0.89]
ICC3	Single fixed raters	0.494272  4.909385  5	 15  0.007352  [0.09, 0.88]
ICC1k	Average raters absolute	0.803340  5.084916  5	 18  0.004430  [0.33, 0.97]
ICC2k	Average random raters	0.801947  4.909385  5	 15  0.007352  [0.31, 0.97]
ICC3k	Average fixed raters	0.796309  4.909385  5	 15  0.007352  [0.27, 0.97]

Эта функция возвращает следующие результаты:

  • Description: тип вычисляемого ICC
  • ICC: коэффициент внутриклассовой корреляции (ICC)
  • F: F-значение ICC
  • df1, df2: степени свободы, связанные с F-значением
  • pval: p-значение e связан с F-значением
  • CI95%: 95% доверительный интервал для ICC

Обратите внимание, что здесь рассчитывается шесть различных ICC. Это связано с тем, что существует несколько способов расчета ICC в зависимости от следующих предположений:

  • Model: Односторонние случайные эффекты, Двусторонние случайные эффекты или Двусторонние смешанные эффекты
  • Type of Relationship: Последовательность или абсолютное согласие
  • Unit: Один оценщик или среднее значение оценщиков