连续性变量的组间差异分析

目录

正态分布

正态分布检测

1:图像法

2:计算法

Shapiro–Wilk W检验(小样本推荐)

Lilliefors正态性检验

Anderson–Darling 或AD检验

D'Agostino检验(大样本推荐)

独立样本t检验

1,方差齐性检验

2,t检验

3,单侧t检验

非独立样本t检验

1,配对数据

2,配对t检验

单因素方差分析

1,单因素方差数据

2,方差齐性

3,单因素方差分析

4,可以进一步两两比较

TukeyHSD函数

Bonferroni法

非正态分布

Wilcoxon秩和检验(独立t)

Wilcoxon符号检验(配对t)

Kruskal-Wallis检验(单因素方差)

PMCMRplus包(非参数两两比较)



t检验(连续变量)和卡方检验(分类变量)-CSDN博客

正态分布

正态分布检测

相关性分析和作图-CSDN博客

正态检验 (Normality Test)——常见方法汇总与简述-CSDN博客

1:图像法
##连续变量的统计分析##
rm(list = ls())
library(ggpubr)
data <- iris##鸢尾花数据集#查看数据分布类型
##1.1:图像法密度图
ggdensity(data$Sepal.Length, main = "Density plot",xlab = "Sepal.Length")##1.2:图像法QQ图
ggqqplot(data$Sepal.Length)
#定样本与正态分布之间的相关性,并给出了45度参考线,即y=x。
#当所有点都大致落在该参考线时,我们可以假定数据为正态。##1.3:图像法 直方图
hist(data$Sepal.Length,main = "",xlab = "", breaks = 10, col = "lightblue", border = "pink")

2:计算法

计算法:S.S.Shapiro&M.B.Wilk 提出的W检验法(Shapiro-Wilk检验)和 Ralaph.B.D.Agostino 提出的D检验法(D'Agostino检验)。此外,x²检验适用于任意频数分布的拟合优度检验,并非检验正态性的专用方法,效率不够高。

W检验和D检验是我国制定的正态性检验的国家标准GB4882-85推荐的正态性检验的专用方法,都需要通过专用的计算表来确定临界值;其中W检验在3≤n≤50时使用D检验在50<n≤1000时使用

常见检验方法介绍:

Kolmogorov-Smirnov检验:用样本数据与期望的理论分布进行对比,如果差异不大,则可以认为数据服从正态分布。假设总体的参数是已知的,但这在实际应用中是很难做到的。

②Lilliefors正态性检验(第一个改良):用样本均值和标准差代替总体均值和标准差。

③Anderson–Darling 或AD检验:把所有的差平方后求和,有点像计算方差。

④Shapiro–Wilk W检验:用的是经验累积概率与目标理论累积概率之差的最大值,有点像计算极差

W检验适合于样本量在3~50之间的样本数据。有其他统计学家把其适用范围扩展到5000,因此可以说W检验几乎适用于所有的正态检验。)

R-概率统计 | 正态分布检验 - 知乎 (zhihu.com)、

R语言统计分析 01 正态性检验及方差齐性检验 - 知乎 (zhihu.com)

Shapiro–Wilk W检验(小样本推荐)
#2:Shapiro-Wilk方法
shapiro.test(data$Sepal.Length)Shapiro-Wilk normality testdata:  data$Sepal.Length
W = 0.97609, p-value = 0.01018本数据含有150个样本,超过30,且从前视觉判断,数据不存在明显的分布不均匀。视情况考虑。

假设检验H0,总体符合正态分布

W值:W越小,越接近0,表示样本数据越接近正态分布

p值:p小于显著性水平α(0.05),表示样本数据不符合正态分布(注意使用范围)


Lilliefors正态性检验
## Lilliefor检验
library(nortest)
lillie.test(data$Sepal.Length)Lilliefors (Kolmogorov-Smirnov) normality testdata:  data$Sepal.Length
D = 0.088654, p-value = 0.005788

原假设 H0:样本服从正态分布; 备择假设 H1:样本不服从正态分布 。

P值>指定水平0.05,接受原假设,可以认为样本数据服从正态分布

P值<指定水平0.05,拒绝原假设,认为样本数据在5%的显著性水平下不服从正态分布


​​​​​​​Anderson–Darling 或AD检验
#Performs the Anderson-Darling test 
#for the composite hypothesis of normality
ad.test(data$Sepal.Length)Anderson-Darling normality testdata:  data$Sepal.Length
A = 0.8892, p-value = 0.02251

零假设H0:数据服从正态分布

备择假设H1:数据不服从正态分布

P<0.05,要拒绝原假设,说明数据是不服从正态分布。


D'Agostino检验(大样本推荐)
#D'Agostino skewness test
library(moments)
agostino.test(data$Sepal.Length, alternative = "two.sided")D'Agostino skewness testdata:  data$Sepal.Length
skew = 0.31175, z = 1.59630, p-value = 0.1104
alternative hypothesis: data have a skewness原假设为符合正态分布,认为是正态分布

CSDN博主「Pterosaur_Zero」

(1)由于每个正态性检验方法的检验角度不同,因此同一批数据用不同的检验方法可能得到的结果会不尽相同,所以在实际操作中可以根据样本量大小选择多种检验方法进行正态性检验,同时通过QQ图等图示法辅助判断;

(2)正态性检验只是检验样本数据来自正态分布总体的可能性有多大,或者说只是检验样本数据的总体是否近似正态分布,因此样本的总体并不是一定服从标准正态分布,但已有大量实验表明,即使总体仅为近似的正态分布,也能很好地进行 t -test、方差分析等参数检验。

(3)有些样本的总体可能仅为近似的正态分布,但没有一种直接的方法可以决定“偏离正态性的严重程度”是否足以改变“进行参数检验”的选择。正态性检验的意义本身并不全是为了决定什么时候使用非参数检验,还包括在确定一个样本的总体如果近似服从正态分布后,可以使用更加简单的方法来制定参考值范围、对数据进行质量控制等等。决定使用参数检验还是非参数检验是一个非常复杂且困难的问题,在实际研究中,不应该仅基于正态性检验的结果来自动断定是否使用非参数检验,还需要根据实际问题更深入地考虑其他影响因素(具体问题具体分析)。

(4)正态性检验在大多数情况下并不是十分有用。因为在样本量很少的情况下,正态检验对于检测“非正态分布”的作用不是很大;而当样本量足够大的时候,数据是否需要严格通过正态性检验、是否需要严格服从正态分布就显得不那么重要了,因为t 检验和方差分析等对于近似正态分布数据的检测结果是非常稳定的(根据大数定律和中心极限定理,当样本量足够大时,所有分布都近似于正态分布)。因此正态性检验只是一个测试方法,用于告诉我们自己的数据偏离理想正态分布的情况是否严重到足以使以正态分布为前提条件的统计方法失效,正态性检验的结果只是一个参考。
原文链接:https://blog.csdn.net/qq_33924470/article/details/114668701


独立样本t检验

        如果两个样本是从两个总体中独立抽取的,即一个样本中的元素与另一个样本中的元素相互独立,则称为独立样本(Independent Samples)。

        假设变量的分布呈正态分布,针对两组的独立样本,t检验可以用于两个总体均值之间的比较。通常我们需要先用函数vartest()检查两组间是否具有方差齐性,即方差是否相等。比较吸烟组和不吸烟组产妇的新生儿体重。

1,方差齐性检验
##连续变量的统计分析##
rm(list = ls())
library(MASS)
data <- birthwt
var.test(bwt~smoke,data =birthwt)F test to compare two variancesdata:  bwt by smoke
F = 1.3019, num df = 114, denom df = 73, p-value = 0.2254
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:0.8486407 1.9589574
sample estimates:ratio of variances 
1.301927 
F = 1.3019, num df = 114, denom df = 73, p-value = 0.2254

结果表明,吸烟组和不吸烟组两组数据方差的差异没有统计学意义(p=0.2254),即组间具有方差齐性。接下来用函数t.test()进行t检验。

2,t检验
#var.equal = FALSE(默认)
t.test(bwt ~smoke,var.equal =TRUE,#这里需要选择T,前面检验相等data =birthwt)##拆开写
group1 <-birthwt$bwt[birthwt$smoke =="0"]
group2 <-birthwt$bwt[birthwt$smoke =="1"]
t.test(group1,group2,var.equal =TRUE)#一样的
	Two Sample t-testdata:  bwt by smoke
t = 2.6529, df = 187, p-value = 0.008667
alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
95 percent confidence interval:
  72.75612 494.79735
sample estimates:
mean in group 0 mean in group 1 3055.696        2771.919 
3,单侧t检验
t.test(bwt ~smoke,var.equal =TRUE,#这里需要选择T,前面检验相等alt = "greater",#设置为单侧检验(不吸烟比吸烟)conf.level = 0.95,#CI区间可以修改data =birthwt)
	Two Sample t-testdata:  bwt by smoke
t = 2.6529, df = 187, p-value = 0.004333
alternative hypothesis: true difference in means between group 0 and group 1 is greater than 0
95 percent confidence interval:106.9528      Inf
sample estimates:
mean in group 0 mean in group 1 3055.696        2771.919 
非独立样本t检验

组间不是独立的:(1)同体配对,即同一受试对象分别接受两种不同处理;(2)异体配对,即两同质受试对象配成对子后分别接受两种不同的处理。在比较两组的差异时,由于组间不是独立的,需要用配对的t检验。此时,在函数t.test()里,我们需要将参数paired设为TRUE。

1,配对数据

下面建立两组数据,分别代表用脂肪酸水解法和罗紫-戈特里法对10份乳酸饮料中脂肪含量测定的结果,现欲比较两种测定结果是否存在差异。(一个样本两种方法)

x<-c(0.84,0.59,0.67,0.63,0.69,0.98,0.75,0.73,1.20,0.87)
y<-c(0.58,0.51,0.50,0.32,0.34,0.52,0.45,0.51,1.00,0.51)
data <- data.frame(x,y)
data$ID <- paste0("A",1:nrow(data))t.test(x,y,paired =TRUE)

2,配对t检验
t.test(x,y,paired =TRUE)paired	
a logical indicating whether you want a paired t-test.
	Paired t-testdata:  x and y
t = 7.871, df = 9, p-value = 2.52e-05 X Y两种方法检测存在差异
alternative hypothesis: true mean difference is not equal to 0
95 percent confidence interval:0.1931133 0.3488867
sample estimates:
mean difference 0.271 
单因素方差分析

       多个组之间差异分析(分类>2),如果数据是从正态总体中独立抽样而得的,且满足方差齐性,我们可以用方差分析(Analysis of Variance,ANOVA)。在分类变量只有一个时,这种方差分析被称为单因素方差分析(one-way ANOVA)

1,单因素方差数据
##数据查看:有3亚型
table(birthwt$race)
1  2  3 
96 26 67#进行正态性检验
tapply(birthwt$bwt,birthwt$race,shapiro.test)
data:  X[[i]]
W = 0.98727, p-value = 0.4861
data:  X[[i]]
W = 0.97696, p-value = 0.8038
data:  X[[i]]
W = 0.97537, p-value = 0.2046
2,方差齐性

bartlett.test()函数

bartlett.test(bwt ~race,data =birthwt)Bartlett test of homogeneity of variancesdata:  bwt by race
Bartlett's K-squared = 0.65952, df = 2, p-value = 0.7191

Bartlett检验对数据的正态性非常敏感。p-value = 0.7191  各组方差齐

3,单因素方差分析
race.aov <-aov(bwt ~race,data =birthwt)
summary(race.aov)Df   Sum Sq Mean Sq F value  Pr(>F)   
race          1  3790184 3790184   7.369 0.00726 **
Residuals   187 96179472  514329                   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
4,可以进一步两两比较
TukeyHSD函数

需要将亚型转变为因子才能进行分析

#转换为因子
birthwt$race <- as.factor(birthwt$race)
race.aov <-aov(bwt ~race,data =birthwt)
summary(race.aov)
TukeyHSD(race.aov)Tukey multiple comparisons of means95% family-wise confidence levelFit: aov(formula = bwt ~ race, data = birthwt)$racediff       lwr        upr     p adj
2-1 -383.02644 -756.2363  -9.816581 0.0428037
3-1 -297.43517 -566.1652 -28.705095 0.0260124
3-2   85.59127 -304.4521 475.634630 0.8624372
Bonferroni法

其他进行两两比较的方法:Bonferroni法、Holm法等,这些方法的核心问题都是如何控制总的犯第一类错误的概率。

pairwise.t.test(birthwt$bwt,birthwt$race,p.adjust.method ="bonferroni")Pairwise comparisons using t tests with pooled SD data:  birthwt$bwt and birthwt$race 1     2    
2 0.049 -    
3 0.029 1.000P value adjustment method: bonferroni #从四格表中找对应的P值

多因素方差学习:R语言方差分析总结_r语言方差分析结果解读-CSDN博客


非正态分布

Wilcoxon秩和检验(独立t)

        如果数据无法满足t检验(不符合正态分布)或者方差分析(方差不齐)的假设,例如变量呈明显的偏态分布,或者组间不具有方差齐性,我们可以采用非参数方法。对于两组独立样本,可以使用Wilcoxon秩和检验来评估观测值是否是从相同的分布中抽得的。

这里使用wilcox.test()测试前面数据

rm(list = ls())
library(MASS)
data <- birthwt
wilcox.test(bwt~smoke,data =birthwt)Wilcoxon rank sum test with continuity correctiondata:  bwt by smoke
W = 5249.5, p-value = 0.006768
alternative hypothesis: true location shift is not equal to 0

与上面t检验的结果相同,再次拒绝了吸烟组和非吸烟组新生儿体重相同的假设(p< 0.01)。


Wilcoxon符号检验(配对t)

Wilcoxon符号秩检验可以看作非独立样本t检验的一种非参数替代方法。

rm(list = ls())
x<-c(0.84,0.59,0.67,0.63,0.69,0.98,0.75,0.73,1.20,0.87)
y<-c(0.58,0.51,0.50,0.32,0.34,0.52,0.45,0.51,1.00,0.51)
data <- data.frame(x,y)
data$ID <- paste0("A",1:nrow(data))wilcox.test(x,y,paired = T)
Kruskal-Wallis检验(单因素方差)

对于多于两组间比较的情况,如果无法满足方差分析的假设条件,也需要借助非参数方法。如果各组之间相互独立,可以使用Kruskal-Wallis检验;如果各组之间不独立(如重复测量设计),则应该使用Friedman M检验。在R里,进行这两种检验的函数分别为kruskal.test()和friedman.test(),其使用方法类似。以Kruskal-Wallis检验为例:

kruskal.test(bwt ~race,data =birthwt)Kruskal-Wallis rank sum testdata:  bwt by race
Kruskal-Wallis chi-squared = 8.5199, df = 2, p-value = 0.01412

这个p值比用t检验得到的p值更大,这也验证了对于同样的数据,非参数检验的结论相比参数检验更为保守。

PMCMRplus包(非参数两两比较)

PMCMRplus包进行非参数方法的组间两两比较。

library(PMCMRplus)
comp <-bwsAllPairsTest(bwt ~race,data =birthwt)
summary(comp)
Pairwise comparisons using BWS All-Pairs Testdata: bwt by race
alternative hypothesis: two.sided
P value adjustment method: holm
H0B value Pr(>|B|)  
2 - 1 == 0   3.980 0.026755 *
3 - 1 == 0   3.517 0.030137 *
3 - 2 == 0   0.729 0.535124  
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

参考:

1:医学统计学/孙振球,徐勇勇主编.—4版.—北京:人民卫生出版社,2014

2:R语言医学数据分析实战/赵军编著.--北京:人民邮电出版社,2020.8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaEE进阶学习:SpringBoot 的创建和使用

1.什么是Spring Boot Spring 的诞生是为了简化 Java 程序的开发的&#xff0c;而 Spring Boot 的诞生是为了简化 Spring 程序开发的。 Spring Boot 翻译一下就是 Spring 脚手架&#xff0c;它就是为了快速开发 Spring 框架而诞生的 2.Spring Boot 优点 起步依赖 (创建的时候…

如何用JS实现模糊查询功能

我是写的是JSON数据通过请求来获取&#xff0c;实现这个模糊查询功能我只用了indexOf返回数组下标这一种办法。方法不限&#xff0c;下面我只展示这一种方法喽&#xff01; indexOf是什么 indexOf是返回指定内容在原字符串中的位置&#xff0c;该方法是从数组的start处或数组的…

按升序输出各个字符串。

编写程序&#xff0c;设计并实现如下功能&#xff1a;从键盘输入多个字符串&#xff0c;按升序输出各个字符串。

从零开始搭建博客网站-----框架页

实现效果如下 发布的功能还没有实现&#xff0c;仅仅实现了简单的页面显示 关键代码如下 <template><div class"layout"><el-header class"header"><div class"logo">EasyBlog</div></el-header><el-c…

Python标准库:copy模块【侯小啾python基础领航计划 系列(十五)】

Python标准库:copy模块【侯小啾python基础领航计划 系列(十五)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

YOLOv8改进有效涨点 | 2023 | SPD-Conv空间深度转换卷积(高效空间编码技术)

一、本文介绍 本文给大家带来的改进内容是SPD-Conv&#xff08;空间深度转换卷积&#xff09;技术。SPD-Conv是一种创新的空间编码技术&#xff0c;它通过更有效地处理图像数据来改善深度学习模型的表现。SPD-Conv的基本概念&#xff1a;它是一种将图像空间信息转换为深度信息…

springboot的常用注解

声明解释这个对象&#xff08;类或者其他&#xff09;组件相关 名称作用Controller用于修饰MVC中controller层的组件SpringBoot中的组件扫描功能会识别到该注解&#xff0c;并为修饰的类实例化对象&#xff0c;通常与RequestMapping联用&#xff0c;当SpringMVC获取到请求时会…

国产API调试插件:Apipost-Helper

前言 Idea 是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展&#xff0c;可以根据开发人员的需要进行定制和扩展&#xff0c;从而提高开发效率,今天我们就来介绍一款…

笔记-模拟角频率和数字角频率的关系理解

先建议阅读前人此文&#xff08;点击这里&#xff09;&#xff0c;有助于理解。 模拟频率&#xff1a;f 模拟角频率&#xff1a;Ω 数字角频率&#xff1a;ω 其中&#xff1a;在模拟信号中Ω 2πf 正弦波表示&#xff1a;sin(2πft) sin(Ωt) 数字信号就是离散的&#xff…

深度学习(五):pytorch迁移学习之resnet50

1.迁移学习 迁移学习是一种机器学习方法&#xff0c;它通过将已经在一个任务上学习到的知识应用到另一个相关任务上&#xff0c;来改善模型的性能。迁移学习可以解决数据不足或标注困难的问题&#xff0c;同时可以加快模型的训练速度。 迁移学习的核心思想是将源领域的知识迁…

出现数据库出现没有时间格式的错误,实体类Date类型不对导致时间报错

目录 报错现场解决办法java与mysql中的日期类型及二者的对应关系和使用场景 报错现场 数据库最早时间为2023年1月1日&#xff0c;前端查询后却出现2022年12月31日的数据 数据库时间类型为date swagger接口测试 解决办法 讲until的Date改成sql类的Date&#xff0c;就可以了…

[ 蓝桥杯Web真题 ]-视频弹幕

目录 介绍 准备 目标 效果 规定 思路 解答参考 扩展功能 介绍 弹幕指直接显现在视频上的评论&#xff0c;可以以滚动、停留甚至更多动作特效方式出现在视频上&#xff0c;是观看视频的人发送的简短评论。通过发送弹幕可以给观众一种“实时互动”的错觉&#xff0c;弹幕…

基于STM32的智慧农业项目(物联网专业毕设)附送源码和文档材料+学习路线

文章目录 概要整体架构流程硬件选型软件总体框架技术细节实现效果小结 概要 传统农业存在着产量受到环境因素影响较大的问题&#xff0c;现有的农业监测系统数据太过简单、太过理想化。而随着现代科学的持续发展,一个精准化、自动化的现代智能农产品管理系统将在农业生产中起着…

个人Windows电脑通过Cloudreve+Cpolar搭建PHP云盘系统公网可访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&#…

⭐ Unity + ARKIT 介绍 以及 平面检测的实现

在AR插件中&#xff0c;ARKIT是比较特殊的一个&#xff0c;首先他在很多追踪上的效果要比其他的AR插件要好&#xff0c;但是只能在IOS系统设备上运行。 1.首先ARKIT在最新版Unity已经集成在AR Foundation中&#xff0c;那我们就需要ARSession 和ARSessionOrigin这两个重要组件…

netcore swagger 错误 Failed to load API definition

后端接口报错如下&#xff1a; 前端nswag报错如下&#xff1a; 根据网上查询到的资料说明&#xff0c;说一般swagger这种错误都是控制器里有接口代码异常造成的&#xff0c;通常是接口没有加属性Attribute&#xff0c; 比如[HttpPost("Delete")]、[HttpGet("Del…

chown和chmod

chown和chmod都是在Linux和Unix系统中用于设置文件和文件夹权限的命令&#xff0c;但它们的功能和用途有所不同。 功能&#xff1a;chown主要用于修改文件或文件夹的所有者和所属组&#xff0c;而chmod则主要用于修改文件或文件夹的读写执行权限。用途&#xff1a;如果想要授权…

Vue3 组合式实现 带连接线的Tree型 架构图(一级树形图)

创建组件名称 TreeNodeView.vue <template><div class"tree-node"><div class"node">{{ rootNodeName }}</div><div class"children" :style"childrenLineStyle"><div class"child-node"…

12月4日作业

完成沙发床的多继承 #include <iostream>using namespace std;class Sofa { private:string sit;int *price; public:Sofa() {cout << "Sofa::无参构造函数" << endl;}Sofa(string sit,int price):sit(sit),price((new int(price))){cout <<…

AutoHotKey-study

目录 使用编辑器脚本注意函数解释信息调试方法键盘获取方法脚本练习 最近发现常用键盘的上下左右箭头去操作输入输出问题感觉很不是滋味&#xff0c;不像Linux那样&#xff0c;有vim的使用&#xff0c;就想着有没有什么方法更快捷&#xff0c;更方便的去使用电脑键盘&#xff0…