首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中创建随机列联表?

如何在R中创建随机列联表?
EN

Stack Overflow用户
提问于 2011-08-05 03:40:28
回答 2查看 1.7K关注 0票数 0

我想在给定固定的行和列边缘的情况下创建随机的双向联想表。假设我有一个这样的表:

代码语言:javascript
复制
      A   C   G   T
  A  79   6  13  53
  C  16   7   6  17
  G   9   3   1   6
  T  58  28  18 114

使用给定的行边距:

代码语言:javascript
复制
  A   C   G   T 
151  46  19 218 

和列边距:

代码语言:javascript
复制
  A   C   G   T 
162  44  38 190 

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

代码语言:javascript
复制
   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在本例中并不太大,因此我尝试通过"untabling“边缘向量来实现这一点,即通过将边缘转换为以下形式的向量

代码语言:javascript
复制
A A A ...C C C ... G G G ... T T T 

然后把它们排列起来放在桌上。

我目前使用的"untabling“方法是非常不自然和低效的,我很好奇是否有更好的方法。某些内置函数必须创建随机列联表,例如当simulate.p.value=TRUE时为chisq.test。随机列联表结构也是内置的吗?

提前感谢您的任何建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-05 04:49:55

我不完全确定你所说的“untabling”是什么意思,因为你实际上没有指定你当前正在使用的方法,我不能确定这不是你当前正在做的事情。

但是给定(162, 44, 38, 190)的边缘部分,您可以通过执行以下操作“重新创建”该向量:

代码语言:javascript
复制
rep(c('A','C','G','T'),times = c(162, 44, 38, 190))

然后您可以根据需要对其进行置换。

票数 3
EN

Stack Overflow用户

发布于 2015-03-31 21:04:29

很抱歉,@joran的答案不正确。他的公式正确地模拟了具有正确列合计的表,但OP要求模拟同时考虑行合计和列合计。W.M.Patefield在1981年提出了解决方案。算法AS159。一种在给定行和列总数的情况下生成r x c表的有效方法。应用统计学,30。91-97

Patefield的算法在基本R函数r2dtable()中实现。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6947583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档