在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类型”之类的错误。
任何人都会对如何做到这一点有所了解?谢谢。
答案 0 :(得分:0)
我认为您需要使所有数据成为数字,例如,将非数字列更改/编码为:
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
,然后进行相关。
答案 1 :(得分:0)
如上所述,您首先需要将分类变量和二进制变量转换为数值。 因此,如果您的数据在表(T)中,请执行以下操作:
T.SCHOOL = categorical(T.SCHOOL);
可以在Matlab帮助here中找到一个有效的示例,他们在其中使用患者数据集,该数据集似乎与您的数据相似。
然后您可以将类别列转换为两倍:
T.SCHOOL = double(T.SCHOOL);
但是请谨慎使用double,因为它将类别变量转换为任意数字,请参见the matlab forum。
还请注意,如果您将顺序简单地转换为数字,就将顺序引入到类别变量中。因此,例如,如果将JOB'TEA','SER','OTH'转换为1、2、3等,则使变量为序数。则'TEA'为<'OTH'。
如果要避免这种情况,可以将分类列重新编码为“二进制”伪变量:
dummy_schools = dummyvar(T.SCHOOL);
哪个返回大小为nrows x unique(T.SCHOOL)的矩阵。
然后是整个讨论,关于计算分类变量的相关性是否有用。像here。
我希望这会有所帮助:)