R: Hinzufügen von Alpha-Beuteln zu einem 2D- oder 3D-Streudiagramm

Ich weiß, dass inggplot2 man kann die konvexe Hülle wie in @ gruppenweise zu einem Streudiagramm hinzufüg

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

Ich habe mich gefragt, wie man stattdessen Alpha-Taschen berechnen und hinzufügen kann, d. H. Die größte konvexe Hülle, die mindestens einen Anteil von 1-Alpha aller Punkte enthält. Entweder in 2d (zur Anzeige mit ggplot2) oder in 3d (zur Anzeige mit rgl).

EDIT: Meine ursprüngliche Idee war es, den konvexen Rumpf so lange weiter zu "schälen", bis das Kriterium, dass mindestens ein bestimmter Prozentsatz von Punkten enthalten ist, erfüllt ist, obwohl es in dem ArtikelHie es scheint, dass sie einen anderen Algorithmus verwenden (isodepth, der in R-Pakettiefe implementiert zu sein scheint, in Funktion isodepth undaplpack :: plothulls scheint auch in der Nähe von dem zu sein, was ich will (obwohl es ein vollständiges Diagramm im Gegensatz zur Kontur erzeugt), also denke ich, dass ich mit diesen sortiert werden kann. Obwohl diese Funktion nur in 2D funktioniert, wäre ich auch an einer 3D-Erweiterung interessiert (in RGL zu zeichnen). Wenn jemand irgendwelche Hinweise hat, lass es mich wissen!

EDIT2: mit der Funktiondepth::isodepth Ich habe eine 2D-Lösung gefunden (siehe Beitrag unten), obwohl ich auch noch nach einer 3D-Lösung suche - wenn jemand wissen sollte, wie das geht, lass es mich bitte wissen!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage