在Matlab中,我有一个表格中的数据集:
SCHOOL SEX AGE ADDRESS STATUS JOB GUARDIAN HEALTH GRADE
UR F 12 U FT TEA MOTHER 1 11
GB M 22 R FT SER FATHER 5 15
GB M 12 R FT OTH FATHER 3 12
GB M 11 R PT POL FATHER 2 10
有些变量是二进制的,有些是分类的,有些则是数值的。有可能从中提取一个相关矩阵,其中包含变量之间的相关系数吗?我尝试使用计量经济学工具箱中的corrcoef
和corrplot
,但我遇到了诸如"观测数据必须转换为double类型"之类的错误。
有人会了解如何做到这一点吗?非常感谢。
如上所述,您首先需要将分类变量和二进制变量转换为数值。所以,如果你的数据在一个表(T(中,做一些类似的事情:
T.SCHOOL = categorical(T.SCHOOL);
在这里的Matlab帮助中可以找到一个工作示例,他们使用患者数据集,该数据集似乎与您的数据相似。
然后,您可以将分类列转换为double:
T.SCHOOL = double(T.SCHOOL);
但要小心使用double,因为它将分类变量转换为任意数字,请参阅matlab论坛。
还要注意的是,如果你只是将它们转换为数字,那么你就是在将顺序引入分类变量中。因此,例如,如果将JOB的"TEA"、"SER"one_answers"OTH"转换为1、2、3等,则会使变量为序数TEA’则<'等等。
如果你想避免这种情况,你可以将分类列重新编码为"二进制"伪变量:
dummy_schools = dummyvar(T.SCHOOL);
它返回一个大小为nrows x unique(T.SCHOOL(的矩阵。
然后是整个讨论,计算分类变量的相关性是否有用。就像这里。
我希望这能有所帮助:(
我认为您需要使所有数据都是数字的,即将非数字列更改/编码为例如:
SCHOOL SEX AGE ADDRESS STATUS JOB GUARDIAN HEALTH GRADE
1 1 12 1 1 1 1 1 11
2 2 22 2 1 2 2 5 15
2 2 12 2 1 3 2 3 12
2 2 11 2 2 4 2 2 10
然后进行相关。