與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用於這種稱為“非標籤處方”技術的技術,以修復內部錯誤。