2011-09-23 168 views
-1

安排在一个简单的表格所以我数转换测量数据:计算面积

 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 

我知道有用于绘制置信椭圆对这些数据的功能,但如何我计算生成的形状的面积?

由于

回答

3

首先计算出椭圆,然后确定长轴和短轴的长度,然后calculate the area

这是一个无脑的近似。

首先,你的数据。

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

“计算椭圆”需要一些细节。 – Benjamin

+0

@Benjamin - 也许我太过分地讨厌,但似乎提问者知道如何计算椭圆,在这个区域不会有困难,除非难以理解事物,在这种情况下,他应该问关于那个部分。 – Karl

0

您可以使用包mclust,有一个名为mvn_plot一个隐藏的功能,输入参数为meanstd。您可以尝试读取其代码并修改它以获取每个轴的长度。