首页> 中国专利> 一种基于大数据的并行方差分析方法及装置

一种基于大数据的并行方差分析方法及装置

摘要

本发明实施例提供了一种基于大数据的并行方差分析方法及装置,该方法包括:利用分布式文件系统HDFS读取试验数据,并存储所述试验数据,所述试验数据为:行为m、列为p的矩阵,矩阵的每个元素为试验数据X

著录项

  • 公开/公告号CN107229600A

    专利类型发明专利

  • 公开/公告日2017-10-03

    原文格式PDF

  • 申请/专利权人 北京邮电大学;

    申请/专利号CN201710398191.5

  • 申请日2017-05-31

  • 分类号

  • 代理机构北京柏杉松知识产权代理事务所(普通合伙);

  • 代理人马敬

  • 地址 100876 北京市海淀区西土城路10号

  • 入库时间 2023-06-19 03:28:47

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-06-23

    授权

    授权

  • 2017-11-03

    实质审查的生效 IPC(主分类):G06F17/16 申请日:20170531

    实质审查的生效

  • 2017-10-03

    公开

    公开

说明书

技术领域

本发明涉及数据统计技术领域,特别是涉及一种基于大数据的并行方差分析方法及装置。

背景技术

随着数据量的增长,数理统计成为处理信息、做出决策重要理论和方法,通过数理统方法可以从数据中获取信息和判断规律,从而作为数据挖掘工作的先导。

方差分析的前提条件是数据组之间满足独立,即事件一和事件二之间相互影响的概率,方差具有齐性,即各数据组方差相同,均为正态分布。其实质是检验多个正态分布总体均值是否相等,造成数据波动有两个原因:一是影响因素水平不同,二是来自偶然误差,方差分析的作用就是判断是哪一个原因造成的。方差分析包括单因素分析和多双因素分析,单因素分析包括单因素方差分析,多双因素分析包括双因素无重复方差分析和双因素等重复方差分析,其中,单因素方差分析得出该因素是否对数据造成显著性影响的结论,上述检验方法均在SPSS(Statistical Product and Service Solutions,统计产品与服务解决方案)中可以实现,SPSS可以根据输入数据得出一张表,表中信息包含:方差来源、偏差平方和、自由度、方差、计算所得F值、显著性水平(即最终结论)。

目前,现有软件SPSS对数据进行处理时,一行为一条数据,包括信息有:影响因素A的种类、影响因素B的种类、影响因素C的种类等等以及在这些条件下的试验结果。不同条件由不同列决定,这样就造成数据规模消耗较大,例如,有A,B两个因素,因素A包括10个不同的影响水平,因素B包括20个不同的影响水平,则有10*20=200行数据记录,如表1所示,如果再进行重复试验2次,获得10*20*2=400行数据,总的规模就是4列,400行,4*400。

表1 传统的试验数据表

因素A因素B实验次数实验数据111XX……………………10110XX……………………120180XX……………………1020200XX

由此可见,当表中数据达到200M时,利用SPSS对大量数据进行统计处理时,容易造成软件运行困难,难以实现数据分析,亟需一种基于SPSS对输入数据进行简化处理的方法。

发明内容

本发明实施例的目的在于提供一种基于大数据的并行方差分析方法及装置,以实现对大数据进行简化处理,进而对处理后的大数据进行规模化分析。

具体技术方案如下:

一种基于大数据的并行方差分析方法,包括:

利用分布式文件系统HDFS读取试验数据,并存储所述试验数据,所述试验数据为:行为m、列为p的矩阵,矩阵的每个元素为试验数据Xijx,其中,m代表因素A中不同影响水平的个数,因素A中不同影响水平记为A1、A2、…、Ai、…、Am,r代表因素B中不同水平的个数,因素B中不同影响水平记为B1、B2、…、Bj、…、Br,s代表重复做试验的次数;Ai和Bj所做的试验数据为Xij1、Xij2、…、Xijx、…、Xijs;i∈[1,2,…,m],j∈[1,2,…,r],x∈[1,2,…,s],i、j、x、s、m和r属于自然数,且s、m和r中至少两项不能同时取零;

创建一个程序初始运行环境SparkContext;

根据所有试验数据,在所述SparkContext中计算统计量F;

加载F分布表,并查询F分布表,获得Fα值,获取信度阈值α=s0和α=s1,利用F分布表,根据信度阈值α=s0和α=s1在组间的自由度和组内的自由度对应寻找Fs0和Fs1

比较Fs0、Fs1和F,若F<Fs0,则影响不显著,Fs1≤F<Fs0,则影响一般显著;若Fα≥Fs1,则影响高显著。

进一步地,利用分布式文件系统HDFS读取当m≠0、r=0、s≠0时矩阵中的试验数据,所述当m≠0、r=0、s≠0时矩阵中的试验数据为:行为m、列为s的试验数据Xix

进一步地,利用分布式文件系统HDFS读取当m≠0、r≠0、s=1时矩阵中的试验数据,所述m≠0、r≠0、s=1时矩阵中的试验数据为:行为m、列为r的试验数据Xij

进一步地,利用分布式文件系统HDFS读取当m≠0、r≠0、s≠0时矩阵中的试验数据,所述m≠0、r≠0、s≠0时矩阵中的试验数据为:行为m、列为r·s的试验数据Xijx

进一步地,据所有试验数据,利用map算子和reduce算子,按照如下表达式计算统计量F,

所述统计量F的表达式为:因素A的统计量Fa:Fa=Va/Ve

其中,Va为因素A的组间方差,Va=Sa/fa,Ve为组内方差,Ve=Se/fe,Sa为因素A的组间的偏差平方和,Sa=Qa-Ct,Se为组内的偏差平方和,Se=Qt-Ct-Sa,fa为因素A的组间自由度,fa=m-1,fe为组内自由度,fe=m·(s-1),Qa为矩阵中每一行数据和的平方的和除以总列数,Qt为矩阵中所有数据的平方的和,Ct为矩阵中所有数据和的平方除以总个数,

进一步地,根据所有试验数据,利用map算子和reduce算子,按照如下表达式计算统计量F,

所述统计量F的表达式为:因素A的统计量Fa:Fa=Va/Ve,因素B的统计量Fb:Fb=Vb/Ve

其中,Va为因素A的组间方差,Va=Sa/fa,Vb为因素B的组间方差,Vb=Sb/fb,Ve为组内方差,Ve=Se/fe,Sa为因素A的组间的偏差平方和,Sa=Qa-Ct,Sb为因素B的组间的偏差平方和,Sb=Qb-Ct,Se为组内的偏差平方和,Se=Qt-Ct-Sb-Sa,fa为因素A中组间自由度,fa=m-1,fb为因素B中组间自由度,fb=r-1,fe为组内自由度,fe=fa·fb,Qa为矩阵中每一行数据和的平方的和除以总列数,Qb为矩阵中每一列数据和的平方的和,Qt为矩阵中所有数据平方的和,Ct为矩阵中所有数据和的平方除以总个数,

进一步地,所述根据所有试验数据,计算统计量F,包括:

根据所有试验数据,利用map算子和reduce算子,按照如下表达式计算统计量F,

所述统计量F的表达式为:因素A的统计量Fa:Fa=Va/Ve,因素B的统计量Fb:Fb=Vb/Ve,因素A和因素B相互作用的统计量Fab:Fab=Vab/Ve

其中,Va为因素A的组间方差,Va=Sa/fa,Vb为因素B的组间方差,Vb=Sb/fb,Vab为因素A和因素B作用下的组间方差,Vab=Sab/fab,Ve为组内方差,Ve=Se/fe,Sa为因素A的组间的偏差平方和,Sa=Qa-Ct,Sb为因素B的组间的偏差平方和,Sb=Qb-Ct,Se为组内的偏差平方和,Se=Qt-W,Sab为因素A和因素B相互影响下的组间的偏差平方和,Sab=Qt-Ct-Se-Sb-Sa,fa为因素A中组间自由度,fa=m-1,fb为因素B中组间自由度,fb=r-1,fab为因素A和因素B相互影响下的组间自由度,fab=fa·fb,fe为组内自由度,fe=m·r·(s-1),Qa为矩阵中每一行数据和的平方的和除以总列数,Qb为矩阵中因素B中每一列中数据和的平方的和除以因素B中每列数据的个数,Qt为矩阵中每个数据平方的和,Ct为矩阵中所有数据和的平方除以总个数,W为矩阵中因素B中每一列中每一行数据和的平方除以s,

进一步地,所述比较Fs0、Fs1和F,若F<Fs0,则影响不显著,Fs1≤F<Fs0,则影响一般显著;若Fα≥Fs1,则影响高度显著,包括:

Fs0、Fs1分别与Fa和Fb进行比较,

若Fa<Fs0,则因素A影响不显著,若Fb<Fs0,则因素B影响一般显著;

若Fs1≤Fa<Fs0,则因素A影响一般显著,若Fs1≤Fb<Fs0,则因素B影响一般显著;

若Fα≥Fs1,则因素A影响高度显著,若Fb≥Fs1,则因素B影响高度显著。

进一步地,所述比较Fs0、Fs1和F,若F<Fs0,则影响不显著,Fs1≤F<Fs0,则影响一般显著;若Fα≥Fs1,则影响高度显著,包括:

Fs0、Fs1分别与Fa、Fb和Fab进行比较,

若Fa<Fs0,则因素A影响不显著,若Fb<Fs0,则因素B影响一般显著,若Fab<Fs0,则因素A和B相互影响不显著;

若Fs1≤Fa<Fs0,则因素A影响一般显著,若Fs1≤Fb<Fs0,则因素B影响一般显著,若Fs1≤Fab<Fs0,则因素A和B相互影响一般显著;

若Fα≥Fs1,则因素A影响高度显著,若Fb≥Fs1,则因素B影响高度显著,若Fab≥Fs1,则因素A和B相互影响高度显著。

一种基于大数据的并行方差分析装置,该装置包括:数据读取模块、程序创建模块、数据计算模块、查表模块和对比分析模块;

数据读取模块,用于利用分布式文件系统HDFS读取试验数据,并存储所述试验数据,所述试验数据为:行为m、列为p的矩阵,矩阵的每个元素为试验数据Xijx,其中,m代表因素A中不同影响水平的个数,因素A中不同影响水平记为A1、A2、…、Ai、…、Am,r代表因素B中不同水平的个数,因素B中不同影响水平记为B1、B2、…、Bj、…、Br,s代表重复做试验的次数;Ai和Bj所做的试验数据为Xij1、Xij2、…、Xijx、…、Xijs;i∈[1,2,…,m],j∈[1,2,…,r],x∈[1,2,…,s],i、j、x、s、m和r属于自然数,且s、m和r中至少两项不能同时取零;

程序创建模块,用于创建一个程序初始运行环境SparkContext;

数据计算模块,用于根据所有试验数据,在所述SparkContext中计算统计量F;

查表模块,用于加载F分布表,并查询F分布表,获得Fα值,获取信度阈值α=s0和α=s1,利用F分布表,根据信度阈值α=s0和α=s1在组间的自由度和组内的自由度对应查询Fs0和Fs1

对比分析模块,用于比较Fs0、Fs1和F,若F<Fs0,则影响不显著,Fs1≤F<Fs0,则影响一般显著;若Fα≥Fs1,则影响高显著。

本发明实施例提供的一种基于大数据的并行方差分析方法及装置,可以通过简化处理两个因素在不同影响水平作用下的试验数据,处理后的试验数据有效地减少了数据规模,使得SPSS能够高效完成相应分析,实现了对大数据的简化处理,进而对处理后的大数据进行规模化分析。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本实施例中第一种基于大数据的并行方差分析方法的流程图。

图2为本实施例中第二种基于大数据的并行方差分析方法的流程图。

图3为本实施例中第三种基于大数据的并行方差分析方法的流程图。

图4为本实施例中第四种基于大数据的并行方差分析方法的流程图。

图5为本实施例中一种基于大数据的并行方差分析装置的示意图。

图6为本发明实施例中对数据集大小影响的效果图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

方差分析的基本原理是认为不同处理组的均数间的差别基本来源有两个:

(1)实验条件,即不同的处理造成的差异,称为组间差异;

(2)随机误差,如测量误差造成的差异或个体间的差异,称为组内差异。

图1为本申请实施例提供的第一种并行计算方法,该方法包括:

S101,利用分布式文件系统HDFS(The Hadoop Distributed File System,Hadoop分布式文件系统)读取试验数据,并存储所述试验数据,所述试验数据为:行为m、列为p的矩阵,矩阵的每个元素为试验数据Xijx,其中,m代表因素A中不同影响水平的个数,因素A中不同影响水平记为A1、A2、…、Ai、…、Am,r代表因素B中不同水平的个数,因素B中不同影响水平记为B1、B2、…、Bj、…、Br,s代表重复做试验的次数;Ai和Bj所做的试验数据为Xij1、Xij2、…、Xijx、…、Xijs;i∈[1,2,…,m],j∈[1,2,…,r],x∈[1,2,…,s],i、j、x、s、m和r属于自然数,且s、m和r中至少两项不能同时取零;

其中,所述形式如下矩阵的试验数据为:行为m、列为p的矩阵,矩阵的每个元素为试验数据Xijx,其中,其中,i∈[1,2,…,m],j∈[1,2,…,r],x∈[1,2,…,s],i、j、x、s、m和r属于自然数,且s、m和r中至少两项不能同时取零。

具体的,对当m≠0、r=0、s≠0时矩阵中的试验数据进行分析,称之为单因素方差分析:此时,矩阵中的试验数据为:行为m、列为s的试验数据Xix

对当m≠0、r≠0、s=1时矩阵中的试验数据进行分析,称之为双因素无重复方差分析:此时,矩阵中的试验数据为:行为m、列为r的试验数据Xij

对当m≠0、r≠0、s≠0时矩阵中的试验数据进行分析,称之为双因素重复方差分析:此时,表格中的试验数据为:行为r、列为r·s的试验数据Xijx

S102,创建一个程序初始运行环境SparkContext(程序入口点);

其中,所述SparkContext是编写Spark程序用到的第一个类,足以说明SparkContext的重要性;

S103,根据所有试验数据,在所述SparkContext中计算统计量F;

具体的,根据所有试验数据,利用map算子和reduce算子,计算统计量F;

S104,加载F分布表,并查询F分布表,获得Fα值,获取信度阈值α=s0和α=s1,利用F分布表,根据信度阈值α=s0和α=s1在组间的自由度和组内的自由度对应寻找Fs0和Fs1

其中,所述F分布表是统计学中一系列通用的表格,不同信度α对应不同分布表,横坐标是x1,纵坐标是y1,如F0.05(7,9)就查信度是0.05对应的表横坐标为7,纵坐标为9处的值;分别在α=0.05和α=0.01根据组间和组内的自由度找出对应的值Fα。

值得一提的是,我们可以在Spark实现查表操作,具体方法为:选取信度为和s1的s0分布表,将F分布表作为程序的输入文件,用split算子将F分布表存成二维数组,计算自由度,利用自由度作为查找二维数组的下标,找出结果即是Fs0和Fs1

S105,比较Fs0、Fs1和F,若F<Fs0,则影响不显著,Fs1≤F<Fs0,则影响一般显著;若Fα≥Fs1,则影响高显著。

若Fa<Fs0,则因素A影响不显著,若Fb<Fs0,则因素B影响一般显著,若Fab<Fs0,则因素A和B相互影响不显著;

若Fs1≤Fa<Fs0,则因素A影响一般显著,若Fs1≤Fb<Fs0,则因素B影响一般显著,若Fs1≤Fab<Fs0,则因素A和B相互影响一般显著;

若Fα≥Fs1,则因素A影响高度显著,若Fb≥Fs1,则因素B影响高度显著,若Fab≥Fs1,则因素A和B相互影响高度显著。

值得一提的是,在对大数据进行大规模分析时,可对因素A和B获得的影响结果进行两两组合或三三组合分析,例如:

若Fa<Fs0,Fb<Fs0,则因素A和因素B都影响不显著;

若Fα≥Fs1,Fb≥Fs1,则因素A和因素B都影响高度显著;

若Fa<Fs0,Fs1≤Fb<Fs0,则因素A影响不显著,因素B影响一般显著;

若Fb<Fs0,Fs1≤Fa<Fs0,则因素B影响不显著,因素A影响一般显著;

若Fα≥Fs1,Fs1≤Fb<Fs0,则因素A影响高度显著,因素B影响一般显著;

若Fb≥Fs1,Fs1≤Fa<Fs0,则因素B影响高度显著,因素A影响一般显著,

若Fα≥Fs1,Fb<Fs0,则因素A影响高度显著,因素B影响不显著;

若Fb≥Fs1,Fa<Fs0,则因素B影响高度显著,因素A影响不显著。

基于上述具体实现方式,在本申请的第二种具体实现方式中,图2为本实施例中第二种基于大数据的并行方差分析方法的流程图,第二种并行计算方法即单因素方差分析方法,该方法包括:

S201,利用分布式文件系统HDFS读取试验数据,所述形式如下表格的试验数据为:行为m、列为s表格的试验数据Xix;其中,m代表因素A中不同影响水平的个数,因素A中不同影响水平记为A1、A2、…、Ai、…、Am,s代表在因素A不同影响水平下做的试验次数;所述每个影响水平试验数据为X11、…、Xix、…、Xms;i∈[1,2,…,m],x∈[1,2,…,s],i、x、s和m属于自然数,且s和m不能取零,存储入所述分布式文件系统HDFS中的所有试验数据均被集群网络中所有连接的计算机后续共同访问;

具体试验数据表格如表2所示:

表2 单因素试验数据表格

S202,创建一个程序初始运行环境SparkContext(程序初始运行环境);

S203,根据所有试验数据,在所述程序初始运行环境SparkContext中,利用map算子和reduce算子,按照如下表达式计算统计量F,所述统计量F的表达式为:因素A的统计量Fa:Fa=Va/Ve

其中,Va为因素A的组间方差,Va=Sa/fa,Ve为组内方差,Ve=Se/fe,Sa为因素A的组间的偏差平方和,Sa=Qa-Ct,Se为组内的偏差平方和,Se=Qt-Ct-Sa,fa为因素A的组间自由度,fa=m-1,fe为组内自由度,fe=m·(s-1),Qa为矩阵中每一行数据和的平方的和除以总列数,Qt为矩阵中所有数据的平方的和,Ct为矩阵中所有数据和的平方除以总个数,

具体编程过程为:利用map算子读取所存储的试验数据的每一行数据,存成数组A,计算数组A的和,建一个用于存储数据集的变量sumRDD,将所述数组和存入sumRDD;

然后再利用reduce算子对sumRDD进行逐行求和,得到所有试验数据总和,利用所述数据总和除以数据总个数,获得平均数,利用所述平均数的平方除以总数据个数,获得中间变量,记为Ct

遍历数组A,将数组A里的每一个数据求平方,获得数组B,再对所述数组B求和,建一个用于存储所述数组B求和的变量sum2RDD,将所述所述数组B和存入sum2RDD:对sum2RDD求和,获得中间变量Qt

利用map算子读取sumRDD每一行数据,并计算所读取数据的平方值,再用reduce算子对所述平方值求和,将所述和除以行数m,获得结果记为Qa。

S203,加载F分布表,并查询F分布表,获得Fα值,获取信度阈值α=s0和α=s1,利用F分布表,根据信度阈值α=s0和α=s1在组间的自由度和组内的自由度对应寻找Fs0和Fs1

S204,Fs0、Fs1分别与Fa比较,若Fa<Fs0,则影响不显著,Fs1≤Fa<Fs0,则影响一般显著;若Fa≥Fs1,则影响高显著。

基于上述具体实现方式,在本申请的第三种具体实现方式中,图3为本实施例中第三种基于大数据的并行方差分析方法的流程图。第三种并行计算方法即双因素无重复方差分析方法,该方法包括:

S301,利用分布式文件系统HDFS读取试验数据,所述试验数据为:行为m、列为r矩阵的试验数据Xij;其中,m代表因素A中不同影响水平的个数,因素A中不同影响水平记为A1、A2、…、Ai、…、Am,因素B中不同影响水平记为B1、B2、…、Bj、…、Br;因素A和因素B影响水平作用下所做的试验数据,记为X11、…、Xij、…、Xmr;i∈[1,2,…,m],j∈[1,2,…,r],i、j、r、和m属于自然数,且m和r不能取零,存储入分布式文件系统HDFS中的所有试验数据均被集群网络中所有连接的计算机后续共同访问;具体试验数据表格如表3所示:

表3 双因素无重复试验数据表格

S302,创建一个程序初始运行环境SparkContext(程序入口);

S303,根据所有试验数据,在所述程序初始运行环境SparkContext中,利用map算子和reduce算子,按照如下表达式计算统计量F,

所述统计量F的表达式为:因素A的统计量Fa:Fa=Va/Ve,因素B的统计量Fb:Fb=Vb/Ve

其中,Va为因素A的组间方差,Va=Sa/fa,Vb为因素B的组间方差,Vb=Sb/fb,Ve为组内方差,Ve=Se/fe,Sa为因素A的组间的偏差平方和,Sa=Qa-Ct,Sb为因素B的组间的偏差平方和,Sb=Qb-Ct,Se为组内的偏差平方和,Se=Qt-Ct-Sb-Sa,fa为因素A中组间自由度,fa=m-1,fb为因素B中组间自由度,fb=r-1,fe为组内自由度,fe=fa·fb,Qa为矩阵中每一行数据和的平方的和除以总列数,Qb为矩阵中每一列数据和的平方的和,Qt为矩阵中所有数据平方的和,Ct为矩阵中所有数据和的平方除以总个数,

S304,加载F分布表,查询F分布表,获得Fα值,获取信度阈值α=s0和α=s1,利用F分布表,根据信度阈值α=s0和α=s1在组间的自由度和组内的自由度对应寻找Fs0和Fs1

S305,Fs0、Fs1分别与Fa和Fb比较,Fs0、Fs1分别与Fa和Fb进行比较,

若Fa<Fs0,则因素A影响不显著,若Fb<Fs0,则因素B影响一般显著;

若Fs1≤Fa<Fs0,则因素A影响一般显著,若Fs1≤Fb<Fs0,则因素B影响一般显著;

若Fα≥Fs1,则因素A影响高度显著,若Fb≥Fs1,则因素B影响高度显著。

基于上述具体实现方式,在本申请的第四种具体实现方式中,图4为本实施例中第四种基于大数据的并行方差分析方法的流程图。第四种并行计算方法即双因素等重复方差分析方法,该方法包括:

S401,利用分布式文件系统HDFS读取试验数据,所述试验数据为:行为m、列为r·s的矩阵,所述矩阵中的元素为试验数据Xijx,其中,m代表因素A中不同影响水平的个数,因素A中不同影响水平记为A1、A2、…、Ai、…、Am,r代表因素B中不同水平的个数,因素B中不同影响水平记为B1、B2、…、Bj、…、Br,s代表在因素A和因素B每个影响水平作用下重复做的试验次数;所述每个影响水平相互作用下所做的试验数据为Xi11、Xi12、…、Xijx、…、Xirs;i∈[1,2,…,m],j∈[1,2,…,r],x∈[1,2,…,s],i、j、x、s、m和r属于自然数,且m≠0、r≠0、s≠0,所述分布式文件系统HDFS中的所有试验数据均被集群网络中所有连接的计算机后续共同访问;具体试验数据表格如表4所示:

表4 双因素无重复试验数据表格

S402,创建一个程序初始运行环境SparkContext(程序入口);

S403,根据所有试验数据,在所述程序初始运行环境SparkContext中,利用map算子和reduce算子,按照如下表达式计算统计量F,

所述统计量F的表达式为:因素A的统计量Fa:Fa=Va/Ve,因素B的统计量Fb:Fb=Vb/Ve,因素A和因素B相互作用的统计量Fab:Fab=Vab/Ve

其中,Va为因素A的组间方差,Va=Sa/fa,Vb为因素B的组间方差,Vb=Sb/fb,Vab为因素A和因素B作用下的组间方差,Vab=Sab/fab,Ve为组内方差,Ve=Se/fe,Sa为因素A的组间的偏差平方和,Sa=Qa-Ct,Sb为因素B的组间的偏差平方和,Sb=Qb-Ct,Se为组内的偏差平方和,Se=Qt-W,Sab为因素A和因素B相互影响下的组间的偏差平方和,Sab=Qt-Ct-Se-Sb-Sa,fa为因素A中组间自由度,fa=m-1,fb为因素B中组间自由度,fb=r-1,fab为因素A和因素B相互影响下的组间自由度,fab=fa·fb,fe为组内自由度,fe=m·r·(s-1),Qa为矩阵中每一行数据和的平方的和除以总列数,Qb为矩阵中因素B中每一列中数据和的平方的和除以因素B中每列数据的个数,Qt为矩阵中每个数据平方的和,Ct为矩阵中所有数据和的平方除以总个数,W为矩阵中因素B中每一列中每一行数据和的平方除以s,

S404,加载F分布表,查询F分布表,获得Fα值,获取信度阈值α=s0和α=s1,利用F分布表,根据信度阈值α=s0和α=s1在组间的自由度和组内的自由度对应找出Fs0和Fs1

S405,比较Fs0、Fs1和F,若F<Fs0,则影响不显著,Fs1≤F<Fs0,则影响一般显著;若Fα≥Fs1,则影响高度显著,包括:

Fs0、Fs1分别与Fa、Fb和Fab进行比较,

若Fa<Fs0,则因素A影响不显著,若Fb<Fs0,则因素B影响一般显著,若Fab<Fs0,则因素A和B相互影响不显著;

若Fs1≤Fa<Fs0,则因素A影响一般显著,若Fs1≤Fb<Fs0,则因素B影响一般显著,若Fs1≤Fab<Fs0,则因素A和B相互影响一般显著;

若Fα≥Fs1,则因素A影响高度显著,若Fb≥Fs1,则因素B影响高度显著,若Fab≥Fs1,则因素A和B相互影响高度显著。

上述本实施例中的S0可以取0.01,S1可以取0.05,但是该取值仅仅是实施例的一种情况。

图5为本申请实施例提供的一种基于大数据的并行方差分析装置,该装置包括:数据读取模块501、程序创建模块502、数据计算模块503、查表模块504和对比分析模块505;

其中,数据读取模块501,用于利用分布式文件系统HDFS读取试验数据,并存储所述试验数据,所述试验数据为:行为m、列为p的矩阵,矩阵的每个元素为试验数据Xijx,其中,m代表因素A中不同影响水平的个数,因素A中不同影响水平记为A1、A2、…、Ai、…、Am,r代表因素B中不同水平的个数,因素B中不同影响水平记为B1、B2、…、Bj、…、Br,s代表重复做试验的次数;Ai和Bj所做的试验数据为Xij1、Xij2、…、Xijx、…、Xijs;i∈[1,2,…,m],j∈[1,2,…,r],x∈[1,2,…,s],i、j、x、s、m和r属于自然数,且s、m和r中至少两项不能同时取零;

程序创建模块502,用于创建一个程序初始运行环境SparkContext;

数据计算模块503,用于根据所有试验数据,在所述SparkContext中计算统计量F;

查表模块504,用于加载F分布表,并查询F分布表,获得Fα值,获取信度阈值α=s0和α=s1,利用F分布表,根据信度阈值α=s0和α=s1在组间的自由度和组内的自由度对应查询Fs0和Fs1

对比分析模块505,用于比较Fs0、Fs1和F,若F<Fs0,则影响不显著,Fs1≤F<Fs0,则影响一般显著;若Fα≥Fs1,则影响高显著。

具体的,数据读取模块501,包括:

第一数据读取子模块506,用于利用分布式文件系统HDFS读取当m≠0、r=0、s≠0时矩阵中的试验数据,所述当m≠0、r=0、s≠0时矩阵中的试验数据为:行为m、列为s的试验数据Xix

第二数据读取子模块507,用于利用分布式文件系统HDFS读取当m≠0、r≠0、s=1时矩阵中的试验数据,所述m≠0、r≠0、s=1时矩阵中的试验数据为:行为m、列为r的试验数据Xij

第三数据读取子模块508,用于利用分布式文件系统HDFS读取当m≠0、r≠0、s≠0时矩阵中的试验数据,所述m≠0、r≠0、s≠0时矩阵中的试验数据为:行为m、列为r·s的试验数据Xijx

具体的,数据计算模块503,还包括:

第一数据计算子模块509,用于根据所有试验数据,利用map算子和reduce算子,按照如下表达式计算统计量F,

所述统计量F的表达式为:因素A的统计量Fa:Fa=Va/Ve

其中,Va为因素A的组间方差,Va=Sa/fa,Ve为组内方差,Ve=Se/fe,Sa为因素A的组间的偏差平方和,Sa=Qa-Ct,Se为组内的偏差平方和,Se=Qt-Ct-Sa,fa为因素A的组间自由度,fa=m-1,fe为组内自由度,fe=m·(s-1),Qa为矩阵中每一行数据和的平方的和除以总列数,Qt为矩阵中所有数据的平方的和,Ct为矩阵中所有数据和的平方除以总个数,

第二数据计算子模块510,用于根据所有试验数据,利用map算子和reduce算子,按照如下表达式计算统计量F,

所述统计量F的表达式为:因素A的统计量Fa:Fa=Va/Ve,因素B的统计量Fb:Fb=Vb/Ve

其中,Va为因素A的组间方差,Va=Sa/fa,Vb为因素B的组间方差,Vb=Sb/fb,Ve为组内方差,Ve=Se/fe,Sa为因素A的组间的偏差平方和,Sa=Qa-Ct,Sb为因素B的组间的偏差平方和,Sb=Qb-Ct,Se为组内的偏差平方和,Se=Qt-Ct-Sb-Sa,fa为因素A中组间自由度,fa=m-1,fb为因素B中组间自由度,fb=r-1,fe为组内自由度,fe=fa·fb,Qa为矩阵中每一行数据和的平方的和除以总列数,Qb为矩阵中每一列数据和的平方的和,Qt为矩阵中所有数据平方的和,Ct为矩阵中所有数据和的平方除以总个数,

第三数据计算子模块511,用于根据所有试验数据,利用map算子和reduce算子,按照如下表达式计算统计量F,

所述统计量F的表达式为:因素A的统计量Fa:Fa=Va/Ve,因素B的统计量Fb:Fb=Vb/Ve,因素A和因素B相互作用的统计量Fab:Fab=Vab/Ve

其中,Va为因素A的组间方差,Va=Sa/fa,Vb为因素B的组间方差,Vb=Sb/fb,Vab为因素A和因素B作用下的组间方差,Vab=Sab/fab,Ve为组内方差,Ve=Se/fe,Sa为因素A的组间的偏差平方和,Sa=Qa-Ct,Sb为因素B的组间的偏差平方和,Sb=Qb-Ct,Se为组内的偏差平方和,Se=Qt-W,Sab为因素A和因素B相互影响下的组间的偏差平方和,Sab=Qt-Ct-Se-Sb-Sa,fa为因素A中组间自由度,fa=m-1,fb为因素B中组间自由度,fb=r-1,fab为因素A和因素B相互影响下的组间自由度,fab=fa·fb,fe为组内自由度,fe=m·r·(s-1),Qa为矩阵中每一行数据和的平方的和除以总列数,Qb为矩阵中因素B中每一列中数据和的平方的和除以因素B中每列数据的个数,Qt为矩阵中每个数据平方的和,Ct为矩阵中所有数据和的平方除以总个数,W为矩阵中因素B中每一列中每一行数据和的平方除以s,

具体的,对比分析模块505,包括:

第一对比分析子模块512,用于Fs0、Fs1分别与Fa和Fb进行比较,

若Fa<Fs0,则因素A影响不显著,若Fb<Fs0,则因素B影响一般显著;

若Fs1≤Fa<Fs0,则因素A影响一般显著,若Fs1≤Fb<Fs0,则因素B影响一般显著;

若Fα≥Fs1,则因素A影响高度显著,若Fb≥Fs1,则因素B影响高度显著。

第二对比分析子模块513,用于Fs0、Fs1分别与Fa、Fb和Fab进行比较,

若Fa<Fs0,则因素A影响不显著,若Fb<Fs0,则因素B影响一般显著,若Fab<Fs0,则因素A和B相互影响不显著;

若Fs1≤Fa<Fs0,则因素A影响一般显著,若Fs1≤Fb<Fs0,则因素B影响一般显著,若Fs1≤Fab<Fs0,则因素A和B相互影响一般显著;

若Fα≥Fs1,则因素A影响高度显著,若Fb≥Fs1,则因素B影响高度显著,若Fab≥Fs1,则因素A和B相互影响高度显著。

基于此,对上述方法进行了试验验证,具体为:

为了验证实例2-4,将在Spark上实现方差分析的三个算法即单因素方差分析方法算法、双因素无重复方差分析方法算法、双因素等重复方差分析方法算法。随后,将相同的数据分别输入SPSS中方差分析和Spark上实现的方差分析,以此验证所实现算法正确性,以保证可以得到正确的判断结果。最后,将不同规模的数据集分别实验于单因素方差分析,双因素无重复方差分析和双因素等重复方差分析,并记录结果。

(1)正确性评估

本实验主要关注并行化后的方差分析算法是否能计算出正确的结果,结果以SPSS软件计算得出的为准,结果相同则视为并行化后计算正确。

单因素方差分析即实例2:

试验数据:5组不同工艺方法下的实验结果,将试验数据分别输入SPSS和所编写Scala程序中,如表5和6所示,所得结果如下:

表5 效应检验

平方和自由度均方F值显著性组间131.957432.9894.306.016组内114.915157.661总计246.87219

表6 Scala程序运行结果

由表5和6可以看出,两个结果相同,说明程序计算正确。

双因素无重复方差分析即实例3:

试验数据:A因素有4个水平,B因素有6个水平,因素A和因素B两两配对的情况下的实验结果。将试验数据分别输入SPSS和所编写Scala程序中,所得结果见表7和表如下:

表7 主体间效应检验

表8 Scala程序运行结果

由表7和8可以看出,两个结果相同,说明程序计算正确。

双因素等重复方差分析即实例4:

试验数据:A因素有4个水平,B因素有3个水平,因素A和因素B两两配对的情况下且每种情况实验两次的结果。将试验数据分别输入SPSS和所编写Scala程序中,所得结果见表9和表10:

表9 主体效应检查

表10 Scala程序运行结果

由表9和10可见,两个结果相同,表明程序计算正确。

(2)数据集大小的影响

为了测试数据集大小变化对算法性能的影响,利用Spark中产生正态分布向量算子:normalVectorRDD来生成指定行数、列数的正态分布数据。数据集规模分别是200M,2G,5G,10G,见图6,图6显示了单因素方差分析,双因素无重复方差分析和双因素等重复方差分析算法分别对4个数据处理的运行时间。由图6可见,三个算法中,运行时间随着算法的复杂性增加而增加,实现了大规模数据进行方差分析,其中,双因素等重复方差分析最为复杂所以耗时最久。

由上可知,当遇到大数据规模时,常用统计软件SPSS已经无法处理时,ANOVAOnSpark可以高效完成相应分析,并且由于输入数据格式的改变,有效减少了数据规模。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号