Logo

KAPPA_COHEN_TV

Updated 2023-11-06 14:27:52.600000

Syntax

SELECT * FROM [westclintech].[wct].[KAPPA_COHEN_TV](
  <@InputData_RangeQuery, nvarchar(max),>
 ,<@Weight, nvarchar(max),>)

Description

Use the table-valued function KAPPA_COHEN_TV to calculate Cohen’s kappa (κ) or weighted kappa as an index of inter-rater agreement between 2 raters. For weighted kappa, ratings must be ordinal. KAPPA_COHEN_TV supports quadratic and linear weighting.

The equation for κ is:

\kappa = \frac{P_a - P_c}{1 - P_c}

Where:Pa is the relative observed agreement among ratersPc is the hypothetical probability of chance agreement

Arguments

@InputData_RangeQuery

a T-SQL statement, as a string, that specifies the rating 1- and rating 2- values.

@Weight

identifies the weighting algorithm to be used. Permitted values are un-weighted, linear and quadratic.

Return Type

table

{"columns": [{"field": "colName", "headerName": "Name", "header": "name"}, {"field": "colDatatype", "headerName": "Type", "header": "type"}, {"field": "colDesc", "headerName": "Description", "header": "description", "minWidth": 1000}], "rows": [{"id": "9b18b089-4e53-4b04-8d8b-72b03fcf1a17", "colName": "Pa", "colDatatype": "float", "colDesc": "the relative observed agreement among raters"}, {"id": "5eca54a5-3e03-4026-8be3-0a8e99d607ec", "colName": "Pc", "colDatatype": "float", "colDesc": "the hypothetical probability of chance agreement"}, {"id": "4f461ecf-a3a5-4fa7-af91-2194113ce82c", "colName": "K", "colDatatype": "float", "colDesc": "the test statistic"}, {"id": "7627738e-bfd0-4340-8a0a-168616441bd2", "colName": "P", "colDatatype": "float", "colDesc": "the p-value"}, {"id": "b27a0872-67e6-4d58-a7cd-ca0e399905ef", "colName": "Z", "colDatatype": "float", "colDesc": "K/SE"}, {"id": "735c5af2-6c76-4b83-becf-0fe3740d8bde", "colName": "SE", "colDatatype": "float", "colDesc": "the standard error"}, {"id": "35cd456c-fe4d-41fd-b5d9-5748bddfe353", "colName": "NS", "colDatatype": "float", "colDesc": "the number of subjects"}, {"id": "37f0b7a2-72c5-4bca-9cb1-2a7fd51050ff", "colName": "NR", "colDatatype": "float", "colDesc": "the number of ratings"}]}

Remarks

The function is insensitive to order; it does not matter what order the ratings are passed in.

Ratings are passed in as pairs.

For more than 2 raters, consider using KAPPA_FLEISS_TV.

If @Weight is NULL, then @Weight = 'U'.

For quadratic weighting, set @Weight = 'Q'.

For linear weighting, set @Weight = 'L'.

Examples

SELECT *

INTO #k

FROM

(

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 1,

           1

    UNION ALL

    SELECT 2,

           1

    UNION ALL

    SELECT 2,

           1

    UNION ALL

    SELECT 2,

           1

    UNION ALL

    SELECT 2,

           1

    UNION ALL

    SELECT 2,

           1

    UNION ALL

    SELECT 2,

           1

    UNION ALL

    SELECT 2,

           1

    UNION ALL

    SELECT 2,

           1

    UNION ALL

    SELECT 2,

           1

    UNION ALL

    SELECT 2,

           1

    UNION ALL

    SELECT 3,

           1

    UNION ALL

    SELECT 3,

           1

    UNION ALL

    SELECT 1,

           2

    UNION ALL

    SELECT 1,

           2

    UNION ALL

    SELECT 1,

           2

    UNION ALL

    SELECT 1,

           2

    UNION ALL

    SELECT 1,

           2

    UNION ALL

    SELECT 1,

           2

    UNION ALL

    SELECT 1,

           2

    UNION ALL

    SELECT 1,

           2

    UNION ALL

    SELECT 1,

           2

    UNION ALL

    SELECT 1,

           2

    UNION ALL

    SELECT 1,

           2

    UNION ALL

    SELECT 1,

           2

    UNION ALL

    SELECT 1,

           2

    UNION ALL

    SELECT 1,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 2,

           2

    UNION ALL

    SELECT 3,

           2

    UNION ALL

    SELECT 3,

           2

    UNION ALL

    SELECT 3,

           2

    UNION ALL

    SELECT 3,

           2

    UNION ALL

    SELECT 3,

           2

    UNION ALL

    SELECT 3,

           2

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 1,

           3

    UNION ALL

    SELECT 2,

           3

    UNION ALL

    SELECT 2,

           3

    UNION ALL

    SELECT 2,

           3

    UNION ALL

    SELECT 2,

           3

    UNION ALL

    SELECT 2,

           3

    UNION ALL

    SELECT 2,

           3

    UNION ALL

    SELECT 2,

           3

    UNION ALL

    SELECT 2,

           3

    UNION ALL

    SELECT 2,

           3

    UNION ALL

    SELECT 2,

           3

    UNION ALL

    SELECT 3,

           3

    UNION ALL

    SELECT 3,

           3

    UNION ALL

    SELECT 3,

           3

    UNION ALL

    SELECT 3,

           3

    UNION ALL

    SELECT 3,

           3

    UNION ALL

    SELECT 3,

           3

    UNION ALL

    SELECT 3,

           3

    UNION ALL

    SELECT 3,

           3

    UNION ALL

    SELECT 3,

           3

    UNION ALL

    SELECT 3,

           3

    UNION ALL

    SELECT 3,

           3

    UNION ALL

    SELECT 3,

           3

) n(r1, r2);

SELECT p.*

FROM wct.KAPPA_COHEN_TV('SELECT r1,r2 FROM #k', 'U') k

    --This CROSS APPLY UNPIVOTS the tvf columns for formatting

    CROSS APPLY

(

    SELECT 'Pa',

           Pa

    UNION ALL

    SELECT 'Pc',

           Pc

    UNION ALL

    SELECT 'K',

           K

    UNION ALL

    SELECT 'P',

           P

    UNION ALL

    SELECT 'Z',

           Z

    UNION ALL

    SELECT 'SE',

           SE

    UNION ALL

    SELECT 'NS',

           NS

    UNION ALL

    SELECT 'NR',

           NR

) p(stat, val);

This produces the following result.

{"columns":[{"field":"stat"},{"field":"val","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"stat":"Pa","val":"0.7"},{"stat":"Pc","val":"0.41"},{"stat":"K","val":"0.491525423728813"},{"stat":"P","val":"3.19208256584873E-21"},{"stat":"Z","val":"9.45624243552736"},{"stat":"SE","val":"0.0519789363565954"},{"stat":"NS","val":"200"},{"stat":"NR","val":"3"}]}

Here an example using quadratic weighting.

with mycte (subj, rater, rating)

as (SELECT 1,

           'R1',

           'c'

    UNION ALL

    SELECT 1,

           'R2',

           'd'

    UNION ALL

    SELECT 2,

           'R1',

           'c'

    UNION ALL

    SELECT 2,

           'R2',

           'a'

    UNION ALL

    SELECT 3,

           'R1',

           'c'

    UNION ALL

    SELECT 3,

           'R2',

           'a'

    UNION ALL

    SELECT 4,

           'R1',

           'c'

    UNION ALL

    SELECT 4,

           'R2',

           'c'

    UNION ALL

    SELECT 5,

           'R1',

           'c'

    UNION ALL

    SELECT 5,

           'R2',

           'b'

    UNION ALL

    SELECT 6,

           'R1',

           'b'

    UNION ALL

    SELECT 6,

           'R2',

           'b'

    UNION ALL

    SELECT 7,

           'R1',

           'c'

    UNION ALL

    SELECT 7,

           'R2',

           'a'

    UNION ALL

    SELECT 8,

           'R1',

           'd'

    UNION ALL

    SELECT 8,

           'R2',

           'c'

    UNION ALL

    SELECT 9,

           'R1',

           'b'

    UNION ALL

    SELECT 9,

           'R2',

           'a'

    UNION ALL

    SELECT 10,

           'R1',

           'b'

    UNION ALL

    SELECT 10,

           'R2',

           'b'

    UNION ALL

    SELECT 11,

           'R1',

           'a'

    UNION ALL

    SELECT 11,

           'R2',

           'd'

    UNION ALL

    SELECT 12,

           'R1',

           'c'

    UNION ALL

    SELECT 12,

           'R2',

           'd'

    UNION ALL

    SELECT 13,

           'R1',

           'a'

    UNION ALL

    SELECT 13,

           'R2',

           'd'

    UNION ALL

    SELECT 14,

           'R1',

           'b'

    UNION ALL

    SELECT 14,

           'R2',

           'c'

    UNION ALL

    SELECT 15,

           'R1',

           'a'

    UNION ALL

    SELECT 15,

           'R2',

           'a'

    UNION ALL

    SELECT 16,

           'R1',

           'c'

    UNION ALL

    SELECT 16,

           'R2',

           'a'

    UNION ALL

    SELECT 17,

           'R1',

           'a'

    UNION ALL

    SELECT 17,

           'R2',

           'c'

    UNION ALL

    SELECT 18,

           'R1',

           'b'

    UNION ALL

    SELECT 18,

           'R2',

           'd'

    UNION ALL

    SELECT 19,

           'R1',

           'b'

    UNION ALL

    SELECT 19,

           'R2',

           'b'

    UNION ALL

    SELECT 20,

           'R1',

           'c'

    UNION ALL

    SELECT 20,

           'R2',

           'c'

    UNION ALL

    SELECT 21,

           'R1',

           'd'

    UNION ALL

    SELECT 21,

           'R2',

           'd'

    UNION ALL

    SELECT 22,

           'R1',

           'b'

    UNION ALL

    SELECT 22,

           'R2',

           'd'

    UNION ALL

    SELECT 23,

           'R1',

           'a'

    UNION ALL

    SELECT 23,

           'R2',

           'a'

    UNION ALL

    SELECT 24,

           'R1',

           'd'

    UNION ALL

    SELECT 24,

           'R2',

           'b'

    UNION ALL

    SELECT 25,

           'R1',

           'b'

    UNION ALL

    SELECT 25,

           'R2',

           'b')

SELECT m1.rating as r1,

       m2.rating as r2

INTO #c

FROM mycte m1

    JOIN mycte m2

        ON m1.subj = m2.subj

WHERE m1.rater = 'R1'

      AND m2.rater = 'R2';

SELECT p.*

FROM wct.KAPPA_COHEN_TV('SELECT r1,r2 FROM #C', 'Q') k

    --This CROSS APPLY UNPIVOTS the tvf columns for formatting

    CROSS APPLY

(

    SELECT 'Pa',

           Pa

    UNION ALL

    SELECT 'Pc',

           Pc

    UNION ALL

    SELECT 'K',

           K

    UNION ALL

    SELECT 'P',

           P

    UNION ALL

    SELECT 'Z',

           Z

    UNION ALL

    SELECT 'SE',

           SE

    UNION ALL

    SELECT 'NS',

           NS

    UNION ALL

    SELECT 'NR',

           NR

) p(stat, val);

This produces the following result.

{"columns":[{"field":"stat"},{"field":"val","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"stat":"Pa","val":"0.751111111111111"},{"stat":"Pc","val":"0.749333333333333"},{"stat":"K","val":"0.00709219858156069"},{"stat":"P","val":"0.970935305534129"},{"stat":"Z","val":"0.0364352523330701"},{"stat":"SE","val":"0.194652105513855"},{"stat":"NS","val":"25"},{"stat":"NR","val":"4"}]}