在Matlab中配置biplot以区分散射

时间:2013-09-27 13:41:39

标签: matlab plot pca

我的原始data195x22记录集,其中包含是否患有帕金森病的人的声音测量值。在向量195x1中,我有一个status,它是1/0。

现在,我已经执行了一个PCA,我做了一个biplot,结果很好。问题在于,我无法分辨出我的散点图中哪些点来自病人或健康人(我无法将其与status联系起来)。我希望我的散点图如果健康(状态= 0)则为红点,如果生病则为绿色(状态= 1)。

我该怎么做?我的双标图代码是:

biplot(coeff(:,1:2), ...
    'Scores', score(:,1:2), ...
    'VarLabels', Labels, ...
    'markersize', 15 ...
);
xlabel('Bi-Plot: Standardized Data');
xlabel('PCA1');
ylabel('PCA2');

Click to view image

更新(解决方案):

解决方案的灵感来自@Magla,代码可以在这里看到:http://pastebin.com/KHUj3DnA

有了这张漂亮的图表:

enter image description here

1 个答案:

答案 0 :(得分:4)

biplot中的主成分得分(红点)不是pca函数返回的得分。正如帮助所述,

  

biplot缩放分数,使它们适合情节:它将每个分数除以所有分数的最大绝对值,并乘以   通过coefs的最大系数长度。然后biplot改变了   分数符号的符号根据符号约定   coefs。

因此,您无法轻松使用(X,Y)信息找出属于某个类别的点。

以下是使用ObsLabels的{​​{1}}选项的解决方法。 biplot为每个观察点分配一些用户定义的数据:对于每个点,我们将分配对应于ObsLabels变量的索引(一个简单的递增值)。这样,您可以轻松修改status的红点 - 此处biplot设置为方形和红色/绿色。

下图

enter image description here

由此代码生成

marker