与inlier一起工作我一直对使用Inlier感兴趣,因为我看到的大量数据越来越成为一个问题。想知道是否有人邀请客户提出这一点?这些异常值在许多情况下都不适合使用探索异常值工具。因此,我最终将这些技术中的一种或多种结合在一起。在这里欢迎其他策略的建议。
我有一个有关客户数据用户计数的示例。就#个用户而言,许多数据都是真实的,但其中有大量的用户数量以及100、200、500、2500等。这些只是接触用户数上限,而不是站点上准确的用户数。它们是内在的,应该真正地丢失或以其他方式处理。如果您知道这些值是内在值(很容易在Graph Builder或distirbution中发现),则可以执行以下操作:
For Each Row(
:Name( "Potassium (mg)" ) = Match( :Name( "Potassium (mg)" ),
200, .,
:Name( "Potassium (mg)" )
)
);
这将以破坏性的方式将这些内部值从行中删除(您也可以更改为丢失,使用丢失值代码等)。
我还广泛使用范围检查列属性来清除应从分析中省略的值:
dt:Name( "Resting Calories (kcal)" ) << set property ("Range Check", LTLT( 1400, 2500 ) );
例如,这将在较高方面擦洗异常值,而在较低方面擦洗不完整的日子。
但是我很想探索自动标记经常出现的值。我实际上认为重新编码在这里是一个很好的工具,此外它还会生成脚本以将其更改为丢失等。
重新编码数字列并按计数排序可为您提供可能经常出现的值的快照,或仅散布默认值的设备。在上面的示例中,1822年可能是可疑的,并且需要进一步调查。
我想我的意思是将其他一些工具视为标签外的离群值和离群值检测器,它们可能非常有用。
回复:与inlier一起工作还值得注意的是,如果您执行以下操作,则可以通过主菜单搜索和替换来指向并单击它:
- 搜索0
- 用。。。来代替 。
- 选中“匹配整个单元格值”框
- 选中“搜索数据”框。
这很棒,因为它很简单,但需要注意(也许... 不确定这是否会在“实际”数据集中发生)是因为它不检查字符/数字... 因此字符列中仅包含“ 0”的任何单元格都将变为“。”
回复:与inlier一起工作// get the continuous columns as a list of strings
dtcollist = dt << get column names( continuous, string );
// when doing lots of updates to the data table, use this to
// prevent the window being updated for each change
dt << Start Data Update();
For Each Row(
// Loop over each column within each row
// probably the same performance whichever way you do it
For( c = 1, c <= N Items( dtcollist ), c++,
AsColumn( dt, dtcollist[c] ) = Match( AsColumn( dt, dtcollist[c] ),
0, .,
AsColumn( dt, dtcollist[c] )
)
)
);
// Tell JMP it's okay to update the data in the window now
dt << End Data Update();
这是一个非常有用的代码片段,特别是对于我现在正在查看的数据集。遗憾的是,数据表有0,这确实意味着丢失。该脚本将遍历所有数字连续列,并将所有零更改为丢失。感谢Justin帮助优化此问题。
回复:与inlier一起工作我也将Recode用于这种称为“非标签处方”技术的技术,以修复内部错误。