目录
两种研究问题辨析:中心落差 vs 波动相关
实验类学科的专业统计课,如果要推选一个最重要(没有之一)的公式,我在下面这个回答中的建议为—— =+=
方差分析的基本思想是什么?319 赞同 · 5 评论回答个案取值在公式中分解为中心趋势(样本均值Mean)与离中趋势[1](离差Deviation)。下标取值1 ~ N,样本向量正交分解为(所有坐标相等的)均值向量+垂直于均值向量的离差向量,后者的长度平方即 。向量分解对应的长度平方分解即勾股定理 =+,写成向量的坐标平方和为=+=+。
整个心理统计课程围绕着「中心趋势」和「波动性」展开。
中心趋势的对比:多数时候,实验学科更关注中心趋势对比,比如独立样本均值比较、相关变量均值比较,后者的特例是单个样本(单个变量)均值与一列常数的比较。方差分析中,统计量分子的波动性的大小,究其本源是为了研究独立多组(或者关联多变量)的均值对比。波动性的相关:与均值比较在研究目的上完全不同,在研究相关系数、回归系数的时候只涉及离差,各变量加减某常数不影响结果。比如,=;单自变量回归情形=。一对二分变量能作哪些研究——均值比较与相关研究的似与非
SPSS中,独立样本数据体现为一列被试间因素标记分组的自变量、一列研究的因变量。假如自变量为二分变量,即独立两样本。假如研究的因变量也是二分变量,前文指出,二分变量的均值就是取到1值的百分比,独立两样本的百分比对比即独立两样本均值比较,SPSS常用的操作界面是快捷键 ⌥ A ▶ E ▶ C ▶ ⌥ S ▶ ...,在下图的弹窗中选绿色箭头指向的Chi-square统计量。下图蓝色选项可输出两列二分变量的Pearson相关系数,恰好还有:。
绿:二分变量独立两组均值比较;蓝:二分变量相关;红:二分变量关联两组均值比较熟悉点二列相关的知友可能了解,独立两样本方差一致前提下均值比较与点二列相关结果完全一致,。SPSS的Pearson相关系数的显著性结果也是通过这个公式推算。一般而言,「二分变量与因变量是否不相关」等价于、或者近似于「独立两样本的中心趋势是否一致」。中心趋势一致,意思是用来分组的因素二分变量不能预测二分因变量的均值高低,即自变量与因变量不相关。
两个二分变量还可能是一种特殊的情形:二者是同一个研究概念在二水平被试内因素下的重复测量,比如:前半年是否得过流感,后半年是否得过流感。此时,研究「二者均值是否一致」与「二者是否相关(是否有预测关系)」是完全不同的问题,正如「关联两变量检验」完全不同于「关联两变量Pearson相关」,前者是中心位置的对比,后者是离差的相关。对于两列二分变量,研究相关(=独立两样本均值对比)的后者用一根横线把数据按被试间因素的两水平拆分为不同的两坨,研究关联两变量均值对比的前者用一跟竖线把数据按被试内因素的两水平分成两列。
在上图的同一界面,红色箭头指向的McNemar检验研究两个二分变量作为关联两变量彼此均值是否一致,其结果等价于关联两变量(差值的)符号检验(⌥A ▶ N(▶L) ▶ L ▶ Sign;非参数检验相关两样本的界面[2]),究其实质是对两列之差(删去差值为0的相等个案之后)研究差值1、-1两水平频次的二项分布检验,在统计学层面可能不构成实质性的创新。检验的命名者 Quinn McNemar 知名于智力的心理统计领域,是「斯坦福-比纳量表」团队领袖 Lewis Terman 的得意门生,师徒二人都曾经当选APA主席。
值得一提的是,关联两变量中心趋势比较总是等价于两变量差值的单样本中心趋势的检验。在SPSS中,单样本对称分布中心的Wilcoxon符号秩和检验、单样本中位数检验都没有单独的界面,需要借用上述非参数检验相关两样本的界面,将虚无假设的中位数作为一列常数填写在数据中,作为相关两变量的第一变量(单样本的研究变量作为相关两变量的第二变量)。
非参数检验被试内二水平设计的两种研究:Spearman秩相关检验 vs Wilcoxon符号秩和检验
如果研究的因变量不是二分变量而是「连续的」顺序变量,只方便研究其名次(=等级=秩Rank)、不能定义两个取值之间的定量差距,此时采用秩检验方法,通常也叫「非参数检验」。所谓「连续的」顺序变量,操作化意义是:几乎没有并列名次(Ties)。通常研究中遇到的顺序变量更经常是离散的,因变量可选的取值水平很少,大量并列名次,并不适用于常见的秩和检验比如被试内二水平设计的Wilcoxon符号秩和检验、被试间二水平设计的Mann-Whitney秩和检验。离散的顺序变量仍然适用一些广义的非参数检验,包括:关联两变量符号检验、单样本中位数检验(SPSS中无单独界面,采用前者的界面)、独立多样本中位数比较检验(SPSS快捷键:⌥A ▶ N (▶L) ▶ K个独立样本...▶ ⌥ Median [3])。
非参数检验初学者最容易搞错的是混淆Spearman秩相关检验与Wilcoxon符号秩和检验,二者数据形态相同(都是二水平被试内因素数据),只是研究的问题不同。Wilcoxon符号秩和检验考察关联的两变量中心趋势是否一致;Spearman秩相关检验考察关联的两变量各自的名次是否相关,与中心趋势无关。
如果计算量没有爆表,SPSS可以为各种秩检验给出基于组合数学的Exact Sig.,通常在界面的Exact 按钮弹出的界面点选 Exact,缺省的计算时间上限是5分钟。如果计算消耗内存资源超过硬件限制,也会提前放弃。在超时或者硬件限制情形,SPSS仍然会报告Asymptotic基于正态近似的结果。没有并列名次情形的Exact Sig.有个特点:必定是的整数倍。Spearman相关的遍历情形有种。Wilcoxon符号秩和检验的遍历情形数是种。
example(cor.test,ask=F) ## ## cr.tst> ## Hollander & Wolfe (1973), p. 187f. ## cr.tst> ## Assessment of tuna quality.We compare the Hunter L measure of ## cr.tst> ##lightness to the averages of consumer panel scores (recoded as ## cr.tst> ##integer values from 1 to 6 and averaged over 80 such values) in ## cr.tst> ##9 lots of canned tuna. ## cr.tst> ## cr.tst> x <- c(44.4, 45.9, 41.9, 53.3, 44.7, 44.1, 50.7, 45.2, 60.1) ## cr.tst> y <- c( 2.6,3.1,2.5,5.0,3.6,4.0,5.2,2.8,3.8) ## ... (rho.t <- cor.test(x,y,method = s,alternative = g)) ## ##Spearmans rank correlation rho ## ## data:x and y ## S = 48, p-value = 0.0484 ## alternative hypothesis: true rho is greater than 0 ## sample estimates: ## rho ## 0.6 paste("The top",rho.t$p.value/(1/factorial(N <- length(x))),"in",factorial(N)) ## [1] "The top 17563 in " (rho.t <- cor.test(x,y+41,method = s,alternative = g)) ## 与中心趋势无关 ## ##Spearmans rank correlation rho ## ## data:x and y + 41 ## S = 48, p-value = 0.0484 ## alternative hypothesis: true rho is greater than 0 ## sample estimates: ## rho ## 0.6 paste("The top",rho.t$p.value/(1/factorial(N)),"in",factorial(N)) ## [1] "The top 17563 in " (V.t <- wilcox.test(x, y, paired = T, alternative = "g")) ## ##Wilcoxon signed rank exact test ## ## data:x and y ## V = 45, p-value = 0. ## alternative hypothesis: true location shift is greater than 0 paste("The top",V.t$p.value/(1/ 2^N),"in",2^N) ## [1] "The top 1 in 512" (V.t <- wilcox.test(x, y+41, paired = T, alternative = "g")) ## 依赖中心趋势 ## ##Wilcoxon signed rank exact test ## ## data:x and y + 41 ## V = 37, p-value = 0.04883 ## alternative hypothesis: true location shift is greater than 0 paste("The top",V.t$p.value/(1/ 2^N),"in",2^N) ## [1] "The top 25 in 512"对这套数据,SPSS的Spearman 相关系数界面(⌥A ▶ C ▶ B ▶ ⌥ Spearman)的双尾 p 值报告没有提供Exact Sig.结果,只有正态近似结果0.,即两变量各自名次的 Pearson 相关系数 T 检验。R代码中的验算如下——
rbind( `Spearman Exact Sig. (2-tailed)`=cor.test(x,y,method = "s",exact = T)$p.v, `Spearman Asymp. Sig. (2-tailed)`=cor.test(x,y,method = "s",exact = F)$p.v, `Pearson T Sig.(2-tailed) for ranks`=cor.test(rank(x),rank(y))$p.v, `Regression T Sig. (2-tailed) for ranks`=summary(lm(rank(y)~rank(x)))$coef["rank(x)","Pr(>|t|)"] ) ##[,1] ## Spearman Exact Sig. (2-tailed)0. ## Spearman Asymp. Sig. (2-tailed)0. ## Pearson T Sig.(2-tailed) for ranks 0. ## Regression T Sig. (2-tailed) for ranks 0.对这套数据( vs.),SPSS 的 Wilcoxon 秩和检验得到的双尾 Exact Sig. 为 .,Asymp. Sig. 为 .,与R的对应结果一致。但 SPSS 的Asymp. Sig. 没有报告连续性校正的 Asymp. Sig. 。本例 N=9,其中3、5两名次为负号组,其它名次为正号组。虚无假设下,个案的 名次×正负号 的总体标准差为 1~N 和 -N ~ -1 的平方均值的平方根。本例标准化后的「 名次×正负号」样本均值/ =为 0.。验算确认,Asymp. Sig. 对应的统计量等于正态分布单样本均值情形。连续性校正的做法是「 名次×正负号」样本总和的绝对值减去1,因为所有可能的总和取值中与之最临近(更靠近虚无假设的)取值距离为2,校正值取二者中间点。验算代码如下——
(V.t <- wilcox.test(D <- x-(y+41))) ##与关联两变量情形等价的单样本情形 ## ##Wilcoxon signed rank exact test ## ## data:D <- x - (y + 41) ## V = 37, p-value = 0.09766 ## alternative hypothesis: true location is not equal to 0 cbind(rk=(rk <- rank(abs(D))),sg=(sg <- sign(D))) ## rk sg ##[1,]21 ##[2,]61 ##[3,]5 -1 ##[4,]81 ##[5,]11 ##[6,]3 -1 ##[7,]71 ##[8,]41 ##[9,]91 rbind( `Exact Sig.`=V.t$p.value, `Asymp. Sig.`=(V.t.1 <- wilcox.test(D,exact = F))$p.value, #correct=T `Asymp. Sig. (without correction)`=(V.t.2 <- wilcox.test(D,exact = F,correct = F))$p.value ) ##[,1] ## Exact Sig. 0. ## Asymp. Sig.0. ## Asymp. Sig. (without correction) 0. sigma <-mean(rk^2)^.5 (d <- mean(rk*sg)/sigma) ## [1] 0. all.equal(d/sqrt(1/N), qnorm(1 - V.t.2$p.value/2)) ## [1] TRUE ## 连续性校正 all.equal(((sum(rk*sg)-1)/N)/sigma / sqrt(1/N), qnorm(1 - V.t.1$p.value/2)) ## [1] TRUE非参数检验被试间设计:二水平的Mann-Whitney U检验 vs 多水平的Kruskal-Wallis H检验
独立两样本 Mann-Whitney U 检验与关联两变量的 Wilcoxon 秩和检验的情形略有不同:在独立重复的新一轮研究中,独立两样本 Mann-Whitney U 检验两组各自的样本量保持不变,Wilcoxon 秩和检验的正号组与负号组的个案数随机变化。Mann-Whitney U 检验穷举遍历的秩情形有种。
## From example(wilcox.test) ## Two-sample test. ## Hollander & Wolfe (1973), 69f. ## Permeability constants of the human chorioamnion (a placental ##membrane) at term (x) and between 12 to 26 weeks gestational ##age (y).The alternative of interest is greater permeability ##of the human chorioamnion for the term pregnancy. x <- c(0.80, 0.83, 1.89, 1.04, 1.45, 1.38, 1.91, 1.64, 0.73, 1.46) y <- c(1.15, 0.88, 0.90, 0.74, 1.21) ## 保存数据可用于SPSS复核 write.csv(row.names = F,data.frame(j=c(x*0,1+y*0),v=c(x,y)),file = "w_m.csv");getwd() ## Exact Sig. 与SPSS一致 (wct <- wilcox.test(x, y, alternative = "g"))# greater, 1-tailed ## ##Wilcoxon rank sum exact test ## ## data:x and y ## W = 35, p-value = 0.1272 ## alternative hypothesis: true location shift is greater than 0 paste("the top", wct$p.value / (1/(choose.all <- choose(n = ( N<- length(c(x,y))),k = length(y)))), "in", choose.all) ## [1] "the top 382 in 3003"SPSS 的 Exact. Sig. 结果与 R 的缺省结果一致;SPSS 的 Asymp. Sig. (双尾)结果与 R 未作连续性校正的情形一致,但这不是 R 的缺省结果。进一步验证,可发现 Mann-Whitney U检验与名次的独立两样本均值比较检验结果一致,个案的取所有名次 1 ~ N的 ,即下文 R 代码中的 var(rk) 的算数平方根。这与笔者一度预期的取值有细微出入,其中原理值得讨论。对 Kruskal-Wallis H 检验 Asymp. Sig. 的验证,也存在同样的现象。验证的 R 代码如下,其中用到了方差分析,与 = 对应有: 。
## 未作连续校正,与SPSS Asyp. Sig.一致 (ss.s <- anova(lm((rk <- rank(c(x,y)))~(j <- c(x*0-1,y*0+1))))) ## Analysis of Variance Table ## ## Response: (rk <- rank(c(x, y))) ##Df Sum Sq Mean Sq F value Pr(>F) ## j <- c(x * 0 - 1, y * 0 + 1)1 3030.0001.56 0.2337 ## Residuals1325019.231 all.equal(ss.s$`Sum Sq`[1] / var(rk), qnorm(1 - wilcox.test(x, y,exact = FALSE, correct = FALSE)$p.value/2 )^2) ## [1] TRUE ## 连续性校正:两组各自的名次总和分别加减0.5 (ss.s.cr <- anova(lm((rk.cr <- rk+c(-0.5,rep(0,length(rk)-2),+0.5))~(j <- c(x*0-1,y*0+1))))) ## Analysis of Variance Table ## ## Response: (rk.cr <- rk + c(-0.5, rep(0, length(rk) - 2), +0.5)) ##DfSum Sq Mean Sq F value Pr(>F) ## j <- c(x * 0 - 1, y * 0 + 1)127.07527.0751.35680.265 ## Residuals13 259.42519.956 all.equal(ss.s.cr$`Sum Sq`[1] / var(rk), qnorm(1 - wilcox.test(x, y, exact = FALSE, correct = TRUE)$p.value/2)^2) ## [1] TRUE独立K 样本K > 2 情形有类似的验证,此时不存在连续性校正选项。
air.rm <- airquality[!is.na(airquality$Ozone),c(1,5)] (kkt <- kruskal.test(Ozone ~ Month, data = air.rm) ) ## ##Kruskal-Wallis rank sum test ## ## data:Ozone by Month ## Kruskal-Wallis chi-squared = 29.267, df = 4, p-value = 6.901e-06 (ss.s <- anova(lm(rank(Ozone) ~ factor(Month), data = air.rm))) ## Analysis of Variance Table ## ## Response: rank(Ozone) ##Df Sum Sq Mean Sq F valuePr(>F) ## factor(Month) 4330848270.99.4729 1.261e-06 *** ## Residuals 11196915 873.1 ## --- ## Signif. codes:0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 all.equal((ss.s$`Sum Sq`[1] / var(rank(air.rm$Ozone))), kkt$statistic, check.attributes = F) ## [1] TRUEMann-Whitney U 检验渐进正态结果的推导
Mann-Whitney U 检验的虚无假设是「总名次在两组各自的均值一致」,SPSS 和不少软件都不严谨[4]地将其简化为「独立两组中位数一致」。二者区别可考察这样一个例子:六个五分位数将分布分为五段,如果实验组占第1、4段和随机一半的第3段,控制组占第2、5段和随机另一半的第3段,两组中位数相同,但总名次的均值不同。
Mann-Whitney U 检验的原始文献[5]用数学归纳法得到统计量的总体标准差。如果比对反差一致前提下的独立两样本均值比较Students T 检验,个案的总体方差为=,即Excel中的 Var(1, 2, ..., N )。
如果取值为有放回独立抽名次 1~N:取值空间为维空间的个点。=,即Excel中的Var.P(1, 2, ..., N ); =0。的前个元素都是,后个元素都是,表示实验组 枚个案的均值 减去 控制组 枚个案的均值。 ====。
然而,实际取值为1~N 的一个排列: 取值空间为N-1维空间的=个点。每个点与距离相同,空间对称。==。对标 维对称的正态分布向量,每个自由度的波动性为 = 。
下图是N =3情形,六边形的六个角代表种穷尽的排列,在六角形截面二维子空间。实验组两枚个案、控制组一枚个案。对于更一般的N ,===,任何一对,=为负的常数,满足0==,即方差-协方差矩阵各元素总和为0,得到=。注意到与对标的 维对称的正态分布向量也有同样的对称性和约束,所以=,有:=== ,即 =。
Mann-Whitney U 检验渐进正态==。连续性校正,将实验组和控制组的总名次各减、增0.5,缩小的绝对值。
N=3,取六边形的角之一;红色向量w=(0.5, 0.5, -1),实验组两枚个案、控制组一枚个案图示的R代码——
if(!require(plot3Drgl)){install.packages(plot3Drgl);require(plot3Drgl);} open3d() plot3d( c(1,3,1,1,3,1,2,3,3,2,2,2,1), c(2,2,2,3,1,3,3,2,1,1,3,1,2), c(3,1,3,2,2,2,1,1,2,3,1,3,3), type=l,col=grey, asp=1,xlab=Rank of case 1,ylab = Rank of case 2,zlab = Rank of case 3) mu <- rep(2,3); w <- c(.5,.5,-1); arrow3d(mu,mu+w,col=red,type = r)非参数检验被试内因素多水平情形:比较中心趋势的Friedmans Q
受Mann-Whitney U检验N =3情形图示的启发,关联K 变量 Friedmans Q 检验K=3情形也可以有类似的图示,注意到 Friedmans Q 检验所用的秩信息不是按列对N 枚个案排名,而是按行对 K 个水平的得分排名,与 Wilcoxons Rank-Sum的情况正好相反,所以,Friedmans Q 检验K=2 情形与 Wilcoxon 符号秩和检验结果完全不同,却与关联两变量符号检验结果相同。
R 的friedman.test(...) 只有 Asymp. Sig. 结果。SPSS 可以提供 Friedman 检验的 Exact Sig. 和 Asymp. Sig. (检验)结果。SPSS 的符号检验没有 Asymp. Sig. 的检验结果,实际应用中也不需要这份结果,如果在教学中要在SPSS中复核符号检验的检验结果,就可以通过 Friedman 检验的界面。
example("friedman.test") ## ## frdmn.> ## Hollander & Wolfe (1973), p. 140ff. ## frdmn.> ## Comparison of three methods ("round out", "narrow angle", and ## frdmn.> ##"wide angle") for rounding first base.For each of 18 players ## frdmn.> ##and the three method, the average time of two runs from a point on ## frdmn.> ##the first base line 35ft from home plate to a point 15ft short of ## frdmn.> ##second base is recorded. ## frdmn.> RoundingTimes <- ## frdmn.+ matrix(c(5.40, 5.50, 5.55, ## frdmn.+5.85, 5.70, 5.75, ## frdmn.+5.20, 5.60, 5.50, ## frdmn.+5.55, 5.50, 5.40, ## frdmn.+5.90, 5.85, 5.70, ## frdmn.+5.45, 5.55, 5.60, ## frdmn.+5.40, 5.40, 5.35, ## frdmn.+5.45, 5.50, 5.35, ## frdmn.+5.25, 5.15, 5.00, ## frdmn.+5.85, 5.80, 5.70, ## frdmn.+5.25, 5.20, 5.10, ## frdmn.+5.65, 5.55, 5.45, ## frdmn.+5.60, 5.35, 5.45, ## frdmn.+5.05, 5.00, 4.95, ## frdmn.+5.50, 5.50, 5.40, ## frdmn.+5.45, 5.55, 5.50, ## frdmn.+5.55, 5.55, 5.35, ## frdmn.+5.45, 5.50, 5.55, ## frdmn.+5.50, 5.45, 5.25, ## frdmn.+5.65, 5.60, 5.40, ## frdmn.+5.70, 5.65, 5.55, ## frdmn.+6.30, 6.30, 6.25), ## frdmn.+nrow = 22, ## frdmn.+byrow = TRUE, ## frdmn.+dimnames = list(1 : 22, ## frdmn.+c("Round Out", "Narrow Angle", "Wide Angle"))) # write.csv(RoundingTimes,row.names = F,"RoundingTimes.csv") # 可在Excel中打开*.csv另存为*.xlsx,再以SPSS打开 rbind( `Friedmans Q for 2-related vars`=friedman.test(RoundingTimes[,1:2])$statistic, `Sign Tests χ2`=prop.test(table(sign(RoundingTimes[,1]-RoundingTimes[,2]))[c("-1","1")],correct = F)$statistic ) ## Friedman chi-squared ## Friedmans Q for 2-related vars2 ## Sign Tests χ2 2用以上的数据,验算Friedmans Q渐进正态的结果——
str(dm <- rbind(RoundingTimes,RoundingTimes[1,]*0)) ## 考察完全相等的行是否被筛除 ##num [1:23, 1:3] 5.4 5.85 5.2 5.55 5.9 5.45 5.4 5.45 5.25 5.85 ... ##- attr(*, "dimnames")=List of 2 ## ..$ : chr [1:23] "1" "2" "3" "4" ... ## ..$ : chr [1:3] "Round Out" "Narrow Angle" "Wide Angle" (fdt <- friedman.test(dm)) ## ##Friedman rank sum test ## ## data:dm ## Friedman chi-squared = 11.143, df = 2, p-value = 0. all.equal(fdt$statistic,friedman.test(RoundingTimes)$statistic) ##完全相等的行无影响 ## [1] TRUE paste(K <- ncol(dm),"Related-Samples") ## [1] "3 Related-Samples" paste("Sample size=",N2 <- nrow(dm)) ## [1] "Sample size= 23" paste("Sample size (without constant cases)=",N <- nrow(RoundingTimes)) ## [1] "Sample size (without constant cases)= 22" # 只用到每行数据内部的等级 friedman.test(dm.rank <- t(apply(dm,MARGIN = 1,rank))) ## ##Friedman rank sum test ## ## data:dm.rank <- t(apply(dm, MARGIN = 1, rank)) ## Friedman chi-squared = 11.143, df = 2, p-value = 0. RoundingTimes.rank <- t(apply(RoundingTimes,MARGIN = 1,rank)) all.equal( sum((colMeans(RoundingTimes.rank)-(mu <- rep(mean(1:K),K)))^2 )*N / (sum((RoundingTimes.rank - cbind(rep(1,N))%*%mu)^2)/2/N) , fdt$statistic,check.attributes = F) ## [1] TRUE all.equal( sum((colMeans(dm.rank)-(mu <- rep(mean(1:K),K)))^2)*N2 / (sum((dm.rank - cbind(rep(1,N2))%*%mu)^2)/2/N2) , fdt$statistic,check.attributes = F)## 完全相等的行对SS_b 与 σ2的影响一样 ## [1] TRUE下图给出 K =3 情形 Friedmans Q 的渐进正态原理。绿色箭头为22枚个案的三次重测个案内排序,黑色箭头为名次(1、2、2.5、3)跨个案的、三次重测内的均值。作图代码为——
if(!require(plot3Drgl)){install.packages(plot3Drgl);require(plot3Drgl);} open3d() plot3d( c(1,3,1,1,3,1,2,3,3,2,2,2,1), c(2,2,2,3,1,3,3,2,1,1,3,1,2), c(3,1,3,2,2,2,1,1,2,3,1,3,3), type=l,col=grey, asp=1,xlab=Rank of sample 1,ylab = Rank of sample 2,zlab = Rank of sample 3) rank.j <- jitter(RoundingTimes.rank,amount = 0.08) for (i in 1:N) arrow3d(mu,RoundingTimes.rank[i,],col=palegreen,type=r,s=0.05); points3d(rank.j[,1],rank.j[,2],rank.j[,3],col=green,size=5,pch=19) arrow3d(mu,colMeans(RoundingTimes.rank),col="black",type = "r")抖开的22枚个案:三水平重测的六种等级排序即六角,若有两水平并列即六边中点非参数检验被试内因素多水平情形:比较二分变量中心趋势的Cochrans Q
被试内因素二水平设计的二分变量中心趋势对比,用McNemar检验;被试内因素多水平设计的二分变量中心趋势对比,用Cochran检验。然而,这只是Friedman检验的特例。验算代码如下——
if(!require(RVAideMemoire)){install.packages(RVAideMemoire);require(RVAideMemoire);} ## Loading required package: RVAideMemoire ## *** Package RVAideMemoire v 0.9-75 *** ## ## Attaching package: RVAideMemoire example("cochran.qtest") ## ## cchrn.> response <- c(0,1,1,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,0,1,1,0,0,1,0,1,1,0,0,1) ## ## cchrn.> fact <- gl(3,1,30,labels=LETTERS[1:3]) ## ## cchrn.> block <- gl(10,3,labels=letters[1:10]) ## ## cchrn.> cochran.qtest(response~fact|block) ## ##Cochrans Q test ## ## data:response by fact, block = block ## Q = 10.8889, df = 2, p-value = 0.00432 ## alternative hypothesis: true difference in probabilities is not equal to 0 ## sample estimates: ## proba in group A proba in group B proba in group C ##0.20.51.0 ## (fdt.c <- friedman.test(response~fact|block)) ## ##Friedman rank sum test ## ## data:response and fact and block ## Friedman chi-squared = 10.889, df = 2, p-value = 0.00432 all.equal(fdt.c$statistic, cochran.qtest(response~fact|block)$statistic, check.attributes = F) ## [1] TRUE非参数检验被试内因素多水平情形:研究相关的Kendalls W
Kendalls W 通常在相关系数章节讲授,作为被试内二水平到被试内多水平的推广。然而,在SPSS的相关系数菜单,并没有Kendalls W系数的入口(⌥A▶C▶B,只有Kendalls的选项,与Kendalls W是两码事)。Kendalls W隐藏在SPSS菜单的入口竟然在关联K 水平非参数检验下:⌥A ▶ N (▶N) ▶ K Related Samples ... 。
如果N 位评价者给K 个评价对象排序一致性高,上图均值的黑色箭头就更长,最长的极限可以指到截面的角。Kendalls W与Friedmans Q等价,因其虚无假设为均值黑色箭头对无限多评价者的总体期望为截面中心,备择假设的极端方向梯度也与Friedman检验完全相同:W =,等于黑色均值向量长度平方对绿色个案总体方差作标准化,再除以自由度,上限为1。
操作中需要留意对数据作行列转置(SPSS中的⌥ D ▶ N ▶ ...),将K 行N 列数据转为K 列N 行的Friedman检验数据。W 在应用中常见的解读是Friedman检验数据行与行的「一致」程度。这里的「一致」字面意思对于Friedman检验数据的行与行,即各行之间等级相关高;对于Friedman检验数据的列与列,却是各列之间(1~K 名次的)名次均值差异大,或许应该说是「不一致」。Kendalls W与Friedmans Q的关系验算如下——
(W <- setNames(fdt$statistic /N/(K-1),"Kendalls W")) ## Kendalls W ## 0. if(!require(irr)){install.packages(irr);require(irr)} ## Loading required package: irr ## Loading required package: lpSolve str(k <- kendall(t(RoundingTimes),correct = T)) ## Ties corrected ## List of 8 ##$ method : chr "Kendalls coefficient of concordance Wt" ##$ subjects : int 3 ##$ raters : int 22 ##$ irr.name : chr "Wt" ##$ value: num 0.253 ##$ stat.name: chr "Chisq(2)" ##$ statistic: num 11.1 ##$ p.value: num 0.00381 ##- attr(*, "class")= chr "irrlist" all.equal(k$value,W,check.attributes = F) ## 两种模型一致 ## [1] TRUE all.equal(kendall(t(dm),correct = T)$value,W * N /N2,check.attributes = F) ## 完全相等的行影响W,但只通过N影响 ## [1] TRUE