【问题标题】:Calculate Fisher's exact test p-value in dataframe rows计算数据框行中的 Fisher 精确检验 p 值
【发布时间】:2016-07-06 16:36:12
【问题描述】:

我在一个数据框中有一个包含 1700 个样本的列表,其中每一行代表每个助手在来自不同盒子的随机样本中计数的彩色项目的数量。有两种可用颜色和两个人计算项目,因此可以轻松创建 2x2 列联表。

df
Box-ID  1_Red  1_Blue  2_Red  2_Blue
1       1075   918     29     26
2       903    1076    135    144

我想知道如何将每一行视为列联表(向量或矩阵),以执行卡方检验(如 Fisher 或 Barnard)并生成具有 p 值的第六列。 这是我迄今为止尝试过的,但我不确定它是否正确

df$p-value = chisq.test(t(matrix(c(df[,1:4]), nrow=2)))$p.value 

【问题讨论】:

  • 首先,R 中也有?fisher.test。您需要将代码放在apply 语句中,以便它作用于每一行,例如apply(df[-1], 1, function(x) .... ),其中x 是每行中可以放入矩阵的4 个数字。
  • 即使使用 apply() 或 by(),2x2 矩阵的生成仍然是个问题。

标签: r chi-squared


【解决方案1】:

我认为你可以这样做

df$p_value <- apply(df,1,function(x) fisher.test(matrix(x[-1],nrow=2))$p.value)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多