R: adicionando sacos alfa a um gráfico de dispersão 2D ou 3D
Eu sei que emggplot2
pode-se adicionar o casco convexo a um gráfico de dispersão por grupo, como em
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
Eu estava pensando, porém, como é possível calcular e adicionar sacos alfa, ou seja, o maior casco convexo que contém pelo menos uma proporção 1-alfa de todos os pontos? Ou em 2d (para exibir com ggplot2) ou 3d (para exibir com rgl).
EDIT: Minha idéia inicial era continuar "descascando" o casco convexo, desde que o critério de conter pelo menos uma determinada porcentagem de pontos fosse atendido, embora no artigoaqui parece que eles usam um algoritmo diferente (isodepth, que parece ser implementado na profundidade do pacote R, em funçãoisodepth eaplpack :: plothulls parece também perto do que eu quero (embora produza uma plotagem completa em vez de apenas o contorno), então acho que com isso eu posso ser classificado. Embora essas funções funcionem apenas em 2D, eu também estaria interessado em uma extensão 3D (a ser plotada em rgl). Se alguém tiver alguma dica me avise!
EDIT2: com funçãodepth::isodepth
Encontrei uma solução 2D (veja o post abaixo), embora ainda esteja procurando uma solução 3D - se alguém souber como fazer isso, informe-me!