我的原始data
是195x22
记录集,其中包含是否患有帕金森病的人的声音测量值。在向量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');
更新(解决方案):
解决方案的灵感来自@Magla,代码可以在这里看到:http://pastebin.com/KHUj3DnA
有了这张漂亮的图表:
答案 0 :(得分:4)
biplot
中的主成分得分(红点)不是pca
函数返回的得分。正如帮助所述,
biplot缩放分数,使它们适合情节:它将每个分数除以所有分数的最大绝对值,并乘以 通过coefs的最大系数长度。然后biplot改变了 分数符号的符号根据符号约定 coefs。
因此,您无法轻松使用(X,Y)
信息找出属于某个类别的点。
以下是使用ObsLabels
的{{1}}选项的解决方法。 biplot
为每个观察点分配一些用户定义的数据:对于每个点,我们将分配对应于ObsLabels
变量的索引(一个简单的递增值)。这样,您可以轻松修改status
的红点 - 此处biplot
设置为方形和红色/绿色。
下图
由此代码生成
marker