Как настроить расчет перекрытия эллипсов в перекрытии {siar}, чтобы он соответствовал эллипсоидам нормальной вероятности в ggbiplot?

Возвращаясь к этой теме , я вычислял пересечение между двумя эллипсами, например. объем пересечения лишай и девственница: PCA для набора данных радужной оболочки, используя следующий 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)

Затем я вычисляю эллипсоиды с помощью перекрытия {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 в строке 50, ggbiplot вычисляет нормальные эллипсоиды вероятности с вероятностью «ellipse.prob = 0,68» по умолчанию, что используется на графике выше.

Из-за перекрытия документации {siar} вычисляет эллипсы как «стандартные эллипсы с поправкой на небольшой размер выборки».

Поэтому я спрашивал себя, как можно изменить перекрытие {siar} для расчета нормального эллипсоида вероятности, подобного тому, который построен/вычислен в ggbiplot.


person raumkundschafter    schedule 20.05.2016    source источник


Ответы (1)


последняя версия SIBER, доступная по адресу https://github.com/AndrewLJackson/SIBER, включает две новые функции. для вычисления перекрытия эллипсов заданного пользователем размера (т.е. разных квантилей).

maxLikOverlap()

а также

bayesianOverlap()

Я предлагаю вам установить из основной ветки, используя

  # install.packages("devtools") # install if necessary
  devtools::install_github("andrewljackson/SIBER@master",
  build_vingettes = TRUE)
  library(SIBER)

И следуйте виньетке «Эллипс-Перекрытие». Если виньетки у вас не устанавливаются, вы можете скачать их прямо из репозитория github https://github.com/AndrewLJackson/SIBER/tree/master/vignettes

person Andrew Jackson    schedule 19.04.2017