我想知道:是否有一些功能/巧妙的方法来找到覆盖R中一组2d点的给定部分的最小椭圆?随着最小的我的意思是面积最小的椭圆形.
澄清:如果点数很大,我可以使用近似正确的解决方案(因为我猜一个确切的解决方案必须尝试点的子集的所有组合)
这个问题可能听起来像是包含R中给定点百分比的椭圆问题的副本,但问题的表达形式是得到的答案不会产生最小的椭圆.例如,使用给予Ellipse的解决方案,其中包含R中给定点的百分比:
require(car)
x <- runif(6)
y <- runif(6)
dataEllipse(x,y, levels=0.5)
Run Code Online (Sandbox Code Playgroud)
得到的椭圆显然不是包含一半点的最小椭圆,我猜,这是一个覆盖左上角三个点的小椭圆.

我使用ellipsoidhull()函数来导出一个椭圆,该椭圆界定x,y坐标中的所有点.然后我使用point.in.polygon()函数来预测一组新的X,Y坐标是否落在椭圆内部/外部.
而不是绘制一个限定(x,y)中所有点的椭圆,是否可以使用80%的点?可以选择80%的点以形成最紧凑或最小的椭圆区域.
> xy
x y
3.076 5.208
3.046 5.123
2.993 5.108
3.062 5.134
3.168 5.223
3.138 5.284
3.166 5.319
3.226 5.411
3.262 5.417
3.215 5.234
3.086 5.019
3.199 5.167
3.274 5.596
3.293 5.608
3.195 5.396
3.294 5.374
2.974 5.539
3.268 5.377
3.192 5.298
3.08 4.916
3.117 4.985
3.128 5.118
3.21 5.373
3.184 5.282
3.27 5.291
3.074 5.175
> Query
X Y
3.03 5.008
2.99 5.018
2.987 4.944
2.994 4.899
2.911 4.963
2.913 4.942
2.966 4.969
3.079 5.011
3.096 5.268 …Run Code Online (Sandbox Code Playgroud) 我之前发过一个类似的问题.我试图确定一个点是否位于椭圆内.基本上我生成一些双变量法线数据并创建一个椭圆.继承我使用的代码
library(MASS)
set.seed(1234)
x1<-NULL
x2<-NULL
k<-1
Sigma2 <- matrix(c(.72,.57,.57,.46),2,2)
Sigma2
rho <- Sigma2[1,2]/sqrt(Sigma2[1,1]*Sigma2[2,2])
eta<-replicate(300,mvrnorm(k, mu=c(-2.503,-1.632), Sigma2))
p1<-exp(eta)/(1+exp(eta))
n<-60
x1<-replicate(300,rbinom(k,n,p1[,1]))
x2<-replicate(300,rbinom(k,n,p1[,2]))
rate1<-x1/60
rate2<-x2/60
library(car)
dataEllipse(rate1,rate2,levels=c(0.05, 0.95))
Run Code Online (Sandbox Code Playgroud)
我需要找出对(p1 [,1],p1 [,2])是否位于上面椭圆的区域内.