计算R中的二维置信椭圆的面积

问题描述 投票:0回答:3

所以我将对数转换后的测量数据安排在一个简单的表中:

      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

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

谢谢

r area ellipse
3个回答
4
投票
首先计算椭圆,然后确定长轴和短轴的长度,然后确定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))

然后装入程序包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)


0
投票
您可以使用程序包mclust,有一个名为mvn_plot的隐藏函数,输入参数为meanstd。您可以尝试读取其代码并对其进行修改以获取每个轴的长度。

0
投票
我相信可以直接根据两个变量的标准偏差来计算面积(假设两个变量均呈正态分布)。您需要根据想要获得的信心来进行扩展。

[dat from user Karl's answer

pi * 5.991 * sd(dat$x) * sd(dat$y) # 5.991 = factor for 95% confidence #> [1] 0.01256344

reprex package(v0.3.0)在2020-02-27创建

see also this very useful thread
© www.soinside.com 2019 - 2024. All rights reserved.