来自分类和非分类变量的相关矩阵 (Matlab)
Correlation matrix from categorical and non-categorical variables (Matlab)
在 Matlab 中,我有一个 table 形式的数据集:
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
,但我遇到了诸如 'observed data must be convertible to type double'.
之类的错误
有人知道如何做到这一点吗?谢谢。
我认为您需要将所有数据设为数字,即 change/code 非数字列,例如:
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
然后做相关。
如上所述,您首先需要将分类变量和二元变量转换为数值。
因此,如果您的数据在 table (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'。
如果您想避免这种情况,您可以将分类列重新编码为 'binary' 个虚拟变量:
dummy_schools = dummyvar(T.SCHOOL);
其中 returns 大小为 nrows x unique(T.SCHOOL) 的矩阵。
然后是整个讨论,计算分类变量的相关性是否有用。喜欢 here.
希望对您有所帮助:)
在 Matlab 中,我有一个 table 形式的数据集:
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
,但我遇到了诸如 'observed data must be convertible to type double'.
有人知道如何做到这一点吗?谢谢。
我认为您需要将所有数据设为数字,即 change/code 非数字列,例如:
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
然后做相关。
如上所述,您首先需要将分类变量和二元变量转换为数值。 因此,如果您的数据在 table (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'。
如果您想避免这种情况,您可以将分类列重新编码为 'binary' 个虚拟变量:
dummy_schools = dummyvar(T.SCHOOL);
其中 returns 大小为 nrows x unique(T.SCHOOL) 的矩阵。
然后是整个讨论,计算分类变量的相关性是否有用。喜欢 here.
希望对您有所帮助:)