普通网友 2023-09-27 10:48 采纳率: 0%
浏览 22

table1中Fisher检验P值问题

在做Fisher检验的时候出现报错

Error in fisher.test(table(y, g)) :
FEXACT[f3xact()] error: hash key 3e+09 > INT_MAX, kyy=2863, it[i (= nco = 4)]= 474.
Rather set 'simulate.p.value=TRUE'

代码如下,请问如何解决


```r
pvalue <- function(x, ...){
  y <- unlist(x)
  g <- factor(rep(1:length(x),times=sapply(x,length)))
  if (is.numeric(y)){
    p <- t.test(y ~ g)$p.value
  }else{
    p <- fisher.test(table(y,g))$p.value
  }
  c("",sub("<","&lt;",format.pval(p,digits = 3,eps = 0.001)))
}

table1(~factor(data$Sex)
       +factor(data$age_classification)
       +factor(data$Race)
       +factor(data$primary_site)
       +factor(data$histology)
       +factor(data$tumor_size)
       +factor(data$Grade)
       +factor(data$AJCC.T)
       +factor(data$AJCC.N)
       +factor(data$AJCC.M)
       +factor(data$AJCC.Stage)|data$dataset*data$lymph.node.classification,
       data=data,overall=F,extra.col=list("P-value"=pvalue),topclass="Rtable1-zebra")


```

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-09-27 22:08
    关注

    该回复引自免费微信小程序-皆我百晓生:


    根据报错信息,你可以尝试在fisher.test函数中设置simulate.p.value参数为TRUE来解决问题。修改代码如下:

    pvalue <- function(x, ...){
      y <- unlist(x)
      g <- factor(rep(1:length(x),times=sapply(x,length)))
      if (is.numeric(y)){
        p <- t.test(y ~ g)$p.value
      }else{
        p <- fisher.test(table(y,g), simulate.p.value=TRUE)$p.value
      }
      c('',sub('<','&lt;',format.pval(p,digits = 3,eps = 0.001)))
    }
    
    table1(~factor(data$Sex)
           +factor(data$age_classification)
           +factor(data$Race)
           +factor(data$primary_site)
           +factor(data$histology)
           +factor(data$tumor_size)
           +factor(data$Grade)
           +factor(data$AJCC.T)
           +factor(data$AJCC.N)
           +factor(data$AJCC.M)
           +factor(data$AJCC.Stage)|data$dataset*data$lymph.node.classification,
           data=data,overall=F,extra.col=list('P-value'=pvalue),topclass='Rtable1-zebra')
    

    通过设置simulate.p.value=TRUE,可以使用模拟方法来计算Fisher检验的P值,从而避免报错。希望这个解决方案对你有帮助!

    评论

报告相同问题?

问题事件

  • 创建了问题 9月27日