【问题标题】:Using R to find several fisher's exact test p value in sequence使用R依次找到几个Fisher精确检验p值
【发布时间】:2014-07-09 05:19:51
【问题描述】:

我有超过 5000 个数据集,我想找到在 R 中使用 Fisher 精确测试的 p 值。它们保存在 csv 文件中,看起来像这样;

100 5000 400 500
250 400  600 400


... ... ... ...

其中每一行代表一个列联表。 现在,我不得不一次做一张应急表,这将花费我很长时间。

到目前为止我使用了这个代码 alltables

然后我收到错误“fisher.test(matrix(x, nr = 2)) 中的错误:'x' 必须至少有 2 行和列”

【问题讨论】:

  • 您能否分享您迄今为止编写的任何代码来解决这个问题以及您遇到的问题?
  • 当然。我使用`alltables
  • 太好了——请编辑您的问题以包含此重要信息(您运行的代码和错误)。理想情况下,您还应该包含一个可重现的小示例来演示您的问题(请记住,其他人无权访问 untitled1.csv)。

标签: r p-value


【解决方案1】:

您可以执行以下操作。但是由于您没有真正给出可重现的示例,因此我首先创建了一些玩具数据:

set.seed(1)
print(dat <- matrix(rbinom(n = 40, size = 1000, prob = 0.5), ncol = 4))
#      [,1] [,2] [,3] [,4]
# [1,]  500  526  494  505
# [2,]  497  500  512  493
# [3,]  480  488  500  512
# [4,]  464  513  498  497
# [5,]  527  503  518  508
# [6,]  504  517  511  483
# [7,]  519  493  522  471
# [8,]  486  490  497  507
# [9,]  492  499  475  509
#[10,]  530  486  488  501

# Function to be applied row-wise
rowFisher <- function(x, ...) {
  return(fisher.test(matrix(x, nrow = 2, ...))$p.value)
}

# Apply the function row-wise
apply(dat, 1, rowFisher)
# [1] 0.7557946 0.6548804 0.9641424 0.2603181 0.7912598 0.3729036 0.5916955 0.9283668 0.5585135
#[10] 0.2111895

编辑我没有看到你的评论。但这应该可以解决问题。如果没有,您的数据中可能有一些 NAs 或其他非数字值。

【讨论】:

  • 对粗略的数据感到抱歉,感谢您的输入。我能够纠正原始代码中的错误。我需要使用“read.csv”而不是“read.table”将我的数据读入 R。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 2017-07-29
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多