百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

方差分析 in R语言 and Excel 方差检验r语言

lipiwang 2024-10-28 17:28 8 浏览 0 评论

今天来写一篇实际中比较实用的分析方法,方差分析。通过方差分析,我们可以确定组别之间的差异是否超出了由于随机因素引起的差异范围。方差分析分为单因素方差分析和多因素方差分析,这一篇先介绍一下单因素方差分析,后续看需求介绍多因素方差分析。本篇使用的工具是R语言和Excel来实现,下一篇再使用常用的Python来实现一下,这样就可以根据不同的需求选择不同的工具了。

这次使用的数据如下,复制链接到浏览器就可以直接下载了↓

https://linss.oss-cn-beijing.aliyuncs.com/Excel/ANOVA_data.xlsx

数据的业务逻辑大概是,有四个省份,然后进行了一次培训。培训前后不同人员的销售金额的变化,需要看每个省份培训后是否带来销售额的提升,再决定后续是否加大培训,以及全国其他省份都进行培训的推广。

首先我们通过直观的图形来看一下,每个省份的平均销售金额有不有提升,在Excel里面绘制一个直方图↓

从图形可以看出,培训后河南、江西、四川三个省份销售均值都有提升,且四川提升最明显;而山东省销售金额还有所下降。然后我们在绘制箱线图来看看整体分布情况变化大不大↓

箱线图的绘制有Excel、PowerBI、R语言、Python四种工具可以参考《PowerBI箱线图 and Excel》《R语言_010可视化(箱型图)》《seaborn_boxplot》

可以看到,整体分布变化不大,四川、江西都有提升,河南整体有提升但是中位数在下降,山东整体下降。但是这只是直观的变化感受,实际在统计学意义上是否显著,是否培训真的带来了明显的效果,还需要做统计检验,这里就是用方差分析来实现。

如果为了介绍的完整性,我们这里还要花很大的篇幅来介绍方差的假设、方差的计算推导步骤(组内平方和、组间平方和、计算均值、计算F值、判断显著性),这写原理大概了解就行了,就可以当成一个黑盒子,根据实际需求,知道传入什么参数,然后能根据结果判断就行了,不必全部深究。这里使用Excel和R语言来对上面的数据做方差分析↓


【Excel方差分析】

Excel的数据分析功能其实很强大,除了函数功能外,还有一个专门的数据分析模块,里面常用的数据统计分析方法都有,这里就介绍一下单因素方差分析。

在Excel的方差分析里,数据字段的格式要求是几个数据就需要放几列,我们这里有两个阶段,就需要分别把两个阶段的结果放成两列。然后因为四个省份培训的人和内容有差异,所以需要四个省份分别来做方差分析,数据如下↓

下面是Excel里面方差分析的步骤↓

菜单【数据】->【数据分析】,然后在出现的界面里面选择单因素方差分析↓

然后参数选择很简单,Input Range选择我们的两列数据就行了,然后把标签在首行勾选上,默认的Alpha值是0.05,使用默认的就行;最后选择输出位置,可以新建一个sheet,或者就在当前sheet里面选择一个单元格作为输出的起始位置就行了↓

最后的输出结果如下↓

如果对方差分析过程参数感兴趣可以看一下其他参数,但是一般使用中我们看一下P值就行了,就是0.05作为判断标准,如果小于0.05就表示我们培训前后效果是显著的,本次四川省的培训效果对销售量有实际提升。

然后我们再使用同样的方式,对剩下三个省份进行方差分析,结果我只取P值,如下↓

江西省:0.32401085013613;

山东省:0.581523331518028;

河南省:0.397483802566017。

可以看到都不显著,说明虽然河南和江西有增长,山东有下降,但都不是因为培训带来的,可能是其他随机因素导致的结果。

所以我们的整体结论是,培训在部分省份有效果,可把四川省的培训方式在复制一份到其他省份看效果,再验证结果是否显著。


【R语言方差分析】

其实在做方差分析前,还需要先对数据本身情况进行检验,检验效果通过才能进行下一步的方差分析,不然分析结论就没意义了。当进行方差分析之前,正态性和方差齐性检验是非常重要的步骤。这些检验可以帮助我们验证方差分析的前提条件是否满足,从而确保我们得到的分析结果是可靠的。

正态性和方差齐性的检验,在Excel里面操作就很麻烦了,但是在代码工具比如R或Python就很简单了,都有成熟的包可以直接调用,我们对两种检验分别使用两种常用的方法,也可以对比看一下效果。

正态性检验-Shapiro-Wilk检验】

Shapiro-Wilk检验是一种用于检验数据是否符合正态分布的统计检验方法。在R语言中,通过shapiro.test()函数可以进行Shapiro-Wilk检验。假设检验的零假设是数据符合正态分布。如果p值小于显著性水平,则拒绝零假设,表示数据不符合正态分布。

shapiro.test(df$销量)

这是对所有样本进行正态性的检测,只是看一下,因为实际我们还是分别对各省每个阶段的数据分别进行正态性检测,结果如下↓

	Shapiro-Wilk normality test

data:  df$销量
W = 0.99199, p-value = 0.0002547

可以看到P值是不到0.01的,所以不能接受原假设(符合正态分布),所以整体来看是不通过正态性检测的。所以我们还是分别对各省来进行正态性检验,看看效果↓

df_jx = subset(df,df$省份 == "江西省")
shapiro.test(df_jx$销量)
	Shapiro-Wilk normality test

data:  df_jx$销量
W = 0.99592, p-value = 0.8728

江西省的P值是0.87,通过正态性检测。其他几个省份同样操作,结果如下:

四川0.11,河南0.23,山东0.54都通过了正态性检测。

正态性检验-Kolmogorov-Smirnov检验】

Kolmogorov-Smirnov检验用于检验一个样本是否来自特定分布。在R语言中,通过ks.test()函数可以进行Kolmogorov-Smirnov检验。我们将数据与正态分布进行比较,如果p值小于显著性水平,则表示数据不符合正态分布。

还是先看一下整体的分布是否正态

ks.test(df$销量, "pnorm", mean(df$销量), sd(df$销量))
	Asymptotic one-sample Kolmogorov-Smirnov test

data:  df$销量
D = 0.044542, p-value = 0.08363
alternative hypothesis: two-sided

结果也是勉强通过检验,还是需要看一下每个省份的检验效果。

ks.test(df_jx$销量, "pnorm", mean(df_jx$销量), sd(df_jx$销量))
	Asymptotic one-sample Kolmogorov-Smirnov test

data:  df_jx$销量
D = 0.046131, p-value = 0.7883
alternative hypothesis: two-sided

江西省的结果是0.778,其他四川是0.24、河南是0.87、山东是0.87,都非常完美的通过了检验。

方差齐性检验-Bartlett检验】

Bartlett检验用于检验不同组之间的方差是否相等。在R语言中,通过bartlett.test()函数可以进行Bartlett检验。假设检验的零假设是各组样本的方差相等。如果p值小于显著性水平,则拒绝零假设,表示各组样本的方差不相等。

我们就直接使用每个省份的数据来进行检验了,江西省代码和结果如下↓

bartlett.test(df_jx$销量 ~ df_jx$次数)
	Bartlett test of homogeneity of variances

data:  df_jx$销量 by df_jx$次数
Bartlett's K-squared = 0.25787, df = 1, p-value = 0.6116

结果为0.61,通过了方差齐性检验,表示江西省这两次的结果方差整体差异不大。

其他三个省份的结果分别是,四川0.53,河南0.36,山东0.93,都完美的通过了Bartlett方差齐性检测。

方差齐性检验-Levene检验】

Levene检验也用于检验不同组之间的方差是否相等,通常用于小样本情况。在R语言中,通过leveneTest()函数进行Levene检验。同样,假设检验的零假设是各组样本的方差相等。如果p值小于显著性水平,则表示各组样本的方差不相等。

还是重复上面的操作,江西省效果如下↓

leveneTest(df_jx$销量 ~ df_jx$次数)
Levene's Test for Homogeneity of Variance (center = median)
       Df F value Pr(>F)
group   1  0.2638 0.6081
      198

结果为0.61,通过了方差齐性检验,表示江西省这两次的结果方差整体差异不大。

其他三个省份的结果分别是,四川0.38,河南0.57,山东0.98,也都完美的通过了Levene方差齐性检测。


【R语言正式方差分析】

通过一系列的检测,并且都通过了,我们就可以顺利的进入到最后一步,进行各省的方差分析了。

我们还是直接从省份开始了,在R里面,方差分析就是aov函数,参数就是分析的数据和维度,江西省代码如下↓

aov_jx <- aov(df_jx$销量 ~ df_jx$次数)
summary(aov_jx)
             Df Sum Sq Mean Sq F value Pr(>F)
df_jx$次数    1    105   105.1   0.978  0.324
Residuals   198  21293   107.5

结果是0.324,和Excel里面的结果是完全一样的,没有通过方差检验,说明江西省这次培训前后销量的变化没有差异。

然后是几个省份的值:

四川是0.0378,表示培训前后销售有明显变化,而且在R语言里面如果通过了显著性检验,会在P值后面标记*,三*最好↓

             Df Sum Sq Mean Sq F value Pr(>F)  
df_sc$次数    1   1842  1842.2   4.371 0.0378 *
Residuals   198  83447   421.5                 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

剩下的河南0.397,山东0.582都是和Excel结果一样的。


完成了方差分析后,我们才有更可靠的统计学支撑,对比只看表面图形和数字的变化更具有说服力。也是作为业务判断有力的一个标准。

链接是我使用PowerBI整合的历史文章,按类型分类,可以根据需求查询:Microsoft Power BI↓

https://app.powerbi.com/view?r=eyJrIjoiNjI2NWQ3NjktYjU0ZC00ZWZhLTgzMDgtMGI4ZTk1ZDlkODM3IiwidCI6IjI3NDQ3MWQ0LTM4ZDQtNDVlZS1hMmJkLWU1NTVhOTBkYzM4NiJ9

End

相关推荐

想减少Windows 11内存占用?请取消固定Teams

如果你想要提高Windows11系统的运行速度,那么可以禁用某些默认启用的功能和设置。如果你的Windows11是安装在已经停止支持的设备或者内存容量不高的旧设备,那么应该立即限制或禁用固...

Windows查看端口占用、查看PID对应的进程、并终止进程

Windows下:查看端口占用netstat-ano|findstr"端口号"获取到pid查看PID对应的进程tasklist|findstr"进程ID"...

计算机组成原理(36): 分时之一——进程

建立一个虚拟机VM目标:给每个程序一个自己的虚拟机“VirtualMachine”,程序并不知道其他的虚拟机。1.1进程(Process)为了捕获正在运行的程序,我们创建一个称为“进程(Proce...

window系统如何停止端口被占用的进程(高手版)

如上图1,作为开发人员是不是经常遇到这个问题?(Webserverfailedtostart.Port9527wasalreadyinuse.)当然,如果在你知道确实有某个进程正占...

电脑的文件无法删除咋回事?你需要这款神兵利器

很多朋友用电脑的时候,都遇到过文件无法删除的情况。这往往是由于文件被某个软件、进程所调用所引发的——在Windows中,某个文件如果被使用,这个文件可能就没法进行删除、重命名之类的操作了。想要进一步操...

Windows日志分析(windows 日志文件)

1.Windows日志文件简介1.1Windows日志核心分类1.系统日志系统日志包含由Windows系统组件记录的事件,记录系统进程和设备驱动程序的活动。由它审核的系统事件包括启动失败的设备驱动程...

电脑软件崩溃、闪退不用慌!DJS Tech 教你几招轻松解决

当你正全神贯注用电脑处理重要文件、沉浸在精彩的游戏世界,或是观看喜欢的视频时,软件突然崩溃、闪退,那一刻的烦躁简直难以言喻。别着急,DJSTech作为深耕计算机领域多年的专业团队,为你带来一系列超...

微软Win11推进淘汰控制面板,时间服务器配置迁移至设置应用

IT之家5月29日消息,科技媒体Winaero昨日(5月28日)发布博文,报道称微软在Windows11系统中,继续推进“淘汰控制面板”进程,配置时间服务器地址选项迁移到设置应...

微软 PowerToys更新,可帮你找出 Win11上哪些进程正在占用该文件

IT之家11月3日消息,微软针对Windows11和Windows10的PowerToys已经更新到了最新的0.64.0版本,并上线了一个名为“文件锁匠FileLock...

Windows基础操作 认识任务管理器(windows任务管理器的使用)

Windows基础操作:认识任务管理器任务管理器(TaskManager)是Windows系统中一个功能强大的实用工具,它为用户提供了实时监控系统资源、管理正在运行的程序和服务的能力。掌握任务管理器...

windows——netstat过滤(终止进程)

windows——netstat过滤(终止进程)在Windows操作系统中,使用netstat命令可以查看网络连接的状态。要过滤特定协议或端口的连接,可以使用以下命令:查看所有连接:netstat-...

只要这么做 Windows Defender与第三方就能和平共存啦

无论大家是否喜欢WindowsDefender,伴随着Windows10的不断升级,它已经成为系统的底层必备组件之一。虽然我们有各种各样的方法去关闭它,换用顺手的第三方,但只要更新打补丁,噩梦就来...

Win10如何彻底关闭wsappx进程(win10 wsappx怎么关闭)

win10如何彻底关闭wsappx进程?wsappx进程是什么?wsappx进程是Windows10系统的一部分,这个进程是WindowsStore和微软通用应用程序平台(UWP)的依赖进程。...

Windows环境黑客入侵应急与排查(黑客入侵电脑原理)

1文件分析1.1临时目录排查黑客往往可能将病毒放在临时目录(tmp/temp),或者将病毒相关文件释放到临时目录,因此需要检查临时目录是否存在异常文件。假设系统盘在C盘,则通常情况下的临时目录如下...

Windows 11 24H2 KB5044384出现大面积安装失败、任务管理器0进程等问题

Windows11KB5044384更新由于出现大量错误而无法在Windows1124H2上安装、其中包括一个奇怪的错误,即由于0x800f0922、0x800736b3和0x8...

取消回复欢迎 发表评论: