如何获得 Games-Howell 检验的单尾 p 值(由大多数 R 函数计算)?

How do I obtain a one-tailed p-value for Games-Howell's test (as calculated by most R functions)?

提问人:Sephirothmn 提问时间:11/11/2023 最后编辑:Sephirothmn 更新时间:11/11/2023 访问量:18

问:

我试图理解:

1 - 为什么 p 值的计算方式与 Games Howell 检验中的计算方式相同,并且

2 - 如何修改 R 函数以获得检验的单侧(替代:更大)p 值

在计算测试的 p 值时,我能找到的大多数 R 函数(此处和此处)都是这样计算的

p <- ptukey(t * sqrt(2), groups, df, lower.tail = FALSE)

跟:

  • t:韦尔奇 t 统计量的绝对值
  • groups:被比较的组数
  • df:自由度,使用韦尔奇校正估计
  • sqrt(2): q=t*sqrt(2),其中 q 是 Tukey 检验

我找不到一本手册或一篇论文来解释该 p 值背后的数学原理。例如,为什么这个双侧检验的 p 值是这样计算的,而不是这样计算的:

p <- 2 * ptukey(t * sqrt(2), groups, df, lower.tail = FALSE)

在双侧检验中,p 值不应该是我在指定的 Tukey 分布中看到比 q (t*sqrt(2)) 更极端的值的概率吗?我希望通过找到获得比 |t|*sqrt(2) 更极端的值的概率并将该值乘以 2 来完成此计算,因为 Tukey 的分布是对称的。 我是否太习惯于正态分布,错过了一些重要的东西?

此外,如果有人能为我指出正确的方向来修改以下 R 函数以计算 Games-Howell 测试的“单侧”版本,我将不胜感激(具体来说,我对实现替代“B 组的均值> A 组的均值”感兴趣):

(功能摘自:https://rpubs.com/aaronsc32/games-howell-test )

games.howell <- function(grp, obs) {
  
  #Create combinations
  combs <- combn(unique(grp), 2)
  
  # Statistics that will be used throughout the calculations:
  # n = sample size of each group
  # groups = number of groups in data
  # Mean = means of each group sample
  # std = variance of each group sample
  n <- tapply(obs, grp, length)
  groups <- length(tapply(obs, grp, length))
  Mean <- tapply(obs, grp, mean)
  std <- tapply(obs, grp, var)
  
  statistics <- lapply(1:ncol(combs), function(x) {
    
    mean.diff <- Mean[combs[2,x]] - Mean[combs[1,x]]
    
    #t-values
    t <- abs(Mean[combs[1,x]] - Mean[combs[2,x]]) / sqrt((std[combs[1,x]] / n[combs[1,x]]) + (std[combs[2,x]] / n[combs[2,x]]))
    
    # Degrees of Freedom
    df <- (std[combs[1,x]] / n[combs[1,x]] + std[combs[2,x]] / n[combs[2,x]])^2 / # Numerator Degrees of Freedom
            ((std[combs[1,x]] / n[combs[1,x]])^2 / (n[combs[1,x]] - 1) + # Part 1 of Denominator Degrees of Freedom 
              (std[combs[2,x]] / n[combs[2,x]])^2 / (n[combs[2,x]] - 1)) # Part 2 of Denominator Degrees of Freedom
    
    #p-values
    p <- ptukey(t * sqrt(2), groups, df, lower.tail = FALSE)
    
    # Sigma standard error
    se <- sqrt(0.5 * (std[combs[1,x]] / n[combs[1,x]] + std[combs[2,x]] / n[combs[2,x]]))
          
    # Upper Confidence Limit
    upper.conf <- lapply(1:ncol(combs), function(x) {
      mean.diff + qtukey(p = 0.95, nmeans = groups, df = df) * se
    })[[1]]
    
    # Lower Confidence Limit
    lower.conf <- lapply(1:ncol(combs), function(x) {
      mean.diff - qtukey(p = 0.95, nmeans = groups, df = df) * se
    })[[1]]
    
    # Group Combinations
    grp.comb <- paste(combs[1,x], ':', combs[2,x])
    
    # Collect all statistics into list
    stats <- list(grp.comb, mean.diff, se, t, df, p, upper.conf, lower.conf)
  })
  
  # Unlist statistics collected earlier
  stats.unlisted <- lapply(statistics, function(x) {
    unlist(x)
  })
  
  # Create dataframe from flattened list
  results <- data.frame(matrix(unlist(stats.unlisted), nrow = length(stats.unlisted), byrow=TRUE))
  
  # Select columns set as factors that should be numeric and change with as.numeric
  results[c(2, 3:ncol(results))] <- round(as.numeric(as.matrix(results[c(2, 3:ncol(results))])), digits = 3)
  
  # Rename data frame columns
  colnames(results) <- c('groups', 'Mean Difference', 'Standard Error', 't', 'df', 'p', 'upper limit', 'lower limit')

  return(results)
}

任何帮助或建议都非常感谢。

我查看了 Games-Howell 的原始论文,但他们只谈到了双尾测试,并说测试应该按照我上面引用的 R 函数中的实现来执行,没有进一步的理由或解释(对于统计学家来说,这可能很明显,这是正确的方法,不幸的是,这对我来说并不明显)。

r 数学 统计检验

评论


答: 暂无答案