【问题标题】:statistics for 2x4 contingency table with both large and small counts具有大计数和小计数的 2x4 列联表的统计信息
【发布时间】:2014-11-07 23:13:43
【问题描述】:

如果这是一个非常幼稚的问题,我深表歉意......

我有 7000 个包含计数数据的 2x4 列联表。它们代表基因组中的特定位置以及在 2 个不同环境中在该位置观察到每个 dna 核苷酸的次数。 一个示例列联表将是

            A      C      G      T 
condition1  0      2      20     70000
condition2  3      15     0      95000

or
            A      C     G       T 
condition1  80146  0     5       0
condition2  26821  2     4       0

数据只能是正整数。最小计数为 0,最大可高达 ~800,000。一个计数通常是该行和列的几乎所有总计数(例如,在两种情况下都相同,例如上面第一种情况中的单元格 T 和第二种情况中的单元格 A),然后 1 或 2 个其他单元格将具有低计数......应该在这些其他单元格中观察差异(如果有的话)。

目标是确定这两种环境条件之间显着不同的位置,以进一步分析。我们的测量方法估计有10^-6的错误率。

我正在使用 R 来分析这些数据。我不确定我是否可以对此进行卡方检验,因为细胞计数很小或为 0。 通过 Fisher 的测试,我得到 2 个错误:

with a workspace of 1E5 
FEXACT error 40.
Out of workspace.

with a workspace of >3E5
FEXACT error 501.
The hash table key cannot be computed because the largest key
is larger than the largest representable int.
The algorithm cannot proceed.
Reduce the workspace size or use another algorithm.

谁能建议一个合适的测试,或者渔夫或卡方的设置?

提前非常感谢,

罗恩

【问题讨论】:

  • 为了使问题更清楚,您可以为列命名,说明每列中可以包含哪些值并给出 2 个示例表。这将有助于论坛成员为您提供帮助。
  • 刚刚做了。希望现在这更有意义。
  • “1 或 2 个其他单元格的计数较低......在这些其他单元格中应该观察到差异(如果有的话)。”:低是什么意思:将占用 100截止时间可以吗?
  • 100 可能很高......也许 30 或 50 是更好的截止值。理论上错误率如果为 1e-6,每行的中位数总数约为 50,000-150,000 个事件 (n),因此即使观察很少的事件也应高于错误。

标签: r statistics contingency


【解决方案1】:

卡方检验有效:

df1 = structure(list(A = c(0L, 3L), C = c(2L, 15L), G = c(20L, 0L), 
    T = c(70000L, 95000L)), .Names = c("A", "C", "G", "T"), class = "data.frame", row.names = 1:2)

df1
  A  C  G     T
1 0  2 20 70000
2 3 15  0 95000

chisq.test(df1)

        Pearson's Chi-squared test

data:  df1
X-squared = 35.8943, df = 3, p-value = 7.884e-08

Warning message:
In chisq.test(df1) : Chi-squared approximation may be incorrect

我不确定这是否足够。

【讨论】:

  • 某些单元格的值为0或低于5时可以做卡方吗?这是警告的来源吗?
  • 我同意KaiSun 并忽略此警告。 fisher.test 给出了一个错误,这就是你应该使用卡方检验的更多原因。对于统计建议,您应该在stats.stackexchange.com (CrossValidated) 发帖。
  • 谢谢大家。我将它发布在 stats exchange 上,以确保它是正确的测试并且可以忽略警告。
  • 感谢您的反馈。
【解决方案2】:

Fisher 在 R 中的精确检验仅适用于较小的数据。如果将 T 列中的数据从 70000 和 95000 减少到 700 和 950,Fisher 检验将起作用。

同时,我在您的数据上尝试了chisq.test,它奏效了。对于较大的数据,卡方检验优于 Fisher 精确检验。

【讨论】:

  • 嗨,如果我将数据缩小 10,我不确定是否会遇到问题,因为它无法缩放 0 值并且当 n 为 100,000 时得到 0 不应该意味着和一万的时候一样。至于 chisq.test,如下所示,我不确定是否可以将其与包含少于 5 个的单元格一起使用,并且我收到一条警告消息,指出近似值可能不正确。
  • 嗨,罗恩,我不是统计学专家。您可以查看此页面langsrud.com/fisher.htm。我认为只要 chisq.test 对您的数据有效,您就不必太担心。
猜你喜欢
  • 2020-02-27
  • 1970-01-01
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-07
  • 2020-09-26
相关资源
最近更新 更多