从pairwise.t.test中提取t值

时间:2015-01-23 21:22:13

标签: r anova

我想知道我是否可以从pairwise.t.test函数中提取t值,因为它只报告p值。 在运行重复测量anova后,我使用了pairwise.t.test()进行多重比较,该anova报告了显着的主效应。

提前谢谢你!

2 个答案:

答案 0 :(得分:5)

当试图想出这样的东西时,有一些简单的事情要尝试(当然,不能保证它们可以在任何给定的实例中工作)。首先要看的是文档(?pairwise.t.test)并查看Value下列出的内容。在这种情况下,它只说:

  

班级对象" pairwise.htest"

要尝试的第二件事是获取示例对象并将其分配给变量,然后您可以运行str(obj)。以下使用文档中的示例:

attach(airquality)
Month <- factor(Month, labels = month.abb[5:9])
obj <- pairwise.t.test(Ozone, Month)
str(obj)
List of 4
 $ method         : chr "t tests with pooled SD"
 $ data.name      : chr "Ozone and Month"
 $ p.value        : num [1:4, 1:4] 1 0.000264 0.000195 1 NA ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:4] "Jun" "Jul" "Aug" "Sep"
  .. ..$ : chr [1:4] "May" "Jun" "Jul" "Aug"
 $ p.adjust.method: chr "holm"
 - attr(*, "class")= chr "pairwise.htest"

不幸的是,这并没有显示我们想要看到的内容(例如$ t.stat之类的内容)。

您的最后一个选择是查看代码。您可以通过在命令提示符下键入不带括号的函数调用来获取它:

> pairwise.t.test
function (x, g, p.adjust.method = p.adjust.methods, pool.sd = !paired, 
    paired = FALSE, alternative = c("two.sided", "less", "greater"), 
    ...) 
{
    <code omitted>
    if (pool.sd) {
        <code omitted>
        }
    }
    else {
        <code omitted>
        compare.levels <- function(i, j) {
            xi <- x[as.integer(g) == i]
            xj <- x[as.integer(g) == j]
            t.test(xi, xj, paired = paired, alternative = alternative, 
                ...)$p.value
        }
    }
    PVAL <- pairwise.table(compare.levels, levels(g), p.adjust.method)
    ans <- list(method = METHOD, data.name = DNAME, p.value = PVAL, 
        p.adjust.method = p.adjust.method)
    class(ans) <- "pairwise.htest"
    ans
}

关键部分是定义的函数compare.levels,它只保留底层t检验的p值。因此,对您的问题的直接答案是,您无法提取t统计量。

答案 1 :(得分:1)

您可以通过编写自定义函数从pairwise.t.test获取t值(以及dfs)。 See my previous post