R: agregar bolsas alfa a un diagrama de dispersión 2d o 3d

Yo se que enggplot2 se puede agregar el casco convexo a un diagrama de dispersión por grupo como en

library(ggplot2)
library(plyr)
data(iris)
df<-iris
find_hull <- function(df) df[chull(df$Sepal.Length, df$Sepal.Width), ]
hulls <- ddply(df, "Species", find_hull)
plot <- ggplot(data = df, aes(x = Sepal.Length, y = Sepal.Width, colour=Species, fill = Species)) +
    geom_point() + 
    geom_polygon(data = hulls, alpha = 0.5) +
    labs(x = "Sepal.Length", y = "Sepal.Width")
plot

Sin embargo, me preguntaba cómo se podrían calcular y agregar bolsas alfa, es decir, el casco convexo más grande que contiene al menos una proporción 1-alfa de todos los puntos. Ya sea en 2d (para mostrar con ggplot2) o en 3d (para mostrar con rgl).

EDITAR: Mi idea inicial era seguir "pelando" el casco convexo durante todo el tiempo que se cumpliera el criterio de contener al menos un% dado de puntos, aunque en el documentoaquí parece que usan un algoritmo diferente (isodepth, que parece implementarse en profundidad de paquete R, en funciónisodepth yaplpack :: plothulls también parece cercano a lo que quiero (aunque produce una trama completa en lugar de solo el contorno), por lo que creo que con estos puedo ordenarme. Aunque esta función solo funciona en 2D, también me interesaría una extensión 3D (que se trazará en rgl). Si alguien tiene alguna sugerencia, hágamelo saber!

EDIT2: con funcióndepth::isodepth Encontré una solución 2d (vea la publicación a continuación), aunque todavía estoy buscando una solución 3D también. Si alguien sabe cómo hacerlo, ¡hágamelo saber!

Respuestas a la pregunta(2)

Su respuesta a la pregunta