前些时间需要衡量多个分类数据之间两两相关程度,想找出最相关的一对分类数据;于是想到了曾经看过的克莱姆相关系数,但在网上搜了好久之后,即没发现Matlab现成的built-in函数,也没找到别人分享的Matlab代码,于是决定自己动手写一个~
克莱姆V(Cramer’s V),又称为克莱姆相关系数、克莱姆关联系数、独立系数等,是双变量相关分析的一种方法,专门用于衡量分类数据与分类数据之间相关程度。该系数取值范围为0到1,0表示两个变量无关,1表示完全相关。
这里主要参考【高桥 信/著, 陈刚/译. 漫画统计学. 科学出版社, 2009: 127-142.】中的内容,基于matlab实现计算克莱姆V的函数。首先给出函数代码:
function [ cramer_V ] = CramersV( x1,x2 )
%Author: https://blog.csdn.net/jbb0523
%Version: 1.0@2019-05-27
%Description: compute variable Cramer's V between x1&x2
%Reference: 高桥 信/著, 陈刚/译. 漫画统计学. 科学出版社, 2009: 127-142.
%Step 1: Observed frequency(contigency table )
sym_x1 = unique(x1);
sym_x2 = unique(x2);
contigency_tab = zeros(length(sym_x1),length(sym_x2));
for i=1:len