首先计算椭圆,然后确定长轴和短轴的长度,然后计算面积。
这是一个无脑的近似。
首先,您的数据。
dat <- structure(list(x = c(1.158362492, 1.1430148, 1.11058971, 1.120573931,
1.149219113, 1.123851641, 1.096910013), y = c(1.322219295, 1.267171728,
1.252853031, 1.260071388, 1.278753601, 1.276461804, 1.222716471
)), .Names = c("x", "y"), class = "data.frame", row.names = c(NA,
-7L))
然后加载包car
;dataEllipse
可用于使用数据的二元正态逼近来计算椭圆。
require(car)
dataEllipse(dat$x, dat$y, levels=0.5)
调用ellipse
可以沿绘制的椭圆给出点dataEllipse
。
me <- apply(dat, 2, mean)
v <- var(dat)
rad <- sqrt(2*qf(0.5, 2, nrow(dat)-1))
z <- ellipse(me, v, rad, segments=1001)
然后我们可以计算椭圆上每个点到中心的距离。
dist2center <- sqrt(rowSums((t(t(z)-me))^2))
这些距离的最小值和最大值是短轴和长轴的半长。所以我们可以得到面积如下。
pi*min(dist2center)*max(dist2center)