span8
span4
该夏皮罗-威尔克测验计算数据的随机样本是否来自一个正态分布。当p值小于或等于0.05(假定95%置信水平)的数据是不正常的。如果测试失败,您可以有95%的信心,你的数据不适合正常的分布状态。
本教程将进入的是如何建立一个可重复使用的定制变压器进行统计检验,使用R或Python的细节。如果您使用不同的统计检验创建自己的定制变压器,我们鼓励你把它发布到FME集线器。
如果使用R:
[R安装 -如何安装r指令
sqldf包安装
如果使用python:
小包装安装
csv类(启动数据集)
rshapirowilkscalector.fmwt型计算器(使用r完成shapiro-wilk自定义转换器)
蟒蛇计算器.fmwt(使用python完成shapiro-wilk自定义转换器)
1。添加数据
在一个空白工作区中的数据集,以测试阅读。对于这个例子,我们将使用cat.csv这仅仅是含有-1.7824和1.1977之间的值1000行随机生成的CSV文件。数据是正态分布的。只要你正在测试的值是数值,您可以使用任何数据集。
添加一个CSV阅读到画布,浏览到cat.csv文件,默认参数都OK。
2。创建自定义转换器
在画布上任意位置单击右键,然后选择创建自定义变压器。命名变压器ShapiroWilkCalculator-R或ShapiroWilkCalculator-PY。如果你愿意,你可以输入描述细节。
三。创建输入参数
我们将需要使用一个属性从整个定制变压器我们的输入数据源,所以让我们做一个发布的参数做到这一点很容易。在自定义选项卡中的变压器,创建一个新发布的参数。然后设置如下:
类型 | 属性名称 |
的名字 | input_data |
提示 | 属性测试: |
发表 | 是的 |
可选 | 没有 |
属性赋值 | 从 |
输入数据发布参数设置
四。创建属性
为了能够重新使用这个定制的变压器容易,我们需要创建一个不不管是什么,我们正在评估属性被命名更改属性。添加属性管理器变压器,并将其连接到自定义变压器内部的输入端口。新属性调用然后shapiro.x的属性值将其设置为:
@ real64(@Value($(input_data)))
我们封闭在@ real64()的参数值,以确保我们的价值观这是需要我们的统计计算的浮点数据类型。
attributeManager参数创建常量属性shapiro.x
你与RCaller继续之前,请确保您有您的计算机,以及将R包安装[RSqldf公司。查看调用方文档有关如何执行此操作。
5个。使用r设置shapiro-wilk测试
现在,我们已经清理了的数据并创建了一个常量属性,我们可以设置RCaller变压器进行夏皮罗 - 威尔克测试。
添加RCaller转换到画布并将其连接到attrbutemanager。在参数中,将输入表名更改为r,然后对于列,将shapiro.x的类型更改为float。单击“确定”接受参数。在表名更改后,您需要将rcaller重新连接到attributemanager。
再次打开rcaller参数并粘贴以下代码:
shapiro<-shapiro.test(r$shapiro.x)fmeoutput<-data.frame(shapiro$statistic,shapiro$p.value)
第一行创建一个名为shapiro的对象,并在r表和shapiro.x列上执行函数shapiro.test(这是shapiro-wilk测试)。此函数产生一个列表对象,因此shapiro成为一个列表。
第二行输出一个名为shapiro的数据帧,其中包含元素statistic和p.value到fmeoutput。右使用$字符访问对象的元素。在本例中,它是从列表中访问元素。
在rcaller中设置的最后一个参数是要公开的属性。单击椭圆并添加shapiro.statistic和shapiro.p.value作为要公开的属性。这允许在RCaller之后的FME工作区中使用这些属性。
shapiro-wilk检验的调用方参数
6.完成自定义变压器
要完成自定义转换器,请将rcaller输出端口连接到自定义转换器的输出端口。然后继续执行步骤10。
shapirowilk-r自定义转换器工作区
在继续之前,请确保短发使用与fme中使用的python相同的版本安装。
7号。保留shapiro.x
我们只需要shapiro.x属性,所以添加AttributeKeeper转换到画布并将其连接到AttributeManager。这将从模式中删除除我们感兴趣的属性之外的所有属性。在参数中选择shapiro.x作为要保留的属性。
8.使用Python设置Shapiro-Wilk测试
现在我们已经清理了数据并创建了一个常量属性,我们可以设置蟒蛇执行shapiro-wilk测试的变压器。
将pythoncaller转换器添加到画布并将其连接到attrbutekeeper。在参数中粘贴以下代码:
import fme import fmeobjects import scipy.stats类featureprocessor(object):def\uu init\uu(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('shapiro.result',results[0])feature.setattribute('shapiro.pvalue',results[1])self.pyoutput(feature)
前三行正在导入不同的包。第一次打开pythoncaller时,import fme和import fmeobjects已经在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。
用于Shapiro-Wilk测试的PythonCaller参数
9.完成自定义变压器
要完成自定义转换器,请将pythoncaller输出端口连接到自定义转换器的输出端口。
ShapiroWilk-Py自定义转换器工作区
10.运行翻译
切换回主选项卡并将检查器添加到shapirowilk-r或shapirowilk py转换器的输出端口。打开自定义转换器的参数并将要测试的属性设置为x,然后运行转换。
最终结果:
接待员:
Python:
11.解释
如果p值小于显著性水平(在本例中为0.05,95%置信区间),则可以拒绝数据正态分布的零假设。用简单的语言来说,如果p值小于0.05,我们可以假设数据不是正态分布的。所以对于我们的数据,p值是4.44,大于0.05,所以我们的数据是正态分布的。
©2019安全亚搏在线软件公司|法律