Friedman 检验非常显着,但其事后比较 (SPSS) 不显着

机器算法验证 spss 多重比较 事后 邓恩测试 弗里德曼测试
2022-03-09 18:06:38

我在 SPSS 22 中对我的数据进行了非参数弗里德曼检验,并显着拒绝了空值。这意味着在个配对样本中(在我的例子中是 3 个),应该至少检测到两个分布不均的样本——一个往往大于另一个。因此,事后比较是合理的。k

但是,如果我进一步运行 SPSS内置的 post-Friedman post-hoc pairwise multiple comparisons,根据这个 SPSS note,它基于 Dunn (1964) 方法和 Bonferroni 校正,我得到所有对的非显着性. 综合弗里德曼显着性非常有说服力 ( ),但成对事后检验的结果都不显着,即使对于没有 Bonferroni 调整的数据也是如此。p=0.002

在此处输入图像描述 在此处输入图像描述

为什么会这样?我做错了还是SPSS?
什么是正确的弗里德曼事后成对检验?

示例数据集在此处作为 SPSS 数据提供,或如下打印:

V1  V2  V3
5   5   5
4   4   5
5   3   5
4   5   5
5   5   5
5   5   5
5   5   4
5   5   5
5   5   4
5   5   5
5   5   5
4   4   4
4   4   4
4   5   5
3   3   3
4   4   5
3   5   2
5   5   5
3   3   5
4   4   4
5   5   5
5   4   5
5   5   5
5   5   5
4   4   5
5   5   5
5   5   5
5   4   5
5   5   5
5   5   5
4   4   4
4   4   4
5   5   5
4   4   4
4   5   4
5   5   5
4   4   4
4   4   4
4   5   4
5   5   5
5   5   5
5   5   5
5   4   4
5   5   5
4   5   5
5   5   5
5   5   5
5   5   5
5   5   5
4   4   4
5   5   4
5   5   5
5   5   4
5   4   4
5   5   5
4   4   4
4   4   4
5   4   3
5   5   4
4   5   4
5   5   5
5   5   5
4   4   4
5   5   4
5   4   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   4   5
5   5   5
5   5   5
5   4   5
5   5   5
5   5   5
5   5   4
4   4   4
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   4   5
5   5   5
5   5   5
5   5   5
4   4   3
4   4   4
5   5   4
4   4   5
4   5   4
4   3   4
4   4   4
4   4   4
4   4   4
5   4   4
5   4   4
2   2   3
4   4   5
4   4   4
5   4   5
4   4   3
4   4   4
4   4   5
5   2   5
4   3   5
4   4   4
4   5   4
4   4   4
4   5   5
5   5   5
5   5   5
4   5   4
5   3   5
5   5   5
5   4   5
5   3   5
2   3   5
5   5   5
5   5   5
4   4   4
5   5   4
4   5   5
5   5   5
5   5   5
3   4   4
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   4
5   5   5
5   5   5
5   5   3
5   5   3
5   5   5
5   5   3
5   5   4
5   5   3
5   5   3
5   5   5
5   5   5
5   5   3
5   5   4
5   5   3
5   5   5
5   5   3
5   5   5
5   5   3
5   5   4
5   5   5
5   5   5
4   4   4
4   4   4
3   4   4
4   5   5
3   5   4
3   5   4
5   5   5
3   3   4
5   5   5
5   5   5
5   5   4
4   4   4
4   4   4
4   4   4
5   5   5
3   2   4
3   2   4
4   4   5
5   5   5
3   1   2
5   4   1
5   4   5
5   5   5
5   4   3
4   5   4
2   3   5
3   2   1
3   2   2
5   5   5
4   4   5
5   5   1
5   3   3
3   3   4
5   3   4
4   5   5
5   4   3
5   1   4
4   2   2
4   4   2
5   2   1
4   4   5
5   3   5
5   3   5
2   5   4
4   3   4
5   4   4
5   2   1
5   4   2
3   1   5
4   4   5
5   4   2
3   4   1
5   3   2
5   4   5
4   1   5
5   4   5
4   3   5
5   4   5
4   5   5
5   4   4
5   2   2
4   5   4
4   4   5
5   5   3
4   5   4
5   4   4
5   4   4
5   5   5
4   4   4
5   5   5
5   4   3
5   5   5
5   5   5
5   4   5
5   5   5
5   5   5
5   5   5
5   5   5
4   5   5
5   4   4
5   5   5
4   4   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
2   4   5
4   4   4
5   4   4
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
4   4   4
5   5   5
4   5   4
5   4   5
5   5   4
5   4   4
5   5   5
5   2   3
5   2   2
5   2   1
1   1   1
4   4   3
4   4   4
5   4   4
5   5   4
5   4   5
5   4   3
3   5   5
4   3   4
4   3   4
4   4   5
4   4   3
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
4   4   4
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
4   4   4
5   5   5
5   5   5
5   5   5
5   5   5
4   4   4
4   4   4
5   5   5
5   5   4
4   5   5
5   4   4
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
4   4   5
2   4   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
4   4   4
5   5   5
5   5   5
5   4   4
5   4   4
5   5   5
5   5   5
4   5   4
4   4   4
4   3   4
4   4   3
5   4   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   4   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
4   5   5
5   5   5
4   5   4
5   5   5
1   5   4
5   4   5
5   5   5
5   5   5
4   4   4
4   2   5
5   5   5
3   4   5
5   5   5
4   4   4
5   4   4
5   4   5
5   5   5
4   3   4
4   4   4
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
5   5   5
4个回答

SPSS 算法指出,在弗里德曼测试后进行成对比较时,他们使用邓恩(1964) 程序。我没有读过 Dunn 的原始论文,所以我不能说 SPSS 是否正确地遵循了它,但我只是按照上述 SPSS 算法文档对弗里德曼的测试及其事后成对比较进行了编程,我确认没有错误,我的结果与问题中显示的 SPSS 输出和 OP 相同。(在这里查看我的代码)。

根据邓恩的方法(如 SPSS 所执行的那样),检验统计量只是被比较的两个样本(变量)的平均值的差异,即在将值转换为案例内的等级后的差异。(这是弗里德曼测试计算留下的排名,即每个案例中 [在我们的示例数据中] 值的排名,并为平局分配平均排名。)统计的 St. 错误是它将测试统计量划分为插入 st 的正态分布以给出(Bonferroni 尚未校正的)2 面显着性。kk=3k(k+1)/(6n)Z

这个对比测试看起来很保守。它没有称赞这对V1-V2重要:Z=1.838, p=.066尽管综合弗里德曼是非常重要的:p=.002相比之下,对的符号测试V1-V2(无论您是在原始值上还是在弗里德曼左边的行列上执行它,它都是相同的)具有Z=3.575, p=.0004.

SPSS“邓恩方法”相当保守的一个原因是它的st。误差公式占所有变量,而不是 2 个变量。k

它不如 Sign 测试强大的另一个原因是它基于所有案例,包括那些有 ties 的案例,而 Sign 测试丢弃了有ties的案例;我们的数据中有很多相关的案例。例如在这个Q/A中观察到了权力问题以及在诸如 Sign 等测试中处理关系的问题。n

V1对于有关系的情况,V2以随机方式解开它们(通过添加负噪声或正噪声),并计算符号测试(当然现在基于所有例)。500 次这样的试验给了我,现在离观察到的 Dunn's 的保守主义道路越来越近了nmean Z=1.927Z=3.575Z=1.838

我对 SPSS 的“Dunn”成对比较不满意,因为它们太保守/太弱了。我们预计,如果综合测试很重要,事后测试将经常确认它,如果不是的话。在我们的示例中,即使 Bonferroni 未校正的 p 值也无法支持综合结论。

SPSS 在采用弗里德曼事后测试的“邓恩方法”(最初为 Kruskal-Wallis 提出;另见此Q/A)方面是否完全正确?我不能说,几乎不是多重比较方面的专家。我会鼓励知道它的人在此线程上发表评论或发布非常有用的答案。


PS 我很清楚,虽然弗里德曼检验可以看作是符号检验从 2 到个样本(变量)的扩展,但弗里德曼之后的成对事后检验不是也不应该完全是符号检验。也不是 Wilcoxon 配对样本检验。“Dunn 方法”(如果适用于配对样本情况)在事后看起来是合理的,因为它比较了弗里德曼获得的“水平”排名并反映了所有个样本,而无需进一步排名。然而,困扰我的是,在帖子的示例中,这种方法显得过于保守。kk


后期加法。对我来说,在弗里德曼在 SPSS 中的测试之后实施的邓恩方法是不正确的。它不会以与父综合测试 (Friedman) 相同的方式调整关系。实际上,它根本不会针对关系进行调整,而应该。(在上面的当前答案中涉及到关系处理的问题。)

弗里德曼检验统计量的公式(在SPSS 算法中解释)为

χ2=[12/(nk(k+1))]kC23n(k+1)1ΣT/[nk(k21)]

公式的分母包含平局的调整。如果,则数量是两个变量相等(并列)的情况的比例。k=2ΣT/[nk(k21)]

考虑使用我们的变量V1V2( ) 执行的弗里德曼检验。有关系的病例比例为,检验统计量具有显着性但是按照 SPSS 公式计算的“邓恩”比较将是k=2287/400=.717513.460, df=1p=.00024

Sample1  Sample2  MeanRank1 MeanRank2 TestStat  StError   Z    Sig2side  AdjSig
  V1       V2      1.54875   1.45125   .0975     .0500  1.9500  .05118  .05118

无关紧要。为什么?没有对领带进行适当的(弗里德曼风格)调整。

在数据中只有样本的情况下,正确的事后成对比较测试必须给出与综合测试相同的结果(统计量和 p 值)——它实际上是证明事后测试对应的属性(是同构)到父综合测试。Kruskal-Wallis 检验和 Dunn 检验确实如此 - 只需按照 SPSS 算法对其进行编程,并使用两个独立组进行测试KW 和 Dunn都会得到相同的结果。但我们看到,弗里德曼检验与“邓恩方法”后弗里德曼比较检验之间的关系不存在类似的等价性。k=2V1V2p=.0153

结论在弗里德曼检验有缺陷后,SPSS(版本 22 及更早版本)正在执行事后多重比较检验。也许没有关系时是正确的,但我不知道。事后检验并没有像弗里德曼那样处理关系(虽然它应该这样做)。关于圣的公式,我无话可说。错误,sqrt[k*(k+1)/(6n)]他们正在使用:它来自离散均匀分布,但他们没有写出如何;这是正确的吗?要么“邓恩检验方法”不适用于 SPSS,要么邓恩检验根本不能适应弗里德曼。

我(通过ResearchGate 问题)在 PMCMR 包的小插图中发现了很多好东西(现在不赞成使用),包括Nemenyi (1963)Conover (1999)PMCMRplus的事后测试小插图(引用Conover,1999 年 , Quade 测试比 Friedman 测试更强大,并且在这些包中也实施了针对该测试的事后测试。它的成对比较似乎给出了与综合测试一致的更令人满意的结果。k<5

还要注意下面引用的弗里德曼测试的一些注意事项。按照这个逻辑,我一直在使用常规的旧 Tukey post hocs 对秩转换数据进行重复测量方差分析。这在 R 代码方面需要做更多的工作,但在 SPSS 中应该很容易......只需确保在一个大向量上进行秩转换,该向量同时汇集所有重复测量,而不是独立地对每个测量进行秩转换(这给我的一个合作者带来了问题)!在 Niksr 的案例中,这种方法的结果似乎也令人满意(见下文)。

引自 T. Baguley 的博客,当心弗里德曼测试!

弗里德曼测试的排名仅取决于每个参与者的分数顺序——他们完全忽略了参与者之间的差异。这与保留参与者之间差异相对大小的信息的 Wilcoxon 测试有很大不同。Zimmerman 和 Zumbo (1993)...解释说弗里德曼测试...不是真正的 ANOVA 形式,而是符号测试的扩展...

检验或 Wilcoxon 符号秩检验,符号检验的功效往往较低。实际上,弗里德曼检验相对于方差分析的渐近相对效率为,其中是重复测量的次数(参见 Zimmerman 和 Zumbo,1993 年)。因此,J = 3 时约为 0.72,时约为0.76t.955J/(J+1)JJ=3J=4,这意味着当满足假设时,相对于 ANOVA 的功率会受到相当大的打击。这是一个大样本限制,但小样本的功效也应该大大降低,因为符号检验和弗里德曼检验实际上会丢弃信息。符号检验的额外稳健性有时可能证明其应用是合理的(因为它在重尾分布方面可能优于 Wilcoxon),但对于弗里德曼检验似乎并非如此。因此,在单向重复测量 ANOVA 不合适的情况下,秩变换后跟 ANOVA 将提供比弗里德曼检验更稳健的检验,具有更大的统计功效。

果然,秩转换的 RMANOVA 确实产生了比 Niksr 案例中的弗里德曼检验至于什么是弗里德曼测试的合适的事后,我仍然想知道自己,所以请原谅这里缺乏明确的答案,如果你能帮助整理选择,请自由评论或编辑——似乎有很多. 我下面的代码演示了Niksr 数据中使用默认值进行值调整的五个选项的结果。请注意,默认值因测试而异,这可能会使它们更难比较。如果相同的调整在此答案中更有用,我也愿意对此提出建议/编辑。pPMCMRplusp

R代码

library(foreign);library(PCMCRplus);library(car);library(lme4);library(multcomp)
CVd8a=read.spss(file.choose(),use.value.labels=T,max.value.labels=Inf,to.data.frame=T)
quade.test(as.matrix(CVd8a))                                  #this is in the stats package
quadeAllPairsTest(CVd8a)                                      #this requires PMCMRplus

CVd8L=stack(CVd8a);CVd8L$PID=rep(1:nrow(CVd8a),ncol(CVd8a))   #long format for RMANOVA in R
Anova(lmer(rank(values,'keep')~ind+(1|PID),CVd8L),3,'F')  #1-way RMANOVA, type 3 SS, F test
summary(glht(lmer(rank(values,'keep')~ind+(1|PID),CVd8L),mcp(ind='Tukey')))
cld(lsmeans(lmer(rank(values,'keep')~ind+(1|PID),CVd8L),'ind'))     #compact letter display

# Various Post hocs explicitly intended to follow the Friedman test:
frdAllPairsNemenyiTest(CVd8a)
frdAllPairsConoverTest(CVd8a)
frdAllPairsMillerTest(CVd8a)
frdAllPairsSiegelTest(CVd8a)
frdAllPairsExactTest(CVd8a)

输出(删节)

Quade test
Quade F = 6.5769, num df = 2, denom df = 798, p-value = 0.001469

Pairwise comparisons using Quade's test with TDist approximation
   V1     V2    
V2 0.0034 -     
V3 0.0057 0.7832
P value adjustment method: holm

Analysis of Deviance Table (Type III Wald F tests with Kenward-Roger df)
                    F Df Df.res    Pr(>F)    
(Intercept) 1894.7708  1 830.45 < 2.2e-16 ***
ind            6.4579  2 798.00  0.001651 ** 

         Simultaneous Tests for General Linear Hypotheses
Multiple Comparisons of Means: Tukey Contrasts
Linear Hypotheses:
             Estimate Std. Error z value Pr(>|z|)   
V2 - V1 == 0  -49.311     14.934  -3.302  0.00292 **
V3 - V1 == 0  -43.006     14.934  -2.880  0.01127 * 
V3 - V2 == 0    6.305     14.934   0.422  0.90644   
(Adjusted p values reported -- single-step method)

 ind   lsmean       SE     df lower.CL upper.CL .group
 V2  581.9612 14.50235 830.45 553.4957 610.4268  1    
 V3  588.2662 14.50235 830.45 559.8007 616.7318  1    
 V1  631.2725 14.50235 830.45 602.8069 659.7381   2   
Degrees-of-freedom method: satterthwaite 
Results are given on the rank (not the response) scale. 
Confidence level used: 0.95 
P value adjustment: tukey method for comparing a family of 3 estimates 
significance level used: alpha = 0.05 

Nemenyi-Wilcoxon-Wilcox all-pairs test for a two-way balanced complete block design
   V1   V2  
V2 0.16 -   
V3 0.24 0.97
P value adjustment method: single-step

Conover's all-pairs test for a two-way balanced complete block design
   V1     V2    
V2 0.0039 -     
V3 0.0141 0.9155
P value adjustment method: single-step

Miller / Bortz et al. / Wike all-pairs test for a two-way balanced complete block design
   V1   V2  
V2 0.18 -   
V3 0.27 0.97
P value adjustment method: none

Siegel-Castellan all-pairs test for a two-way balanced complete block design
   V1   V2  
V2 0.20 -   
V3 0.22 0.82
P value adjustment method: holm

Eisinga, Heskes, Pelzer & Te Grotenhuis all-pairs test with exact p-values for a two-way
balanced complete block design
   V1   V2  
V2 0.21 -   
V3 0.22 0.82
P value adjustment method: holm

我使用dunn.testR 包对您的数据进行了 Dunn 测试,结果如下:

> library(foreign, pos=14)

> Dataset <- read.spss("/Users/Friedman_Sample.sav", use.value.labels=TRUE, 
+   max.value.labels=Inf, to.data.frame=TRUE)

> colnames(Dataset) <- tolower(colnames(Dataset))

> library(relimp, pos=15)

> showData(Dataset, placement='-20+200', font=getRcmdr('logFont'), maxwidth=80, 
+   maxheight=30, suppress.X11.warnings=FALSE)

> local({
+   .Responses <- na.omit(with(Dataset, cbind(v1, v2, v3)))
+   cat("\nMedians:\n") 
+   print(apply(.Responses, 2, median)) 
+   friedman.test(.Responses)
+ })

Medians:
v1 v2 v3 
 5  5  5 

    Friedman rank sum test

data:  .Responses
Friedman chi-squared = 12.117, df = 2, p-value = 0.002338


> dunn.test(Dataset)
  Kruskal-Wallis rank sum test

data: Dataset and group
Kruskal-Wallis chi-squared = 6.8206, df = 2, p-value = 0.03


                        Comparison of Dataset by group                         
                                (No adjustment)                                
Col Mean-|
Row Mean |          1          2
---------+----------------------
       2 |  -2.399474
         |     0.0082
         |
       3 |  -2.092674   0.306799
         |     0.0182     0.3795

由于问题已经过去了一年,我不确定您是否解决了这个问题。最近我遇到了同样的困惑,我在 SPSS 中进行弗里德曼测试后得到了显着的结果,但我不知道意义从何而来,而且似乎 spss 无法进行 Dunnt 的后测。

我查看了其他资源和统计信息,我的回答是:首先,不要担心你之前的结果。弗里德曼的假设不是后测的假设;其次,spss 无法进行 Dunnt 后测,但我们可以使用 Wilcoxon 符号秩,限制是您应该将样本配对并使用 bofferonie 校正来降低类型 1 错误。