查找枚举类型数据中的相关性

时间:2013-01-13 14:09:24

标签: matlab correlation pearson

我有以下数据集,其中包含有关国家/地区的信息

 5,1,648,16,10,2,0,3,5,1,1,0,1,1,1,0,0,0,0,0,1,0,0,1,0,0,
 3,1,29,3,6,6,0,0,3,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0,
 4,1,2388,20,8,2,2,0,3,1,1,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,
 ...

每行的第六列表示该国的主要宗教:0是天主教徒,1是其他基督徒,2是穆斯林等。其他一些数据是关于国家国旗中是否存在不同的颜色它们包含的符号,等等。

可以找到数据的描述here。我删除了字符串数据列,因此它与所显示的信息完全不符。

我的问题是我想使用协方差矩阵和Pearson相关来看看,例如,一个标志的颜色是红色的事实是否会告诉我该国的宗教信仰是否有更大的机会是某种东西而不是别的东西。但由于宗教被列举,我对如何解决这个问题感到有些迷茫。

1 个答案:

答案 0 :(得分:1)

您的问题是,尽管订购了您的数据,但此订单是任意的。 “穆斯林”(enum val = 1)与“hindu”(enum val = 3)之间的“距离”不是2。

解决此问题的最直接方法是将枚举值转换为二进制指示符向量:

假设你有

enum {
   Catholic = 0
   Protestant,
   Muslim,
   Jewish,
   Hindu,
   ...
   NumOfRel };

您将枚举值的单个条目替换为长度为NumOfRel的二进制向量,除了在适当位置的单个1之外,其余处均为零:

对于新教徒条目,您将拥有以下二进制向量:

[ 0 1 0 0 ... ]

对于一个犹太人:

[ 0 0 0 1 0 ... ]

等等......

这样,不同宗教之间的“距离”总是为1.