 bondscell_results$426b93da-bdfd-4ef7-a076-2e6ca773be00queued¤logsrunning¦outputbody(update! (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampAM7epersist_js_state·has_pluto_hook_features§cell_id$426b93da-bdfd-4ef7-a076-2e6ca773be00depends_on_disabled_cells§runtime ?̵published_object_keysdepends_on_skipped_cells§errored$216cfb08-1159-4e69-ab34-bcfcfd7d3f6cqueued¤logsrunning¦outputbodyKappaCoefficientmimetext/plainrootassigneelast_run_timestampAM7[Ύpersist_js_state·has_pluto_hook_features§cell_id$216cfb08-1159-4e69-ab34-bcfcfd7d3f6cdepends_on_disabled_cells§runtime8vpublished_object_keysdepends_on_skipped_cells§errored$1efc1b34-ebf2-11ec-04f5-315c43e9338equeued¤logsrunning¦outputbody,kappa_score (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampAM7'Κpersist_js_state·has_pluto_hook_features§cell_id$1efc1b34-ebf2-11ec-04f5-315c43e9338edepends_on_disabled_cells§runtime  published_object_keysdepends_on_skipped_cells§errored$063e664a-9b0d-4cf1-9b5f-1ec925a55353queued¤logsrunning¦outputbodymimetext/plainrootassigneelast_run_timestampAM2jpersist_js_state·has_pluto_hook_features§cell_id$063e664a-9b0d-4cf1-9b5f-1ec925a55353depends_on_disabled_cells§runtime 1.published_object_keysdepends_on_skipped_cells§errored$649bde36-c7d6-4f6d-ba98-44cd16419bdequeued¤logsrunning¦outputbody<<div class="markdown"><h3>An online version 🌜</h3>
</div>mimetext/htmlrootassigneelast_run_timestampAM2Hpersist_js_state·has_pluto_hook_features§cell_id$649bde36-c7d6-4f6d-ba98-44cd16419bdedepends_on_disabled_cells§runtime gpublished_object_keysdepends_on_skipped_cells§errored$cd6a99f3-8676-4a8d-9575-3b3c3499dccequeued¤logsrunning¦outputbody0.39999999999999997mimetext/plainrootassigneelast_run_timestampAM7persist_js_state·has_pluto_hook_features§cell_id$cd6a99f3-8676-4a8d-9575-3b3c3499dccedepends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$fe3e9afa-fbc0-45db-ba0f-03f2ff6d857fqueued¤logsrunning¦outputbody0.39999999999999997mimetext/plainrootassigneelast_run_timestampAM7Epersist_js_state·has_pluto_hook_features§cell_id$fe3e9afa-fbc0-45db-ba0f-03f2ff6d857fdepends_on_disabled_cells§runtimeO!published_object_keysdepends_on_skipped_cells§errored$ffe10202-04d0-41a0-8cde-dd9fe46c4e59queued¤logsrunning¦outputbody<div class="markdown"><h1>Cohen&#39;s Kappa score</h1>
<p class="tex">$$\kappa &#61; \frac&#123;p_0 - p_e&#125;&#123;1 - p_e&#125;$$</p>
<p class="tex">$$p_e &#61; \frac 1&#123;N^2&#125;\sum_k n_&#123;k1&#125;n_&#123;k2&#125;$$</p>
</div>mimetext/htmlrootassigneelast_run_timestampAM2ypersist_js_state·has_pluto_hook_features§cell_id$ffe10202-04d0-41a0-8cde-dd9fe46c4e59depends_on_disabled_cells§runtime ϵpublished_object_keysdepends_on_skipped_cells§errored$50727c67-86e8-4ed6-88a5-7880b9a597d4queued¤logsrunning¦outputbody-kappa_score (generic function with 2 methods)mimetext/plainrootassigneelast_run_timestampAM7(persist_js_state·has_pluto_hook_features§cell_id$50727c67-86e8-4ed6-88a5-7880b9a597d4depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$8ef1af36-9d02-4c8e-9663-22517ea95718queued¤logsrunning¦outputbody&value (generic function with 1 method)mimetext/plainrootassigneelast_run_timestampAM7lh4persist_js_state·has_pluto_hook_features§cell_id$8ef1af36-9d02-4c8e-9663-22517ea95718depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$e4f625cd-f846-4fba-843c-3ffc4a4c563aqueued¤logsrunning¦outputbodyelements0.0710383text/plain0.039548text/plaintypeTupleobjectid540d1d58b5667429mime!application/vnd.pluto.tree+objectrootassigneelast_run_timestampAM7persist_js_state·has_pluto_hook_features§cell_id$e4f625cd-f846-4fba-843c-3ffc4a4c563adepends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$c737a28b-2d90-4298-ac8e-91390ef43478queued¤logsrunning¦outputbody-1.0mimetext/plainrootassigneelast_run_timestampAM7Fǰpersist_js_state·has_pluto_hook_features§cell_id$c737a28b-2d90-4298-ac8e-91390ef43478depends_on_disabled_cells§runtimeKpublished_object_keysdepends_on_skipped_cells§errored±cell_dependencies$426b93da-bdfd-4ef7-a076-2e6ca773be00precedence_heuristic	cell_id$426b93da-bdfd-4ef7-a076-2e6ca773be00downstream_cells_mapupdate!$e4f625cd-f846-4fba-843c-3ffc4a4c563a$cd6a99f3-8676-4a8d-9575-3b3c3499dcceupstream_cells_mapKappaCoefficient$216cfb08-1159-4e69-ab34-bcfcfd7d3f6clength:@assertthrowAssertionError+count==$216cfb08-1159-4e69-ab34-bcfcfd7d3f6cprecedence_heuristic	cell_id$216cfb08-1159-4e69-ab34-bcfcfd7d3f6cdownstream_cells_mapKappaCoefficient$e4f625cd-f846-4fba-843c-3ffc4a4c563a$cd6a99f3-8676-4a8d-9575-3b3c3499dcce$426b93da-bdfd-4ef7-a076-2e6ca773be00$8ef1af36-9d02-4c8e-9663-22517ea95718upstream_cells_mapIntzerosMatrixBase.@kwdef$1efc1b34-ebf2-11ec-04f5-315c43e9338eprecedence_heuristic	cell_id$1efc1b34-ebf2-11ec-04f5-315c43e9338edownstream_cells_mapkappa_score$fe3e9afa-fbc0-45db-ba0f-03f2ff6d857f$c737a28b-2d90-4298-ac8e-91390ef43478$e4f625cd-f846-4fba-843c-3ffc4a4c563aupstream_cells_map:@assertlength-throw/^+AssertionErrorcount==*$063e664a-9b0d-4cf1-9b5f-1ec925a55353precedence_heuristic	cell_id$063e664a-9b0d-4cf1-9b5f-1ec925a55353downstream_cells_mapupstream_cells_map$649bde36-c7d6-4f6d-ba98-44cd16419bdeprecedence_heuristic	cell_id$649bde36-c7d6-4f6d-ba98-44cd16419bdedownstream_cells_mapupstream_cells_map@md_strgetindex$cd6a99f3-8676-4a8d-9575-3b3c3499dcceprecedence_heuristic	cell_id$cd6a99f3-8676-4a8d-9575-3b3c3499dccedownstream_cells_mapupstream_cells_mapKappaCoefficient$216cfb08-1159-4e69-ab34-bcfcfd7d3f6cupdate!$426b93da-bdfd-4ef7-a076-2e6ca773be00value$8ef1af36-9d02-4c8e-9663-22517ea95718$fe3e9afa-fbc0-45db-ba0f-03f2ff6d857fprecedence_heuristic	cell_id$fe3e9afa-fbc0-45db-ba0f-03f2ff6d857fdownstream_cells_mapupstream_cells_mapkappa_score$1efc1b34-ebf2-11ec-04f5-315c43e9338e$50727c67-86e8-4ed6-88a5-7880b9a597d4$ffe10202-04d0-41a0-8cde-dd9fe46c4e59precedence_heuristic	cell_id$ffe10202-04d0-41a0-8cde-dd9fe46c4e59downstream_cells_mapupstream_cells_map@md_strgetindex$50727c67-86e8-4ed6-88a5-7880b9a597d4precedence_heuristic	cell_id$50727c67-86e8-4ed6-88a5-7880b9a597d4downstream_cells_mapkappa_score$fe3e9afa-fbc0-45db-ba0f-03f2ff6d857f$c737a28b-2d90-4298-ac8e-91390ef43478$e4f625cd-f846-4fba-843c-3ffc4a4c563aupstream_cells_maplengthuniqueunion$8ef1af36-9d02-4c8e-9663-22517ea95718precedence_heuristic	cell_id$8ef1af36-9d02-4c8e-9663-22517ea95718downstream_cells_mapvalue$e4f625cd-f846-4fba-843c-3ffc4a4c563a$cd6a99f3-8676-4a8d-9575-3b3c3499dcceupstream_cells_mapKappaCoefficient$216cfb08-1159-4e69-ab34-bcfcfd7d3f6csum-/^eachrowprod$e4f625cd-f846-4fba-843c-3ffc4a4c563aprecedence_heuristic	cell_id$e4f625cd-f846-4fba-843c-3ffc4a4c563adownstream_cells_mapupstream_cells_mapKappaCoefficient$216cfb08-1159-4e69-ab34-bcfcfd7d3f6c:kappa_score$1efc1b34-ebf2-11ec-04f5-315c43e9338e$50727c67-86e8-4ed6-88a5-7880b9a597d4@viewdiv÷+update!$426b93da-bdfd-4ef7-a076-2e6ca773be00value$8ef1af36-9d02-4c8e-9663-22517ea95718rand$c737a28b-2d90-4298-ac8e-91390ef43478precedence_heuristic	cell_id$c737a28b-2d90-4298-ac8e-91390ef43478downstream_cells_mapupstream_cells_mapkappa_score$1efc1b34-ebf2-11ec-04f5-315c43e9338e$50727c67-86e8-4ed6-88a5-7880b9a597d4cell_execution_order$ffe10202-04d0-41a0-8cde-dd9fe46c4e59$1efc1b34-ebf2-11ec-04f5-315c43e9338e$50727c67-86e8-4ed6-88a5-7880b9a597d4$063e664a-9b0d-4cf1-9b5f-1ec925a55353$fe3e9afa-fbc0-45db-ba0f-03f2ff6d857f$c737a28b-2d90-4298-ac8e-91390ef43478$649bde36-c7d6-4f6d-ba98-44cd16419bde$216cfb08-1159-4e69-ab34-bcfcfd7d3f6c$426b93da-bdfd-4ef7-a076-2e6ca773be00$8ef1af36-9d02-4c8e-9663-22517ea95718$e4f625cd-f846-4fba-843c-3ffc4a4c563a$cd6a99f3-8676-4a8d-9575-3b3c3499dccelast_hot_reload_time        shortpathcohen_kappa_score.jlprocess_statusreadypath:/home/runner/work/Notebooks/Notebooks/cohen_kappa_score.jlpluto_versionv0.19.47last_save_timeAM2תcell_order$ffe10202-04d0-41a0-8cde-dd9fe46c4e59$1efc1b34-ebf2-11ec-04f5-315c43e9338e$50727c67-86e8-4ed6-88a5-7880b9a597d4$063e664a-9b0d-4cf1-9b5f-1ec925a55353$fe3e9afa-fbc0-45db-ba0f-03f2ff6d857f$c737a28b-2d90-4298-ac8e-91390ef43478$e4f625cd-f846-4fba-843c-3ffc4a4c563a$649bde36-c7d6-4f6d-ba98-44cd16419bde$cd6a99f3-8676-4a8d-9575-3b3c3499dcce$216cfb08-1159-4e69-ab34-bcfcfd7d3f6c$426b93da-bdfd-4ef7-a076-2e6ca773be00$8ef1af36-9d02-4c8e-9663-22517ea95718published_objectsnbpkginstall_time_ns   Ӑinstantiatedòinstalled_versionsterminal_outputsnbpkg_sync@
[0m[1mInstantiating...[22m
[90m===[39m

[0m[1mResolving...[22m
[90m===[39m
[32m[1m  No Changes[22m[39m to `/tmp/jl_VHsF3F/Project.toml`
[32m[1m  No Changes[22m[39m to `/tmp/jl_VHsF3F/Manifest.toml`

[0m[1mPrecompiling...[22m
[90m===[39m
[32m[1m  Activating[22m[39m project at `/tmp/jl_VHsF3F`enabled÷restart_recommended_msgrestart_required_msgbusy_packageswaiting_for_permission,waiting_for_permission_but_probably_disabled«cell_inputs$426b93da-bdfd-4ef7-a076-2e6ca773be00cell_id$426b93da-bdfd-4ef7-a076-2e6ca773be00codefunction update!(κ::KappaCoefficient, y1, y2)
	@assert(length(y1) == length(y2))

	κ.n_observations += length(y1)
	κ.n_agreed += count(y1 .== y2)
	for cls in 1:κ.n_classes
		κ.preds[cls,:] .+= [count(y1 .== cls), count(y2 .== cls)]
	end

	return κ.n_observations
endmetadatashow_logsèdisabled®skip_as_script«code_folded$216cfb08-1159-4e69-ab34-bcfcfd7d3f6ccell_id$216cfb08-1159-4e69-ab34-bcfcfd7d3f6ccodeٛBase.@kwdef mutable struct KappaCoefficient
	n_classes::Int

	n_agreed::Int = 0
	n_observations::Int = 0
	preds::Matrix{Int} = zeros(Int, n_classes, 2)
endmetadatashow_logsèdisabled®skip_as_script«code_folded$1efc1b34-ebf2-11ec-04f5-315c43e9338ecell_id$1efc1b34-ebf2-11ec-04f5-315c43e9338ecode(function kappa_score(y1, y2, n_categories)
	@assert length(y1) == length(y2)

	n_observations = length(y1)

	pₑ = 0.
	for i in 1:n_categories
		pₑ += count(y1 .== i) * count(y2 .== i)
	end
	pₑ /= n_observations ^ 2
	pₒ = count(y1 .== y2) / n_observations 

	(pₒ - pₑ) / (1 - pₑ)
endmetadatashow_logsèdisabled®skip_as_script«code_folded$063e664a-9b0d-4cf1-9b5f-1ec925a55353cell_id$063e664a-9b0d-4cf1-9b5f-1ec925a55353codemetadatashow_logsèdisabled®skip_as_script«code_folded$649bde36-c7d6-4f6d-ba98-44cd16419bdecell_id$649bde36-c7d6-4f6d-ba98-44cd16419bdecode$md"""
### An online version 🌜
"""metadatashow_logsèdisabled®skip_as_script«code_folded$cd6a99f3-8676-4a8d-9575-3b3c3499dccecell_id$cd6a99f3-8676-4a8d-9575-3b3c3499dccecodelet
	κ = KappaCoefficient(n_classes = 2)

	update!(κ, [2], [2])
	update!(κ, [1], [2])
	update!(κ, [1], [1])

	value(κ)
endmetadatashow_logsèdisabled®skip_as_script«code_folded$fe3e9afa-fbc0-45db-ba0f-03f2ff6d857fcell_id$fe3e9afa-fbc0-45db-ba0f-03f2ff6d857fcode!kappa_score([2, 1, 1], [2, 2, 1])metadatashow_logsèdisabled®skip_as_script«code_folded$ffe10202-04d0-41a0-8cde-dd9fe46c4e59cell_id$ffe10202-04d0-41a0-8cde-dd9fe46c4e59codeقmd"""
# Cohen's Kappa score

```math
\kappa = \frac{p_0 - p_e}{1 - p_e}
```

```math
p_e = \frac 1{N^2}\sum_k n_{k1}n_{k2}
```
"""metadatashow_logsèdisabled®skip_as_script«code_folded$50727c67-86e8-4ed6-88a5-7880b9a597d4cell_id$50727c67-86e8-4ed6-88a5-7880b9a597d4codeIkappa_score(y1, y2) =
	kappa_score(y1, y2, length(unique(union(y1, y2))))metadatashow_logsèdisabled®skip_as_script«code_folded$8ef1af36-9d02-4c8e-9663-22517ea95718cell_id$8ef1af36-9d02-4c8e-9663-22517ea95718codeٳfunction value(κ::KappaCoefficient)
	pₒ = κ.n_agreed / κ.n_observations
	pₑ = sum(prod, eachrow(κ.preds)) / (κ.n_observations ^ 2)

	return (pₒ - pₑ) / (1 - pₑ)
endmetadatashow_logsèdisabled®skip_as_script«code_folded$e4f625cd-f846-4fba-843c-3ffc4a4c563acell_id$e4f625cd-f846-4fba-843c-3ffc4a4c563acode/let
	N = 20
	y1 = rand(1:10, N)
	y2 = rand(1:10, N)

	y11, y12 = @view(y1[begin:N÷2]), @view(y1[N÷2+1:end])
	y21, y22 = @view(y2[begin:N÷2]), @view(y2[N÷2+1:end])

	κ = kappa_score(y1, y2)
	κ2 = KappaCoefficient(n_classes = 10)

	update!(κ2, y11, y21)
	update!(κ2, y12, y22)

	κ, value(κ2)
endmetadatashow_logsèdisabled®skip_as_script«code_folded$c737a28b-2d90-4298-ac8e-91390ef43478cell_id$c737a28b-2d90-4298-ac8e-91390ef43478codekappa_score([2, 1], [1, 2])metadatashow_logsèdisabled®skip_as_script«code_folded«notebook_id$af10b314-8a3e-11ef-2d1b-df45447cd920in_temp_dir¨metadata