【问题标题】:How do I create a random contingency table in R?如何在 R 中创建随机列联表?
【发布时间】:2011-10-20 07:51:21
【问题描述】:

我想创建随机的双向列联表,给定固定的行和列边距。假设我有一张这样的桌子:

      A   C   G   T
  A  79   6  13  53
  C  16   7   6  17
  G   9   3   1   6
  T  58  28  18 114

具有给定的行边距:

  A   C   G   T 
151  46  19 218 

和列边距:

  A   C   G   T 
162  44  38 190 

我想创建一个随机列联表,例如:

   A  C  G  T
A 49 16 10 76
C 23  2  6 15
G 11  0  1  7
T 79 26 21 92

保留那些边缘。

由于在这种情况下 n 不是太大,我试图通过“取消”边缘向量来解决这个问题,即将边缘转换为形式的向量

A A A ...C C C ... G G G ... T T T 

然后对它们进行排列和表格化。

我目前用于“取消”边缘的方法非常不自然且效率低下,我很想知道是否有更好的方法。某些内置函数必须创建随机列联表,例如当simulate.p.value=TRUE 时的chisq.test。是否还内置了随机列联表构造?

提前感谢您的任何建议。

【问题讨论】:

    标签: r statistics


    【解决方案1】:

    我并不完全确定你的意思是'解开',而且由于你实际上没有指定你当前使用的方法,我无法确定这不是你目前正在做的事情。

    但给出了@ 987654321的边缘,@你可以通过这样做'重新创建'矢量:

    rep(c('A','C','G','T'),times = c(162, 44, 38, 190))
    

    然后根据需要释义它。

    【讨论】:

    • YEP,这正是我需要的。谢谢! span>
    【解决方案2】:

    对不起,@joran 的回答不正确。他的公式正确地模拟了具有正确列总计的表格,但 OP 要求进行同时考虑行总计和列总计的模拟。 1981 年,W.M. 给出了解决方案。佩特菲尔德。 算法 AS159。一种在给定行和列总计的情况下生成 r x c 表的有效方法。应用统计,30. 91-97。

    Patefield 算法在 Base R 函数 r2dtable() 中实现。

    【讨论】:

    • 暗示你会将 joran 的方法应用于列和行。
    • @Dason - 但这不起作用,因为当您修复行时,您会取消修复列。
    • 我认为我们正在以不同的方式可视化这一点。该表是通过基于两个向量制作一个表来创建的。您可以仅使用向量来计算边际 - 以获取您查看向量中配对的表格。你是这么想的吗?
    猜你喜欢
    • 2014-02-27
    • 2016-03-03
    • 2020-10-06
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    相关资源
    最近更新 更多