異常值在SAS中的處理

2021-03-02 SAS中文論壇

數據分析少不了和數據中的異常值打交道,Winsorize處理在SAS中經常使用。

Winsorize即極值處理,原理是將數據中的異常值修建,使之與正常分布的最大值與最小值相同。例如,你的數據整體位於[70,90]這個區間,而分析的數據中有些值特別大或者特別小,比如出現了60、65、95與125這種數值,這時Winsorize處理就能夠將這些特別大或者特別小的值進行調整,讓這些異常值變成你自己定義的一個合理範圍中。對於上限,如果定義比90高出10%記為異常值,那麼95這個值就會被SAS處理,放在Winsorize處理後的數據集裡,而125將被看做異常值,不會放入Winsorize處理後的數據集裡;同理,對於下限也是如此。

數據中含有缺失值和重複值時,進行Winsorize處理稍微會複雜一些。可以先對數據排序,但是缺失值首先會對計算造成不小的影響,所以Winsorize處理很方便解決這些常見難題。

SAS Winsorize 處理過程:

%let DSName =sashelp.heart;

proc iml;

/* SAS/IML moduleto Winsorize each column of a matrix.

Input proportion of observations toWinsorize: prop < 0.5.

Ex: y= Winsorize(x, 0.1) computes the two-side 10% Winsorized data */

start Winsorize(x,prop);

p = ncol(x); /* number of columns */

w = x; /* copy of x */

do i = 1 to p;

z = x[,i]; /* copy i_th column */

n = countn(z); /* count nonmissing values */

k = ceil(prop*n); /* number of obs to trim from each tail */

r = rank(z); /* rank values in i_th column */

/* find target values and obs with smaller/largervalues */

lowIdx = loc(r<=k & r^=.);

lowVal = z[loc(r=k+1)];

highIdx = loc(r>=n-k+1);

highVal = z[loc(r=n-k)];

/* Winsorize (replace) k smallest and klargest values */

w[lowIdx,i] = lowVal;

w[highIdx,i] = highVal;

end;

return(w);

finish;

/* test thealgorithm on numerical vars in a data set */

use &DSName;

read all var _NUM_into X[colname=varNames];

close;

winX = Winsorize(X,0.1);

代碼中,矩陣winX包含經過Winsorize處理過的數據,如果你想輸出SASWinsorize處理後的數據,數據集屬於小數據集,可以使用代碼:%letDSName = sashelp.class; 進行實現。

大批量數據處理之前,想驗證SAS Winsorize過程是否正確,可以藉助SAS/IML計算出來的縮尾均值( Winsorized means),與SAS PROC UNIVARIATE 計算出來的縮尾均值進行比較。

/* Compute Winsorized mean, which is mean of the Winsorized data */

winMean = mean(winX);

print winMean[c=varNames f=8.4];

/* Validation: compute Winsorized means byusing UNIVARIATE */

ods exclude all;

proc univariate data=&dsname winsorized=0.1;

ods output WinsorizedMeans=winMeans;

run;

ods exclude none;

proc print data=winMeans;

var VarName Mean;

run;

學習SAS/IML程序,可以參考附件資料。

相關焦點

  • Python數據清洗(三):異常值識別與處理
    作者 | 劉順祥 來源 | 數據分析1480 在《Python數據清洗(一):類型轉換和冗餘數據刪除》和《Python數據清洗(二):缺失值識別與處理》文中已經講解了有關數據中重複觀測和缺失值的識別與處理,在本節中將分享異常值的判斷和處理方法。
  • 異常值檢測
    背景無論在自然界還是人類社會生產生活中,都會存在那麼一小撮不隨大流的人或事物,這一小撮往往對整體影響很大,如何準確高效的把這一小部分的對象甄別出來儼然成為一個很具挑戰性的工作。本文將帶你利用高斯分布這一有利工具來進行異常值檢測。
  • 在數據中查找異常值的5種方法總結及示例解釋
    在這篇文章中,我將解釋什麼是異常值,以及它們為什麼有問題,並介紹查找它們的各種方法。此外,我將比較各種識別異常值的方法,並分享一些我在識別異常值過程中的首選方法。 異常值及其影響 異常值是一個簡單的概念,它們是與其他數據點明顯不同的值,它們可能會在統計過程中產生問題。
  • 四種檢測異常值的常用技術簡述
    實際上,最佳做法是在進行下一步分析之前,就應該進行異常值去除處理在某些情況下,異常值可以提供有關整個系統中局部異常的信息;因此,檢測異常值是一個有價值的過程,因為在這個工程中,可以提供有關數據集的附加信息目前有許多技術可以檢測異常值,並且可以自主選擇是否從數據集中刪除。
  • 乾貨 SAS學習途徑與相關資源——SAS商業分析
    第三步:學習SQL現在你在一定程度上了解了SAS基礎知識,現在你應該看一下另一種在SAS上處理數據的方式- PROC SQL。閱讀這篇文章可以幫助你理解PROC SQL如何用於處理數據。第六步:在SAS學習ANOVA,線性回歸和邏輯回歸分析sas.com上有相關培訓內容(連結:https://support.sas.com/edu/schedules.html?
  • Excel數據清洗之十三 異常值
    什麼是異常值異常值是一個統計學上的名詞,指的是樣本中的一些數值明顯偏離其餘數值。
  • SAS-Macro 中的那些語句(一)
    可以理解成和其它程式語言中的變量一樣,在內存中創建了一個空間(給這個空間一個標記,宏變量的名稱),然後將一些值放到這個內存空間中(這就是定義宏變量的過程),好吧,我是一個不善解釋的人,沒理解的還是自行百度領悟。那麼就來看看如何來定義Macro變量。%let 方式定義宏變量:這個是最簡單、最直接的賦值定義的方式.
  • 【SAS Says】基礎篇:1. SAS軟體入門
    ODS的使用5. 開發數據(一)6. 開發數據(二) 7. SAS宏初步8. 相關、回歸等基本統計您可以在微信公眾號「數說工作室」(微信ID:shushuojun)中回復「sasbase」查看。 非交互式模式非交互式模式是SAS程序語句已先存於你系統的文件中,直接執行那個文件。
  • 數據分析與sas視頻教程
    數據分析與sas視頻教程   我剛好有這方面的學習資料,如果你也有需要,歡迎聯繫微信: pdd1310
  • SAS MACRO-基礎
    /*(1)定義好一個macro之後,sas會自動保存在 work.sasmacr*//*mstored:將下面的宏存儲在永久性邏輯庫(libds)裡面/*(3)了解sas宏下面有哪些內容*/proccatalog cat=work.sasmacr; contents; title "my macros";quit;
  • SAS大學版 - for SAS Learner
    SAS官網下載地址:https://www.sas.com/zh_cn/software/university-edition.html,按照網頁的提示下載。登陸到https://aws.amazon.com/marketplace/,創建亞馬遜帳號,在亞馬遜Marketplace找到SAS大學版,按照提示啟動SAS大學版。
  • 第76講 SAS中常用的Macro List技巧
    SAS在臨床試驗中用得比較多的是SAS Base, SQL, STAT等模塊。
  • 驚呆了,sas還可以這樣之iml進階
    第一個數據集是整個sashelp.class,第二個數據集是從sashelp.class,的第十條開始讀,即sashelp.class,中的第十條就是當前數據集的第一條。,只有當比較的矩陣中所有元素都滿足where語句中的條件才成立。而對於算符= ? =: =*,只要比較的矩陣中有元素滿足where語句中的條件就成立。
  • Python 異常值檢測實戰(附代碼與可視化)
    .成因導致異常值的最常見原因有,自然引入(並不是錯誤,而是數據多樣性導致的數據新穎性).應用異常值/離群值檢測的應用比較廣泛,例如活動監視,通過監視電話活動或股票市場中的可疑交易來檢測手機欺詐。網絡性能,監視計算機網絡的性能,例如檢測網絡瓶頸。故障診斷,檢測例如太空梭上的電動機、發電機、管道或太空儀器中的故障。
  • SAS系列10:SAS基礎統計過程(二)
    圖10-1  PROC FREQ列聯表輸出結果*===程序2:輸出結果到數據集RESULTS中;PROC TABULATE過程能計算描述性統計量,還可以計算各類報表中的特定統計指標,其語法如下:*===導入數據集
  • SAS實現批量計算字符型變量的IV值
    sas數據集中字符型變量求解IV,註:字符型變量不需進行處理。所用數據集為《信用風險評分卡研究》中的數據集。創建creditcard數據集:options mlogic mprint;%let dir=C:\Users\toshiba\Desktop\放一些文檔\ScorecardDev\Examples;%include "&dir\CC_Dataset.sas";批量計算字符型變量的IV值:%macro iv_char();
  • 常用的sas時間函數介紹
    上一篇文章中講的是input和put的用法,主要寫的也是關於用put和input用於時間的轉化,但是注意的是,put和input,不僅僅只用於之間轉化,這部分內容之前沒有顧及到,在後續的內容中會更新到,請大家見諒。今天更新的內容是sas在日常處理中使用到的時間函數。
  • 數據分析:SAS篇|創建新變量(RENAME、RETAIN、FIRST、LAST、SUM)
    在對SAS數據集進行處理時,經常需要根據原有變量或變量值生成新變量。根據要實現功能的不同,SAS提供了多種方法,例如通過數據集選項RENAME=(RENAME語句)、賦值語句、求和語句等來實現不 同的功能。在DATA步中,可使用數據集選項RENAME=或RENAME語句修改 一個或多個變量的名稱。
  • 異常值和缺失值處理環節和步驟, 讓數據具有總體代表性
    , 步驟和方法供參考以下是一套完整的異常值和缺失值分析和處理步驟,如果覺得Eng版本有點吃力,可以看看前面第一篇關於經典書籍的文章,裡面的中文書籍可以助你一臂之力。1.Types of Outliers(異常值種類)Outliers must be interpreted in the context of the study and this interpretation should be based on the types of information they provide.
  • 機器學習基礎之新奇和異常值檢測
    異常值檢測一般要求新發現的數據是否與現有觀測數據具有相同的分布或者不同的分布,相同的分布可以稱之為內點(inlier),具有不同分布的點可以稱之為離群值。離群點和新奇點檢測是不同的,有一個重要的區分必須掌握:離群點檢測:訓練數據包含離群點,這些離群點被定義為遠離其它內點的觀察值。