trazar un círculo / casco convexo alrededor de un porcentaje dado de puntos

yo tengo

x=rnorm(100)
y=rnorm(100)
plot(x,y)
abline(h=0); abline(v=0)

Desde el punto(0,0) y hacia afuera me gustaría dibujar un contorno / círculo / elipse / casco convexo a mano alzada que encierra cualquier porcentaje de puntos.

¿Hay alguna función o paquete que pueda automatizar esto? He intentado lo siguiente hasta ahora, pero solo puedo obtener un círculo con algo de extrapolación y aproximación.

He intentado esto hasta ahora:

#calculate radius
r<- sqrt(x^2+y^2)

df<-data.frame(radius=seq(0,3,0.1), percentage=NA)

#get the percentage of points that have a smaller radius than i
k<-1
for (i in seq(0,3,0.1)){
  df$percentage[k] <- sum(r<i)/length(r)
  k<-k+1
}

#extrapolation function
prox.function<- approxfun(df$percentage, df$radius)


#get the radius of the circle that encloses about 50% of
prox.function(.50)

#draw the circle
library(plotrix)
draw.circle(0,0,prox.function(.50))

Respuestas a la pregunta(2)

Su respuesta a la pregunta