如何调整重叠{siar}中的椭圆重叠计算以匹配ggbiplot中的正常概率椭圆?
How to adjust ellipses overlap calculation in overlap{siar} to match normal probability ellipsoids in ggbiplot?
回到这个 ,我正在计算两个椭圆之间的交集,例如versicolor 和 virginca 交汇处的体积:
使用以下 mwe:
data(iris)
log.ir <- log(iris[, 1:4])
ir.species <- iris[, 5]
ir.pca <- prcomp(log.ir, center = TRUE, scale. = TRUE)
library(ggbiplot)
g <- ggbiplot(ir.pca, obs.scale = 1, var.scale = 1,
groups = ir.species, ellipse = TRUE,
circle = TRUE)
g <- g + scale_color_discrete(name = '')
g <- g + theme(legend.direction = 'horizontal',
legend.position = 'top')
print(g)
然后我使用 overlap{siar} 计算椭圆体,如下所示:
library(siar)
setosa <- ir.pca$x[ir.species=="setosa",]
versicolor <- ir.pca$x[ir.species=="versicolor",]
virginica <- ir.pca$x[ir.species=="virginica",]
tmp <- overlap(versicolor[,1], versicolor[,2], virginica[,1], virginica[,2], steps = 5)
virginica.percentage <- round(x=(tmp$overlap/tmp$area2*100), digits = 2)
versicolor.percentage <- round(x=(tmp$overlap/tmp$area1*100), digits = 2)
> virginica.percentage [1] 1.54
> versicolor.percentage[1] 1.56
这显然比上图 2 中所示的要少得多。
如ggbiplot code on line 50所示,ggbiplot默认计算概率为"ellipse.prob = 0.68"的正态概率椭球,上图中使用的是
由于 documentation 重叠,{siar} 将椭圆计算为 "small sample size corrected standard ellipses"。
因此我问自己如何修改 overlap{siar} 以计算类似于 ggbiplot 中 plotted/calculated 的正态概率椭球。
https://github.com/AndrewLJackson/SIBER 提供的最新版本的 SIBER 包括两个新函数,用于计算用户定义大小(即不同分位数)的椭圆重叠。
maxLikOverlap()
和
bayesianOverlap()
我建议您使用
从 master 分支安装
# install.packages("devtools") # install if necessary
devtools::install_github("andrewljackson/SIBER@master",
build_vingettes = TRUE)
library(SIBER)
并遵循小插图 "Ellipse-Overlap"。如果插图没有为您安装,您可以直接从 github 存储库 https://github.com/AndrewLJackson/SIBER/tree/master/vignettes
下载它们
回到这个
data(iris)
log.ir <- log(iris[, 1:4])
ir.species <- iris[, 5]
ir.pca <- prcomp(log.ir, center = TRUE, scale. = TRUE)
library(ggbiplot)
g <- ggbiplot(ir.pca, obs.scale = 1, var.scale = 1,
groups = ir.species, ellipse = TRUE,
circle = TRUE)
g <- g + scale_color_discrete(name = '')
g <- g + theme(legend.direction = 'horizontal',
legend.position = 'top')
print(g)
然后我使用 overlap{siar} 计算椭圆体,如下所示:
library(siar)
setosa <- ir.pca$x[ir.species=="setosa",]
versicolor <- ir.pca$x[ir.species=="versicolor",]
virginica <- ir.pca$x[ir.species=="virginica",]
tmp <- overlap(versicolor[,1], versicolor[,2], virginica[,1], virginica[,2], steps = 5)
virginica.percentage <- round(x=(tmp$overlap/tmp$area2*100), digits = 2)
versicolor.percentage <- round(x=(tmp$overlap/tmp$area1*100), digits = 2)
> virginica.percentage [1] 1.54
> versicolor.percentage[1] 1.56
这显然比上图 2 中所示的要少得多。
如ggbiplot code on line 50所示,ggbiplot默认计算概率为"ellipse.prob = 0.68"的正态概率椭球,上图中使用的是
由于 documentation 重叠,{siar} 将椭圆计算为 "small sample size corrected standard ellipses"。
因此我问自己如何修改 overlap{siar} 以计算类似于 ggbiplot 中 plotted/calculated 的正态概率椭球。
https://github.com/AndrewLJackson/SIBER 提供的最新版本的 SIBER 包括两个新函数,用于计算用户定义大小(即不同分位数)的椭圆重叠。
maxLikOverlap()
和
bayesianOverlap()
我建议您使用
从 master 分支安装 # install.packages("devtools") # install if necessary
devtools::install_github("andrewljackson/SIBER@master",
build_vingettes = TRUE)
library(SIBER)
并遵循小插图 "Ellipse-Overlap"。如果插图没有为您安装,您可以直接从 github 存储库 https://github.com/AndrewLJackson/SIBER/tree/master/vignettes
下载它们