所以我将对数转换后的测量数据安排在一个简单的表中:
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
我知道有一些功能可以为这些数据绘制置信椭圆,但是如何计算生成形状的面积?
谢谢
这里是一个无脑的近似。
首先,您的数据。
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)
mclust
,有一个名为mvn_plot
的隐藏函数,输入参数为mean
和std
。您可以尝试读取其代码并对其进行修改以获取每个轴的长度。 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