R eulerr 包 - 显示错误的欧拉图
R eulerr package - Displays wrong euler Diagram
我正在尝试使用 R 包 eulerr 创建欧拉图。
我正在使用以下代码:
vd <- euler(c(A = 54, B = 22, C = 53, D= 26 ,"A&B" = 20, "A&C" = 29, "A&D"=10, "B&C" = 16, "B&D"=5, "C&D"=7,"A&B&C" = 14, "A&B&D"=5, "A&C&D"=4, "B&C&D"=3,"A&B&C&D"=3),input = c("union"), shape="ellipse")
plot(vd, labels = c("A", "B", "C","D"), main = "Databases",Count=TRUE, quantities = TRUE)
我得到以下结果:
但是生成的欧拉图是错误的:
- 并非所有 B 都应包含在 A 中
- B一共应该是22个(图中只显示总数为20个)
- C一共应该是53(不是51)
我该如何解决这个问题或者这是一个包错误?
error_plot 显示如下:
区域错误:
残差:
不幸的是,残差图没有显示残差。
尽管如此,丢失的案例显示在下面的 "normal" 残差统计中。
original fitted residuals regionError
A 15 15 0 0.004
B 0 0 0 0.000
C 19 19 0 0.005
D 13 13 0 0.003
A&B 4 4 0 0.001
A&C 14 14 0 0.003
A&D 4 4 0 0.001
B&C 2 0 2 0.022
B&D 0 0 0 0.000
C&D 3 3 0 0.001
A&B&C 11 11 0 0.003
A&B&D 2 2 0 0.000
A&C&D 1 1 0 0.000
B&C&D 0 0 0 0.000
A&B&C&D 3 3 0 0.001
diagError: 0.022
stress: 0.004
遗漏部分区域的原因很简单:图表不准确,遗漏了一些区域。没有地方放置 B&C
的标签,这就是 B 和 C 缺少 2 个单位的原因。可能没有任何方法(或者至少 eulerr 无法找到它)使用椭圆完美地表示您与欧拉图的组合。您要么必须接受它是不准确的,要么尝试其他解决方案。
同样,残差图无法以图形方式显示缺失的残差,因为没有区域代表它们。顺便说一句,我是这个包的作者,我确实对残差图有更好的想法,它也会显示缺失区域,但我还没有时间实现它。
关于如何解决这个问题,这取决于你想要的精确度。根据 nVenn 算法,我编写了 nVennR 包来创建准比例欧拉图。根据 link 中提到的注意事项,您可以表示更多的集合并显示每个区域的相对大小。在你的例子中,
library(nVennR)
myV <- createVennObj(nSets = 4, sNames = c('A', 'B', 'C', 'D'), sSizes = c(0, 26, 53, 7, 22, 5, 16, 3, 54, 10, 29, 4, 20, 5, 14, 3))
myV <- plotVenn(nVennObj = myV)
结果将是:
根据您的要求,这可能并不令人满意。比例是在圆圈的面积上,而不是区域(你可以看到区域 1、2、3、4 - A&B&C&D - 有空 space。但是,这种策略克服了这些规则形状的局限性Johan Larsson 提到的陈述。如果您有兴趣,vignette.
中有更多详细信息
欧拉在很多情况下都可能出错,例如:
vd <- euler(c(A=23578,B=30492,C=63610,"A&B"=563,"A&C"=624,"B&C"=1600,"A&B&C"=308))
plot(vd, labels = c("1", "2", "3"), main = "overlap", cex=2)
显示三个类别没有重叠区域的图表。
我认为这只是一个不准确的工具。
我正在尝试使用 R 包 eulerr 创建欧拉图。 我正在使用以下代码:
vd <- euler(c(A = 54, B = 22, C = 53, D= 26 ,"A&B" = 20, "A&C" = 29, "A&D"=10, "B&C" = 16, "B&D"=5, "C&D"=7,"A&B&C" = 14, "A&B&D"=5, "A&C&D"=4, "B&C&D"=3,"A&B&C&D"=3),input = c("union"), shape="ellipse")
plot(vd, labels = c("A", "B", "C","D"), main = "Databases",Count=TRUE, quantities = TRUE)
我得到以下结果:
- 并非所有 B 都应包含在 A 中
- B一共应该是22个(图中只显示总数为20个)
- C一共应该是53(不是51)
我该如何解决这个问题或者这是一个包错误?
error_plot 显示如下:
区域错误:
original fitted residuals regionError
A 15 15 0 0.004
B 0 0 0 0.000
C 19 19 0 0.005
D 13 13 0 0.003
A&B 4 4 0 0.001
A&C 14 14 0 0.003
A&D 4 4 0 0.001
B&C 2 0 2 0.022
B&D 0 0 0 0.000
C&D 3 3 0 0.001
A&B&C 11 11 0 0.003
A&B&D 2 2 0 0.000
A&C&D 1 1 0 0.000
B&C&D 0 0 0 0.000
A&B&C&D 3 3 0 0.001
diagError: 0.022
stress: 0.004
遗漏部分区域的原因很简单:图表不准确,遗漏了一些区域。没有地方放置 B&C
的标签,这就是 B 和 C 缺少 2 个单位的原因。可能没有任何方法(或者至少 eulerr 无法找到它)使用椭圆完美地表示您与欧拉图的组合。您要么必须接受它是不准确的,要么尝试其他解决方案。
同样,残差图无法以图形方式显示缺失的残差,因为没有区域代表它们。顺便说一句,我是这个包的作者,我确实对残差图有更好的想法,它也会显示缺失区域,但我还没有时间实现它。
关于如何解决这个问题,这取决于你想要的精确度。根据 nVenn 算法,我编写了 nVennR 包来创建准比例欧拉图。根据 link 中提到的注意事项,您可以表示更多的集合并显示每个区域的相对大小。在你的例子中,
library(nVennR)
myV <- createVennObj(nSets = 4, sNames = c('A', 'B', 'C', 'D'), sSizes = c(0, 26, 53, 7, 22, 5, 16, 3, 54, 10, 29, 4, 20, 5, 14, 3))
myV <- plotVenn(nVennObj = myV)
结果将是:
根据您的要求,这可能并不令人满意。比例是在圆圈的面积上,而不是区域(你可以看到区域 1、2、3、4 - A&B&C&D - 有空 space。但是,这种策略克服了这些规则形状的局限性Johan Larsson 提到的陈述。如果您有兴趣,vignette.
中有更多详细信息欧拉在很多情况下都可能出错,例如:
vd <- euler(c(A=23578,B=30492,C=63610,"A&B"=563,"A&C"=624,"B&C"=1600,"A&B&C"=308))
plot(vd, labels = c("1", "2", "3"), main = "overlap", cex=2)
显示三个类别没有重叠区域的图表。
我认为这只是一个不准确的工具。