0

因此,我将对数转换后的测量数据排列在一个简单的表格中:

      x         y
1.158362492 1.322219295
1.1430148   1.267171728
1.11058971  1.252853031
1.120573931 1.260071388
1.149219113 1.278753601
1.123851641 1.276461804
1.096910013 1.222716471

我知道有一些函数可以为这些数据绘制置信椭圆,但是如何计算生成形状的面积?

谢谢

4

3 回答 3

5

首先计算椭圆,然后确定长轴和短轴的长度,然后计算面积

这是一个无脑的近似。

首先,您的数据。

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))

然后加载包cardataEllipse可用于使用数据的二元正态逼近来计算椭圆。

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)
于 2011-09-25T02:57:36.280 回答
0

可以用package mclust,里面有个隐藏函数调用mvn_plot,输入参数是meanand std。您可以尝试阅读其代码并对其进行修改以获取每个轴的长度。

于 2011-09-25T03:35:32.920 回答
0

通过先计算特征值,可以直接从协方差矩阵计算面积。

您需要通过您想要获得的置信度因子来缩放方差/特征值。

这个线程非常有帮助

cov_dat <- cov(dat) # covariance matrix

eig_dat <- eigen(cov(dat))$values #eigenvalues of covariance matrix

vec <- sqrt(5.991* eig_dat) # half the length of major and minor axis for the 95% confidence ellipse

pi * vec[1] * vec[2]  
#> [1] 0.005796157

reprex 包于 2020-02-27 创建(v0.3.0)

dat 来自用户 Karl 的回答

于 2020-02-27T13:46:55.003 回答