You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中运行Fisher Exact test仅返回p值不输出odds ratio问题咨询

R中Fisher精确检验无odds ratio返回的问题说明

1. 你的代码存在参数传递错误

R基础包的fisher.test()有两种常用传入方式:

  • 直接传入一个行列对应交叉分类的计数列联表(单参数传入)
  • 传入两个长度相同的因子向量,函数会自动交叉计数生成列联表(双参数传入)

你现有代码fisher.test(dt[,2:3], dt$Fish group)的参数逻辑完全错误:你把两列的计数矩阵当成了第一个分类向量,分组向量当成了第二个参数,属于用法错误,只是刚好计算逻辑匹配到了R×C表的Fisher检验,才返回了p值。

正确用法如下:

# 先将数据转换为行是鱼类组织、列是富集/耗竭的计数列联表
cont_table <- as.matrix(dt[, 2:3])
rownames(cont_table) <- dt$`Fish group`

# 直接传入列联表做Fisher精确检验
fisher_result <- fisher.test(cont_table)

2. 无odds ratio返回是正常现象

fisher.test()仅在处理2×2列联表时,会默认计算并返回odds ratio及其置信区间。你当前的列联表是3行(brain/eyes/muscle)2列(depleted/enriched)的R×C交叉表,不属于2×2结构,因此不会返回odds ratio相关参数。

如果需要获取不同组两两比较的odds ratio,可以将总表拆分为多个2×2子表分别检验,示例如下:

# 示例:比较brain组和eyes组的富集差异
sub_table <- cont_table[c("brain", "eyes"), ]
sub_fisher_result <- fisher.test(sub_table)
# 此时sub_fisher_result中会包含odds ratio、置信区间等参数

内容的提问来源于stack exchange,提问作者Nadiine El Nino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:54:04