计量资料的差异性分析|t检验、方差分析及非参数检验的SPSS和R语言操作教程

       在统计分析中,当研究对象是计量资料(又称定量资料、连续变量,如身高、体重、血压等)时,我们常常需要比较不同组别(如不同处理组、不同人群、不同时间点)之间某个指标的均值是否存在统计学上的显著差异。

       本文将介绍计量资料的差异性分析方法及SPSS和R语言的详细操作,若数据满足正态性(可详见上篇),可选择t检验(两组)或方差分析(三组及以上),否则选择非参数检验。

       本文仍使用R语言内置数据集iris为大家介绍。

目录

SPSS实现

1、t检验、方差分析

2、多个样本均数间的多重比较

​编辑

3、非参数检验

4、中位数和四分位数获取--基线表数据

R语言实现

1、方差齐性检验

2、t检验

3、方差分析

4、多个样本均数间的多重比较

5、非参数检验

6、基线表制作

总结


SPSS实现

1、t检验、方差分析

       因为SPSS有些操作不能使用长字符串,为方便操作,本文将Species转换为数字“1,2,3”,命名为Species1。用之前介绍的选择个案的方法筛选Species1为“1”和“2”的数据,为大家介绍t检验的操作流程,用全部的数据介绍方差分析的操作流程。

01|选择菜单栏中的“分析” > “比较平均值” > “独立样本t检验”/“单因素ANOVA检验”

02|t检验

在独立样本t检验的弹出框中,将符合正态分布的变量拖入“检验变量”,将分组变量拖入“分组变量”,选中分组变量 > 点击“定义组”,在定义组的弹出框中填写组别的值,点击“继续”,最后“确定”。

t检验的结果解读

①首先会给出每个组的平均值和标准差,可用于基线表的绘制;

②主要的检验结果包含方差齐性检验结果和t检验结果,莱文方差等同性检验的显著性(P)>0.05可认为方差齐,即采用“假定等方差”一行的t值和p值,若方差不齐则采用“不假定等方差”一行的t值和p值,p<0.05则可认为两组间存在显著性差异,反之则不认为两组间存在显著性差异。

03|单因素方差分析

在单因素ANOVA检验的弹出框中,将符合正态分布的变量拖入“检验变量”,将分组变量拖入“分组变量”,点击“选项” > 勾选“描述”、“方差齐性检验”、“韦尔奇检验” > 点击“继续”,最后“确定”。

|方差分析的结果解读

①也会给出每个组的描述,包括的平均值、标准差、95%CI置信区间、最大值、最小值,可用于基线表的绘制;

②方差齐性检验结果,p > 0.05,方差齐,否则方差不齐。

③方差分析检验结果,p<0.05则可认为三组中至少有一组之间存在显著差异(方差齐参考ANOVA结果,方差不齐参考韦尔奇结果)

2、多个样本均数间的多重比较

ANOVA的结果有统计学意义只能说明三组总体均数不全相等,若想进一步了解哪两个组总体均数不等,须进行多个样本均数间的两两比较又叫多重比较,若仍用两样本均数比较的t检验进行多重比较,会加大犯一类错误的概率(把总体均数间本无差别判为有差别)。本文介绍几种常用的多重比较的方法:

预先计划好的研究,多选LSD、Bonferroni(邦弗伦尼)

Dunnett专用于多个实验组与一个对照组进行比较,实验组之间不做比较

组间样本量相差不大时通常首选Tukey HSD(图基),组数不多时可选SNK

Scheffé(雪费)最万能,各组样本量不齐或需复杂比较时多选,但检验力较低

方差不齐且样本量不等时,常用Games-Howell(盖姆斯-豪厄尔)非参数方法

操作:在单因素ANOVA检验的弹出框中,选择“事后比较”,然后根据实际情况选择合适的方法。

结果会给出每两个组之间的显著性差异

3、非参数检验

01 | 选择菜单栏中的“分析” > “非参数检验” > “旧对话框” > “2个独立样本”/“K个独立样本”(本案例选择“K个独立样本”,2组和多组之后的操作基本相同)

02 | 在弹框中,将不服从正态分布的变量拖入“检验变量列表”,将分组变量拖入“分组变量”,选中分组变量 > 点击“定义范围”,在分组范围的弹出框中填写组别的最大值和最小值,点击“继续”,最后点击“确定”

| 非参数检验结果解读

同样p<0.05,即可说明三组Petal.Width的差异有统计学意义。中位数和四分位数的描述这里无法得出,可见下一步骤的获取操作。

4、中位数和四分位数获取--基线表数据

01|选择菜单栏中的“分析” > “统计描述” > “探索”

02|将检验变量和分组变量分别拖入“因变量列表”、“因子列表”,点击“统计” > 勾选“百分位数” > 点击“继续” > 最后“确定”

03|结果输出

R语言实现

1、方差齐性检验

本文介绍两种方法的实现:

Bartlett检验适用于正态分布的样本,Levene方法与SPSS采用的方法一致,是一种非参数检验的方法,对非正态分布也有较好的效果

#1、Levene方法(与SPSS一致):对非正态分布也有较好的效果library(car)# iris是数据,Species是因子型变量,Sepal.Length是数值型变量#默认以中位数进行检测leveneTest(Sepal.Length ~ Species, data=iris)#以均值进行检测
leveneTest(Sepal.Length ~ Species, data=iris,center = mean)


#2、Bartlett检验:适用于正态分布bartlett.test(Sepal.Length ~ Species, data=iris)

|结果输出

图片

2、t检验

#分组library(dplyr)iris1=filter(iris,iris$Species =="setosa")iris2=filter(iris,iris$Species =="versicolor")#t检验
t.test(iris1$Sepal.Length,iris2$Sepal.Length,alternative = "two.sided",mu = 0, paired = FALSE, var.equal = FALSE)
# var.equal=TRUE为方差齐返回t检验结果,var.equal=FALSE为方差不齐返回Welch t检验,此外若是配对t检验paired = TRUE

|结果输出

图片

3、方差分析

#方差分析:方差齐aov.manu <- aov(Sepal.Length~ Species, data=iris)summary(aov.manu)#Welch方法:方差不齐oneway.test(Sepal.Length~ Species, data=iris)

|结果输出

图片

4、多个样本均数间的多重比较

#1.LSD (标记字母法:相同字母的组间无显著性差异,不同字母的组间有显著性差异)library(agricolae)#p.adj="none"为LSD法,"bonferroni"为邦弗伦尼法lsd<-LSD.test(aov.manu, "Species", p.adj="none")lsd$groups
#2.Bonferroni(邦弗伦尼)#2.1校正显著性水平α,标记分组字母,需先做完方差分析bonf<-LSD.test(aov.manu, "Species", p.adj="bonferroni")bonf$groups#2.2校正P值,适合任意成对比较,可得出精确p值,不依赖前期方差分析结果
bonf_1<- pairwise.t.test(iris$Sepal.Length,iris$Species,p.adjust.method = "bonferroni")
bonf_1

#3.SNK,标记分组字母snk<-SNK.test(aov.manu, "Species")snk$groups
#4.Tukey HSD(图基)library(multcomp)tukey <- glht(aov.manu, linfct = mcp(Species = "Tukey"))summary(tukey)#或者TukeyHSD(aov.manu)
#5.Dunnett#5.1multcomp包,默认因子顺序第一个水平为参照组library(multcomp)Dunnett<- glht(aov.manu, linfct = mcp(Species = "Dunnett"),alternative ="two.sided")summary(Dunnett)#5.2DescTools包library(DescTools)Dunnett_1 <- DunnettTest(  x = iris$Sepal.Length,        # 数值变量  g = iris$Species,         # 分组变量  control = "setosa"               # 指定对照组名称)Dunnett_1 
#6.Scheffé(雪费)library(DescTools)ScheffeTest(aov.manu)
#7.Games-Howell(盖姆斯-豪厄尔):方差不齐且样本量不等时library(rstatix)gh_result <- iris %>%  games_howell_test(Sepal.Length ~ Species)gh_result

|结果输出

图片

图片

图片

图片

图片

图片

5、非参数检验

#Wilcoxon秩和检验(Mann-Whitney U检验)(比较两组独立样本的中位数)#数据准备,选择组别不等于"setosa"的另外两组library(dplyr)iris3=filter(iris,iris$Species!="setosa")#Mann-Whitney U检验wilcox.test(Petal.Width ~ Species, data=iris3)

#Kruskal-Wallis检验(比较三个或更多独立样本的中位数)kruskal.test(Petal.Width ~ Species, data=iris)

|结果输出

图片

6、基线表制作​​​​​​​

library(compareGroups)result<-descrTable(Species ~.,data = iris, 
           method = c(Sepal.Length=1,Sepal.Width=1,Petal.Length=1,Petal.Width = 2), # 指定Petal.Width使用非参数检验
           show.p.overall = T) 
         
result

|结果输出

R语言可以很简便地根据不同的数据类型直接绘制出基线表。

图片

总结

       选择合适的差异性分析方法至关重要,需要根据研究设计(组数、独立/配对)、数据分布特征(正态性、方差齐性)以及样本量等因素综合判断,以确保结论的可靠性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值