Post Hoc Test

本文介绍了如何使用R语言进行PostHoc事后比较分析,重点讲解了glht函数的应用及多重比较校正方法的选择,并对比了不同方法如TukeyHSD与glht之间的联系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最初从图书馆的一本生物统计书里大概明白了post hoc,后来时间久了又不大记得了,今天在google上搜到一篇关于post hoc的文章,看完感觉挺有收获的。以防此链接日后失效,先把它截屏拷贝过来:

 

用R做事后比较的时候,我用了一个glht函数(最初是参考这篇博文知道glht这个函数):

#方差分析
fit=aov(total[,j]~age+edu+gender+group,data=total)
  Fangcha=summary(fit)
  P$P.Fangcha[i,j]= Fangcha[[1]]$`Pr(>F)`[4]
#Post Hoc
  multicomp=summary(glht(fit,linfct=mcp(group="Tukey")),test = adjusted("fdr"))
  #multicomp=summary(glht(fit,linfct=mcp(group="Tukey")),test = adjusted("none"))
  P$P.iaeiu[i,j]=multicomp$test$pvalues[1]
  P$P.coneiu[i,j]=multicomp$test$pvalues[2]
  P$P.conia[i,j]=multicomp$test$pvalues[3]

#对glht函数的结果summary之后,得到如下结果:
> summary(glht(fit,linfct=mcp(group="Tukey")),test = adjusted("fdr"))

	 Simultaneous Tests for General Linear Hypotheses

Multiple Comparisons of Means: Tukey Contrasts


Fit: aov(formula = total[, j] ~ age + edu + gender + group, data = total)

输出结果的标题显示它使用了一个Simultaneous(同步的) Tests,所以我又查了一下Simultaneous Tests是什么:

一篇文章告诉我:

“An approach to such methods, apparently originally due to Tukey [27], is to test each component hypothesis by comparing its statistic with the αα level critical value of the statistic for the overall hypothesis. This is called a Simultaneous Test Procedure (STP for short) as all hypotheses may be tested simultaneously and without reference to one another. An STP involves no stepwise testing of the kind employed by some other methods of multiple comparisons for means, in which subsets are tested for equality only if they are contained in sets which have already been found significant. (See [3], [4], [10], [18]). ”

后来又查到一些,我现在觉得Simultaneous Tests就是指同步检验(同时进行多个检验),而进行同步检验的时候会遇到多重比较的问题,再用glht函数的时候,通过设定test=adjusted(“”)来指定多重比较校正的方法,glht函数默认的是one-step方法,我这里用的是fdr的方法。在前文中提到post hoc常用的一个方法是Tukey HSD,那么用glht的one-step与Tukey HSD有什么联系呢?有个人是这么说的

library(lsmeans)
lsmeans(m1, pairwise~Name.Origin, adjust="tukey") 

library(multcomp)
summary(glht(m1, lsm(pairwise~Name.Origin)))

simple.glht(mod, effect, corr = c("Tukey","Bonferroni","Fisher"),
	level = 0.95, ...)


“If you specify adjust = "mvt" in the lsmeans call, you'll get exactly the same results as the glht call (except for minor differences due to the fact that the computations are simulation-based). The difference would come if you summarize the tests in the glht object with some option other than the one-step method (which is the default). The one-step method protects the error rate for simultaneous confidence intervals, which is stronger (and hence more conservative) than the step-down methods. The mvt method is the exact one-step method when the distributional assumptions hold.

Also, in a nicely balanced experiment with homogeneous errors, there is no difference between the Tukey method and the mvt method. That is, the Tukey method is the mvt method for the particular covariance structure encountered in such a balanced design.”

此外,我意外发现可以直接用 TukeyHSD(model) 进行posthoc.

The Handbook for Biological Statistics中更全面的了解到用R做post hoc的一些方法(最初看这些方法不是太懂,配合前文截屏拷贝的那篇文章看会更明白一些)

Tukey and Least Significant Difference mean separation tests (pairwise comparisons) 

Tukey and other multiple comparison tests can be performed with a handful of functions.  The functions TukeyHSDHSD.test, and LSD.test are probably not appropriate for cases where there are unbalanced data or unequal variances among levels of the factor, though TukeyHSD does make an adjustment for mildly unbalanced data.  It is my understanding that the multcomp and lsmeans packages are more appropriate for unbalanced data.  Another alternative is the DTK package that performs mean separation tests on data with unequal sample sizes and no assumption of equal variances.

 

 

<think>嗯,用户这次想了解统计学中的"post-hoc分析"概念,结合之前的站内引用来看,引用[1]提到了方差分析相关的分布知识,正好是post-hoc分析的理论基础之一。用户可能正在学习统计方法,或者遇到了需要多重比较的实际问题。从ta特意强调"统计学或数据分析"这个范围来看,可能已经查过基础定义,现在需要更落地的解释。我注意到上次引用[3]里提到"数据验证的分步方法",这和事后分析的流程逻辑很契合。准备由浅入深组织回答:先明确术语的定义场景,重点区分它与预先计划好的假设检验的本质不同;然后引入理论背景时,可自然关联用户引用[1]的正态分布和F分布;针对实操需求,应该列出具体方法类型,尤其要强调校正p值这个核心;风险部分提醒p值操控问题很重要,毕竟引用[3]特别指出过数据清洗和验证的必要性;最后补充可视化呈现的建议,这样用户就能获得从原理到实践的完整闭环。在相关性问题的设计上,要覆盖用户可能的后续需求:计算工具推荐对应ta提过R包(引用[2]),多重比较校正方法选最主流的三种,学科应用场景则聚焦临床和生物领域——这和用户提及的peakC包生物信息学背景呼应。如果用户有生物数据需求,后续还可以展开谈图基法与RNA-seq分析的关系。</think> 好的,我们来详细解释一下统计学和数据分析中的**事后检验 (Post-hoc Analysis)** 的概念和用法。 **核心概念:** "Post-hoc" 是拉丁语短语 "post hoc ergo propter hoc" 的一部分,直译为 "在此之后,因此之故"。但在统计学背景下,**事后检验 (Post-hoc testing)** 专门指的是**在发现一个显著的全局性结果(通常是拒绝了一个零假设)之后,为了探究该结果的具体模式、差异的来源或组别之间的具体比较而进行的进一步统计分析。** 可以理解为:**先知道有显著差异这个"果",再去找究竟是哪些组之间产生了差异这个"因"。** **主要用途与场景:** 1. **分析多组差异的来源:** 最常见于**方差分析 (ANOVA)** 之后。 * 例如:你进行了一项单因素ANOVA,比较三种不同教学方法(A, B, C)对学生成绩的影响。ANOVA结果显示,至少有两种教学方法的效果存在显著差异(p < 0.05),这是一个全局性的结果。 * **问题:** 那么究竟是哪些组之间有显著差异?是A vs B? A vs C? 还是B vs C?ANOVA本身无法告诉我们答案。 * **解决:** 这时就需要进行**事后检验**(如Tukey's HSD, Scheffé, LSD, Dunnett等),对**所有可能的组对组合进行两两比较**(A-B, A-C, B-C),精确找出具体差异出现在哪组之间,并给出调整后的p值。 2. **探索数据关系:** 在研究开始时可能没有预设具体的比较组对,或者在数据分析过程中观察到一些意外的模式或结果。事后检验可用于系统地探索这些模式是否具有统计学意义。 * 例如:分析用户对不同产品特性的偏好,初始模型可能显示整体偏好存在差异。事后分析可以探索不同用户群体(如新用户vs老用户)对特性的偏好差异。 3. **特定假设的比较:** 当研究中涉及到比较一个控制组与多个实验组时(单因素ANOVA的常见情况),或者需要比较一个特定的重要组与其他组的差异(如临床试验中的对照药),事后检验能够精确进行这些特定的成对比较(如Dunnett's test)。 **为什么需要事后检验?(关键:多重比较问题)** * 当对一个数据集进行多次统计检验时,**I类错误(假阳性)的风险会显著增加**。例如,进行3次独立的t检验(A-B, A-C, B-C),每次检验设定显著性水平α=0.05,那么犯至少一次I类错误的总概率大约是 `1 - (1-0.05)^3 ≈ 0.14`,这远高于预设的0.05。 * **事后检验方法的核心目标就是控制这种"膨胀的"整体错误率(Family-wise Error Rate, FWER)或者错误发现率(False Discovery Rate, FDR)。** **常用的Post-hoc检验方法:** * **方差分析事后检验 (用于比较组均数):** * **Tukey's HSD (Honestly Significant Difference):** 非常常用且稳健,适合所有组的两两比较。控制FWER。 * **Scheffé's Method:** 最保守的方法之一,允许进行任意的复杂比较(不仅仅是成对),但检测力较低。控制FWER。 * **LSD (Least Significant Difference):** 最不保守的方法,只在保护了整体ANOVA显著性的前提下使用(即先用ANOVA挡一下,显著了再用LSD),否则FWER失控风险高。类似未校正的成对t检验。 * **Dunnett's Test:** 专用于比较多个实验组分别与一个单独的控制组的差异。比Tukey更高效(检测力更高)。控制FWER。 * **Bonferroni Correction:** 最通用(可用于任何多重比较),最保守的方法之一。将单次检验的α设定为`α/n`(n为比较次数)。控制FWER。 * **Benjamini-Hochberg Procedure:** 控制的是**错误发现率 (FDR)**,而不是更严格的FWER。当比较次数非常多时(如基因组学),通常比控制FWER的方法(如Bonferroni)检测力更高,接受一定比例的假阳性来换取更多的发现。 * **非参数事后检验:** 当数据不满足方差分析的正态性或方差齐性假设时使用。 * **Dunn's Test (使用Bonferroni或其他校正):** 常用在Kruskal-Wallis检验(非参数版ANOVA)之后。 * **Steel-Dwass Test:** Kruskal-Wallis后的非参数多重比较方法。 **使用方法要点:** 1. **前提条件:** 只有在初始的全局性检验(如ANOVA,卡方检验中的全局卡方)达到预设的显著性水平时,才有必要进行事后检验。如果全局检验不显著,强行做两两比较会导致FWER/FDR严重失控。 2. **方法选择:** 根据研究目的(是否所有两两比较?是否只与控制组比?)、对错误率的控制要求(严格FWER? 宽松FDR?)、样本大小和数据性质(参数 vs 非参数)来选择合适的方法。Tukey HSD通常是ANOVA后探索两两比较的首选平衡选择。 3. **报告结果:** 报告结果时需要清晰说明使用了哪种post-hoc方法以及相应的**校正后的p值 (Adjusted p-value)**。通常会用字母标记法或差异字母在图表中显示显著的组间差异。 4. **解释差异:** 结合效应量(如Cohen's d, η²)来解读发现的显著差异,不能仅依赖p值。 **总结:** 事后检验是统计学和数据分析中一个重要的**探索性分析工具**,特别是在**多组比较**的情境下。它的核心价值在于: * **找出具体差异:** 揭示显著全局结果背后的具体模式。 * **控制多重性:** 通过调整显著性水平或p值,确保发现可靠性的同时应对多重假设检验带来的风险。 理解何时需要使用事后检验、如何选择合适的检验方法以及如何正确解释其结果,对于科学研究和数据分析的严谨性至关重要[^1]。 **
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值