PCA分析中不同类型的椭圆
Different type of ellipse in PCA analysis
使用 coord.ellipse
(来自 FactoMineR
包)和 ordiellipse
(来自 vegan
包)在 R 中使用单个因子映射时计算的椭圆之间有什么区别?
下面是一些可重现的代码:
library(FactoMineR)
library(vegan)
data(decathlon)
res.pca = PCA(decathlon[,1:10], scale.unit=TRUE, ncp=5, graph=T)
pcarda <- rda(decathlon[,1:10],scale=T)
使用来自 example here 的 FactomMineR。
concat = cbind.data.frame(decathlon[,13],res.pca$ind$coord)
ellipse.coord = coord.ellipse(concat,bary=T)
plot.PCA(res.pca,ellipse=ellipse.coord,cex=0.8)
使用椭圆形:
ordiplot(pcarda)
ordiellipse(pcarda,groups = decathlon[,13])
那些省略号提供了完全不同的结果...
我想直观地评估这些变量是否真的可以区分我的群体。使用 coord.ellipse 时,椭圆几乎是分开的(接受假设),而使用 ordiellipse
时,它们大部分重叠(拒绝假设)。
coord.ellipse
为分类变量的重心构造置信椭圆(默认阈值为 0.95,请参阅其帮助)。
ordiellipse
为点或其加权平均值构造标准偏差椭圆(请参阅参数 kind
的帮助)。
如果给它们相同的参数,它们是等价的(默认情况下它们是不同的)。例如:
par(mfrow=c(1,2))
ellipse.coord = coord.ellipse(concat,bary=TRUE,conf=0.95)
plot.PCA(res.pca,ellipse=ellipse.coord,cex=0.8,ylim=c(-4,4),xlim=c(-4,4))
ordiplot(pcarda,ylim=c(-2,2),xlim=c(-2,2))
ordiellipse(pcarda,groups = decathlon[,13],conf=0.95,kind="se")
获得:
它看起来并不完全一样,因为图形的比例略有不同(并且难以调整),但您可以看到它们以完全相同的方式分隔点。
那么如何检验你的假设就是Cross Validated的问题了。简而言之,如果你想表示你的群体是不相交的,只需用两种不同的颜色绘制个人:他们不是。
如果你想表示你的组的重心(一种方法)之间的差异,那么使用 95% 的椭圆(我在这里显示的那个)。从我的角度来看,这不是很确定,但你看......或者你测试但是为此你真的应该问另一个问题,并且可能比这里更多关于交叉验证的问题。
使用 coord.ellipse
(来自 FactoMineR
包)和 ordiellipse
(来自 vegan
包)在 R 中使用单个因子映射时计算的椭圆之间有什么区别?
下面是一些可重现的代码:
library(FactoMineR)
library(vegan)
data(decathlon)
res.pca = PCA(decathlon[,1:10], scale.unit=TRUE, ncp=5, graph=T)
pcarda <- rda(decathlon[,1:10],scale=T)
使用来自 example here 的 FactomMineR。
concat = cbind.data.frame(decathlon[,13],res.pca$ind$coord)
ellipse.coord = coord.ellipse(concat,bary=T)
plot.PCA(res.pca,ellipse=ellipse.coord,cex=0.8)
使用椭圆形:
ordiplot(pcarda)
ordiellipse(pcarda,groups = decathlon[,13])
那些省略号提供了完全不同的结果...
我想直观地评估这些变量是否真的可以区分我的群体。使用 coord.ellipse 时,椭圆几乎是分开的(接受假设),而使用 ordiellipse
时,它们大部分重叠(拒绝假设)。
coord.ellipse
为分类变量的重心构造置信椭圆(默认阈值为 0.95,请参阅其帮助)。
ordiellipse
为点或其加权平均值构造标准偏差椭圆(请参阅参数 kind
的帮助)。
如果给它们相同的参数,它们是等价的(默认情况下它们是不同的)。例如:
par(mfrow=c(1,2))
ellipse.coord = coord.ellipse(concat,bary=TRUE,conf=0.95)
plot.PCA(res.pca,ellipse=ellipse.coord,cex=0.8,ylim=c(-4,4),xlim=c(-4,4))
ordiplot(pcarda,ylim=c(-2,2),xlim=c(-2,2))
ordiellipse(pcarda,groups = decathlon[,13],conf=0.95,kind="se")
获得:
它看起来并不完全一样,因为图形的比例略有不同(并且难以调整),但您可以看到它们以完全相同的方式分隔点。
那么如何检验你的假设就是Cross Validated的问题了。简而言之,如果你想表示你的群体是不相交的,只需用两种不同的颜色绘制个人:他们不是。 如果你想表示你的组的重心(一种方法)之间的差异,那么使用 95% 的椭圆(我在这里显示的那个)。从我的角度来看,这不是很确定,但你看......或者你测试但是为此你真的应该问另一个问题,并且可能比这里更多关于交叉验证的问题。