R:绘制一个 95% 置信度椭圆并排除椭圆外的所有观测值

标签 r ellipse

我有一个数据集需要清除错误。为此,我有一个子数据集,其中仅包含我知道正确的观察结果(“匹配”)。我想围绕图上的正确观察结果绘制一个 95% 置信度椭圆,并从我的主数据集中排除椭圆之外的所有观察结果。 我想出了如何绘制它,但现在我希望能够基于此提取数据。

我是 R 的初学者,所以所有这些对我来说都是相当新的,所以我可能不理解复杂的编码。 :)

谢谢!

enter image description here

为了添加更多细节,我的数据是跳虫(一种昆虫)的测量值。它具有以下基本结构:

  replicate node day MajorAxisLengtnh MinorAxisLength Data.type
1         1    1  50              2.1             0.4     Match
2         2    1  50              2.3             0.2   Unknown

因此,我想通过排除不切实际的纵横比(长度/宽度)来验证测量结果。使用我知道正确的子集(匹配观察结果),我想确定弹尾的合理长宽比范围,并用它来消除任何不切实际的观察结果。建议我使用 95% 置信度椭圆来获得良好的观察结果,并剔除不适合椭圆的观察结果。

最佳答案

SIBER 软件包有一些功能可以为您提供帮助。

library(SIBER)

让我们使用鸢尾花数据集,绘制萼片宽度与长度的关系。

dat <- iris[,1:2]
plot(dat)

mu <- colMeans(dat)
Sigma <- cov(dat) 

addEllipse(mu, Sigma, p.interval = 0.95, col = "blue", lty = 3)

Z <- pointsToEllipsoid(dat, Sigma, mu)  # converts the data to ellipsoid coordinates
out <- !ellipseInOut(Z, p = 0.95)  # logical vector
(outliers <- dat[out,])  # finds the points outside the ellipse

#    Sepal.Length Sepal.Width
#16           5.7         4.4
#34           5.5         4.2
#42           4.5         2.3
#61           5.0         2.0
#118          7.7         3.8
#132          7.9         3.8

points(outliers, col="red", pch=19)

enter image description here

然后您可以使用 out 向量删除不需要的行。

dat.in <- dat[!out,]

关于R:绘制一个 95% 置信度椭圆并排除椭圆外的所有观测值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62904691/

相关文章:

r - ggplot - 多个图例排列

python - 将 3D 椭球拟合到 3D 空间中的点 - 不同的方法,不同的答案

c++ - OpenCV:CvBox2D 角度

swift - 点到椭圆的距离

r - 如何使用两个不同的标准对 data.table 执行两次聚合函数

r - 根据符号拆分 data.frame 中的行

r - 使用从现有行计算的值向数据框添加新行

r - 使用 Caret 包最大化召回率

java - 计算 3D 椭圆轨道上的点

r - 在椭圆和矩形内生成数据