span8
span4
的夏皮罗 - 威尔克测试计算数据的随机样本是否来自正态分布。当p值小于或等于0.05(假设95%置信水平)时,数据是不正常的。如果这个测试失败,你可以用95%的置信度来表示你的数据不符合正态分布。
本教程将详细介绍如何设置可重用的自定义转换器,以便使用R或Python执行统计测试。如果您使用不同的统计测试创建自己的自定义转换器,我们建议您将其发布到FME枢纽。
如果使用R:
R -安装如何安装R指令
sqldf包安装
如果使用Python:
SciPy的包安装
cat.csv(起始数据集)
RShapiroWilksCalculator.fmwt(,使用R完成夏皮罗 - 威尔克定制变压器)
PythonShapiroWilksCalculator.fmwt(使用Python完成夏皮罗 - 威尔克定制变压器)
1。添加数据
在空白工作区中读取要测试的数据集。对于本例,我们将使用cat.csv,它是一个随机生成的CSV文件,包含1000行,值在-1.7824和1.1977之间。数据是正态分布的。只要测试的值是数值的,就可以使用任何数据集。
将CSV阅读器添加到画布并浏览到cat.csv文件,默认参数为ok。
2。创建自定义变压器
右键单击画布上的任何位置并选择Create Custom Transformer。将变压器命名为ShapiroWilkCalculator-R或ShapiroWilkCalculator-Py。如果您愿意,可以输入描述细节。
3。创建输入参数
我们将需要在整个自定义转换器中使用来自输入数据源的属性,所以让我们创建一个发布参数来轻松实现这一点。在custom transformer选项卡中,创建一个新的发布参数。然后设置如下:
类型 | 属性名称 |
名称 | 输入数据 |
提示 | 属性测试: |
发布时间 | 是 |
可选的 | 没有 |
属性分配 | 离 |
input_data发布的参数设置
4。创建属性
为了能够方便地重用这个自定义转换器,我们需要创建一个属性,这个属性不会改变,无论我们要计算的属性是什么。添加一个AttributeManager并将其连接到自定义变压器内的输入端口。对于新的属性,我们称之为夏皮罗。x then for the Attribute Value set it to:
@real64 (@ value ($ (input_data)))
我们在@real64()中包含了参数值,以确保我们的值是统计计算所需的浮点数据类型。
AttributeManager参数创建常量属性shapiro.x
在继续使用RCaller之前,请确保您的计算机上已经安装了R和R包sqldf。看到RCaller文档以获取如何进行此操作的说明。
5。,使用R设置夏皮罗Wilk检验
现在我们已经清理了数据并创建了一个常量属性,我们可以设置RCaller转换器来执行Shapiro-Wilk测试。
添加一个RCaller变压器到画布,并连接它的AttrbuteManager。在参数改变输入表名称至R则列改变键入shapiro.x浮动。单击确定接受的参数。你需要的表名更改后RCaller重新连接到AttributeManager。
再次打开RCaller参数并粘贴下面的代码:
夏皮罗< - shapiro.test(R $ shapiro.x)fmeOutput <-data.frame(夏皮罗$统计量,夏皮罗$ p.value)
第一行建立一个命名对象Shapiro和正在执行的功能shapiro.test(这是夏皮罗 - 威尔克试验)在R表和shapiro.x柱。此功能会导致一个列表对象,所以夏皮罗成为一个列表。
两线被输出称为夏皮罗与元件统计和p.value到fmeOutput的数据帧。R使用$符号访问对象的元素。在这种情况下,它正在访问从一个列表中的元素。
在RCaller设置的最后一个参数是属性揭露。单击椭圆形,并添加shapiro.statistic和shapiro.p.value作为属性暴露。这允许这些属性在RCaller后FME工作区来使用。
对于夏皮罗Wilk检验RCaller参数
6。完成自定义变压器
为了完成定制变压器,其输出RCaller端口连接到输出端口自定义变压器。然后继续步骤10。
ShapiroWilk-R定制变压器的工作区
在继续之前,请确保您有SciPy的安装使用Python的相同版本所使用的FME。
7。保持shapiro.x
我们只需要shapiro.x属性,因此添加保留指定变压器到画布上,并将其连接到AttributeManager。这将删除一切从架构的属性,除了一个我们感兴趣。在参数选择shapiro.x的属性保持。
8。设置夏皮罗一威尔克测试使用Python
现在,我们已经清理了的数据并创建了一个常量属性,我们可以设置PythonCaller变压器进行夏皮罗 - 威尔克测试。
一个PythonCaller变压器添加到画布,并将其连接到AttrbuteKeeper。在参数粘贴以下代码:
进口FME进口fmeobjects导入scipy.stats类FeatureProcessor(对象)的:def __init __(个体):self.x = [] DEF输入(个体,特征):self.x.append(浮子(feature.getAttribute('shapiro.x')))DEF关闭(个体):结果= scipy.stats.shapiro(self.x)功能= fmeobjects.FMEFeature()feature.setAttribute(' shapiro.result '结果[0])feature.setAttribute(' 夏皮罗.pvalue”,结果[1])self.pyoutput(特征)
前三行导入不同的软件包。进口FME和进口fmeobjects将已经在PythonCaller当你第一次打开它,所以你只需要增加进口scipy.stats能够使用夏皮罗 - 威尔克测试。
self.x.append(feature.getAttribute( 'shapiro.x'))使用属性shapiro.x作为输入属性。
结果= scipy.stats.shapiro(self.x)要求从scipy.stats包夏皮罗功能
最后,最后四行创建的属性FME中使用。
关闭Python的调用者之前,单击省略号旁边的属性揭露并添加shapiro.result和shapiro.pvalue然后属性隐藏选择shapiro.x。
单击确定关闭PythonCaller。
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安全亚搏在线软件公司法律