第8页
第4排
这个夏皮罗-威尔克测验计算随机数据样本是否来自正态分布。当p值小于或等于0.05(假设置信水平为95%)时,数据不正常。如果测试失败,您可以95%的置信度声明您的数据不符合正态分布。
本教程将详细介绍如何设置可重用的自定义转换器以使用R或Python执行统计测试。如果您使用不同的统计测试创建自己的自定义转换器,我们鼓励您将其发布到FME轮毂。
如果使用R:
R已安装-如何安装R指令
sqldf包安装
如果使用python:
锡皮包装安装
cat.csv文件 (启动数据集)
rshapirowilksCalculator.fmwt(rshapirowilksCalculator.fmwt) (使用R完成夏皮罗-威尔克定制变压器)
pythonshapirowilkscalculator.fmwt(使用python完成了shapiro-wilk自定义转换器)
1.添加数据
在空白工作区中读取要测试的数据集。对于这个例子,我们将使用cat.csv,它只是一个随机生成的csv文件,包含1000行,值介于-1.7824和1.1977之间。数据是正态分布的。只要测试的值是数值,就可以使用任何数据集。
将csv阅读器添加到画布并浏览cat.csv文件,默认参数正常。
2.第二步。创建自定义转换器
在画布上的任意位置单击鼠标右键,然后选择“创建自定义转换器”。将变压器命名为shapirowilkcalculator-r或shapirowilkcalculator py。如果需要,可以输入描述详细信息。
三。创建输入参数
我们将需要在整个自定义转换器中使用来自输入数据源的属性,因此让我们创建一个发布的参数来轻松完成这一任务。在“自定义转换器”选项卡中,创建新的已发布参数。然后设置以下内容:
类型 | 属性名称 |
姓名 | 输入数据 |
提示 | 要测试的属性: |
出版 | 是的 |
可选 | 不 |
属性分配 | 下车 |
输入数据发布参数设置
第四章。创建属性
为了能够轻松地重用这个自定义转换器,我们需要创建一个属性,不管我们要评估的属性是什么,它都不会改变。添加属性管理器变压器并将其连接到自定义变压器内的输入端口。对于新属性,请将其命名为shapiro.x,然后对于属性值,将其设置为:
@real64(@value($(input_data)))
我们将参数值括在@real64()中,以确保我们的值是统计计算所需的浮点数据类型。
用于创建常量属性shapiro.x的attributeManager参数
在你继续打卡勒之前,请确保您的计算机上安装了R,以及R包sqldf.查看RCaller文档有关如何执行此操作的说明。
5.用R建立夏皮罗威尔克测验
现在,我们已经清理了数据并创建了一个常量属性,我们可以设置RCaller Transformer来执行shapiro-wilk测试。
添加卡勒转换到画布并将其连接到AttrBuseManager。在参数中,将输入表名更改为r,然后对于列,将shapiro.x的类型更改为float。单击“确定”接受参数。更改表名后,需要将RCaller重新连接到attributeManager。
再次打开RCaller参数并粘贴以下代码:
shapiro<-shapiro.test(r$shapiro.x)fmeoutput<-data.frame(shapiro$statistic,夏皮罗(P.VALUE)
第一行是创建一个名为shapiro的对象,并在r表和shapiro.x列上执行函数shapiro.test(即shapiro-wilk测试)。此函数生成一个列表对象,所以夏皮罗成了一个名单。
第二行输出一个名为shapiro的数据帧,其中包含元素统计和p.value到fmeoutput。r使用$字符访问对象的元素。在这种情况下,它正在从列表中访问元素。
要在RCaller中设置的最后一个参数是要公开的属性。单击椭圆并添加shapiro.statistic和shapiro.p.value作为要公开的属性。这允许在RCaller之后在FME工作区中使用这些属性。
夏皮罗-威尔克试验的RCaller参数
6.完成自定义变压器
完成定制变压器,将RCaller输出端口连接到自定义变压器的输出端口。然后继续执行步骤10。
shapirowilk-r自定义转换器工作区
在继续之前,请确保坐骨神经痛安装时使用的python版本与在fme中使用的版本相同。
第七章。保存shapiro.x
我们只需要shapiro.x属性,所以添加一个属性keeper转换到画布并将其连接到属性管理器。这将从模式中删除除我们感兴趣的属性之外的所有属性。在参数中选择shapiro.x作为要保留的属性。
8.使用python设置shapiro-wilk测试
现在我们已经清理了数据并创建了一个常量属性,我们可以设置蟒蛇变压器执行夏皮罗威尔克测试。
在画布上添加一个pythoncaller转换器,并将其连接到attrbutekeeper。在参数中粘贴以下代码:
导入fmeimport fmeobjects import scipy.statsclass featureprocessor(对象):def u init uuuu(self):self.x=[]def input(self,feature):self.x.append(float(feature.getattribute('shapiro.x'))def close(self):results=scipy.stats.shapiro(self.x)feature=fmeobjects.fmefeature()feature.setattribUte('夏皮罗结果',结果[0])feature.setattribute('shapiro.pValue',结果[1])self.pyoutput(feature)
前三行导入不同的包。第一次打开时,导入FME和导入FME对象已经在pythoncaller中,所以您只需要添加import scipy.stats就可以使用shapiro-wilk测试。
self.x.append(feature.getattribute('shapiro.x'))使用属性shapiro.x作为输入属性。
结果=scipy.stats.shapiro(self.x)从scipy.stats包调用shapiro函数
最后,最后四行是创建要在FME中使用的属性。
在关闭python调用程序之前,单击要公开的属性旁边的省略号,添加shapiro.result和shapiro.pvalue,然后选择shapiro.x作为要隐藏的属性。
单击“确定”关闭蟒蛇。
夏皮罗-威尔克试验的pythoncaller参数
9.完成自定义变压器
完成定制变压器,将pythoncaller输出端口连接到自定义变压器的输出端口。
shapirowilk py自定义转换器工作区
10.运行翻译
切换回主选项卡,并向shapirowilk-r或shapirowilk-py变压器的输出端口添加一个检查器。打开自定义转换器的参数并将属性设置为“测试”x,然后运行翻译。
最终结果:
R:
蟒蛇:
11.解释
如果p值小于显著性水平(在本例中为0.05,95%置信区间)可以拒绝数据正态分布的空假设。用通俗易懂的语言,如果p值小于0.05,我们可以假设数据不是正态分布的。所以对于我们的数据,p值是4.44,大于0.05,所以我们的数据是正态分布的。
?2019安全亚搏在线软件公司|法律