我有一个数据集需要清除错误。为此,我有一个子数据集,其中仅包含我知道正确的观察结果(“匹配”)。我想围绕图上的正确观察结果绘制一个 95% 置信度椭圆,并从我的主数据集中排除椭圆之外的所有观察结果。 我想出了如何绘制它,但现在我希望能够基于此提取数据。
我是 R 的初学者,所以所有这些对我来说都是相当新的,所以我可能不理解复杂的编码。 :)
谢谢!
为了添加更多细节,我的数据是跳虫(一种昆虫)的测量值。它具有以下基本结构:
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)
然后您可以使用 out 向量删除不需要的行。
dat.in <- dat[!out,]
关于R:绘制一个 95% 置信度椭圆并排除椭圆外的所有观测值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62904691/