數據準備:利用ORACLE實現數據抽樣
做數據分析的,免不了碰到記錄數據量很大,怎么辦?做全面分析是不現實也沒有必要。
介紹一下抽樣方法及實現
幾種常用的抽樣方法:
1.簡單隨機抽樣(simple random sampling)
將所有調查總體編號,再用抽簽法或隨機數字表隨機抽取部分觀察數據組成樣本。
優點:操作簡單,均數、率及相應的標準誤計算簡單。
缺點:總體較大時,難以一一編號。
2.系統抽樣(systematic sampling)
又稱機械抽樣、等距抽樣,即先將總體的觀察單位按某一順序號分成n個部分,再從第一部分隨機抽取第k號觀察單位,依次用相等間距從每一部分各抽取一個觀察單位組成樣本。
優點:易于理解、簡便易行。
缺點:總體有周期或增減趨勢時,易產生偏性。
3.整群抽樣(cluster sampling)
先將總體依照一種或幾種特征分為幾個子總體(類。群),每一個子總體稱為一層,然后從每一層中隨機抽取一個子樣本,將它們合在一起,即為總體的樣本,稱為分層樣本
優點:便于組織、節省經費。
缺點:抽樣誤差大于單純隨機抽樣。
4.分層抽樣(stratified sampling)
將總體樣本按其屬性特征分成若干類型或層,然后在類型或層中隨機抽取樣本單位,合起來組成樣本。有按比例分配和最優分配(過度抽樣是否就是最優分配方法?)兩種方案。
特點:由于通過劃類分層,增大了各類型中單位間的共同性,容易抽出具有代表性的調查樣本。該方法適用于總體情況復雜,各類別之間差異較大(比如金融客戶風險/非風險樣本的差異),類別較多的情況。
優點:樣本代表性好,抽樣誤差減少。
我們需要使用抽樣的方法從總量用戶中隨機抽取100W個樣本記錄。
down到本機然后進行sas抽樣,不可能!
直接sas聯機抽樣,更不可能!
直接提交服務器進行抽樣,然后鏈接到本機進行分析
現在介紹一下ORACLE抽樣方法:
Oracle取隨機數據實現
隨機查看前N條記錄
SELECT * FROM (SELECT * FROM TB_PHONE_NO ORDER BY SYS_GUID())
WHERE ROWNUM < 10;
SELECT * FROM (SELECT * FROM chifan ORDER BY dbms_random.random) WHERE ROWNUM<=5
SQL> SELECT * FROM (SELECT * FROM A SAMPLE(0.01)) WHERE ROWNUM<=1;
注意每次取得的值都不同。
SAMPLE 是隨機抽樣,后面的數值是采樣百分比。
另附SAS 抽樣實現
DATA COMMON.OTHER_200909(WHERE=(RANUNI(1)<.042));
SET COMMON.FIN_200909;
WHERE PV IS NULL;
RUN;
效率非常低,不推薦
原文轉自:http://www.anti-gravitydesign.com