【问题标题】:R eulerr package - Displays wrong euler DiagramReulerr 包 - 显示错误的 euler 图
【发布时间】:2019-01-12 19:28:57
【问题描述】:

我正在尝试使用 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 

【问题讨论】:

  • documentation 说“三个或更多集合相交,精确的欧拉图通常是不可能的。对于这种情况,欧拉试图通过数值调整椭圆或圆的参数来提供良好的近似值最小化结果图中的错误。”也许这是那些不可能的情况之一。文档还说“提供残差和拟合优度统计数据来评估结果图是否可信”——你检查了吗?
  • 谢谢!这似乎是不可能的案例之一。残差和拟合优度统计显示了我的第一篇文章中显示的结果。

标签: r venn-diagram eulerr


【解决方案1】:

关于如何解决问题,这取决于您想要的精确度。根据nVenn 算法,我编写了 nVennR 包来创建准比例欧拉图。使用链接中提到的警告,您可以表示更大数量的集合并显示每个区域的相对大小。在你的例子中,

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 - 有空白空间。但是,这种策略克服了 Johan 提到的这些表示中规则形状的限制Larsson。有兴趣的可以在vignette了解更多详情。

【讨论】:

    【解决方案2】:

    省略某些区域的原因很简单:图表不准确,缺少某些区域。没有地方可以放置B&amp;C 的标签,所以这就是 B 和 C 缺少 2 个单位的原因。可能没有任何方法(或至少 eulerr 找不到)完美地表示您与使用椭圆的欧拉图的组合。您要么必须接受它不准确,要么尝试其他解决方案。

    同样,残差图无法以图形方式显示缺失的残差,因为没有区域表示它们。顺便说一句,我是这个包的作者,我确实对残差图有更好的想法,它也会显示缺失的区域,但我还没有时间实现它。

    【讨论】:

      【解决方案3】:

      欧拉在很多情况下都会出错,例如:

      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)
      

      显示三个类别没有重叠区域的图表。

      我认为这只是一个不准确的工具。

      【讨论】:

        猜你喜欢
        • 2015-03-29
        • 1970-01-01
        • 2014-03-20
        • 1970-01-01
        • 2015-07-28
        • 1970-01-01
        • 2016-11-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多