Mục lục
Phân tích đơn biến là công việc tìm hiểu các đặc tính của biến và sự liên quan giữa biến đó với biến mục tiêu (target).
Tìm hiểu đặc tính của biến
Tìm hiểu sự liên quan với biến target
Để tìm hiểu sự liên quan với biến target, ta thường sử dụng phương pháp binning. Phương pháp binning có thể tóm tắt như sau:
- Chia biến thành các khoảng (thương là 20).
- Tính toán các chỉ số liên quan đến biến target. Ví dụ Bad rate, WOE, …
Để thực hiện việc này, ta có thể sử dụng Proc Rank hoặc
Proc Hpbin. Chú ý rằng
Proc rankcó trên phiên bản SAS Base cònProc Hpbinchỉ có trên gói High performance. Do đó tôi sẽ giới thiệu cả hai procedure để tiện cho bạn đọc.
Proc Rank
Proc Rank được dùng để chia biến thành các khoảng theo quantile. Cú pháp của Proc Rank như sau:
PROC RANK DATA=[DATA INPUT] GROUPS=[NUM BIN] TIES=[LOW/HIGH] OUT=[DATA OUTPUT];
VAR [VARIABLE];
RANKS [RANKED VARIABLE];
RUN;
Trong đó:
DATA=là dữ liệu đầu vào.GROUPS=số lượng các nhóm sẽ chia.TIES=(high/low) các giá trị giống nhau sẽ được xếp vào hạng trên hay hạng dưới. Xem ví dụ 2 phía dưới. Mặc định có thể dùngTIES=LOW.OUT=dữ liệu đầu ra (kết quả).VARcác biến được sẽ được chia.RANKSbiến lưu thông tin chia. Giá trị 1 tương ứng với quantile đầu tiên, …
Ví dụ 1. Sử dụng Proc Rank như sau:
DATA TEMP00 (DROP= I);
DO I=1 TO 9;
X=CEIL(I/3);
OUTPUT;
END;
RUN;
PROC RANK DATA=TEMP00 GROUPS=2 TIES=LOW OUT=_TEMP_;
VAR X;
RANKS RANKED_X;
RUN;
Kết quả nhận được như sau:
| X | RANKED_X |
|---|---|
| 1 | 0 |
| 1 | 0 |
| 1 | 0 |
| 2 | 0 |
| 2 | 0 |
| 2 | 0 |
| 3 | 1 |
| 3 | 1 |
| 3 | 1 |
Ví dụ 2. Về tùy chọn TIES. Nếu TIES=HIGH
PROC RANK DATA=EC GROUPS=2 TIES=HIGH OUT=_TEMP_;
VAR X;
RANKS RANKED_X;
RUN;
Kết quả như sau:
| X | RANKED_X |
|---|---|
| 1 | 0 |
| 1 | 0 |
| 1 | 0 |
| 2 | 1 |
| 2 | 1 |
| 2 | 1 |
| 3 | 1 |
| 3 | 1 |
| 3 | 1 |
Ví dụ 3. Sử dụng proc rank với nhiều biến:
PROC RANK DATA=DATA.RAW(KEEP=GOOD BAD MORTDUE DEBTINC) GROUPS=20 TIES=LOW OUT=_TEMP_;
VAR MORTDUE DEBTINC;
RANKS RANKED_MORTDUE RANKED_DEBTINC;
RUN;
Kết quả như sau:
| MORTDUE | DEBTINC | BAD | GOOD | RANKED_MORTDUE | RANKED_DEBTINC |
|---|---|---|---|---|---|
| 78600 | . | 1 | 0 | 12 | . |
| 103949 | 30.05 | 0 | 1 | 16 | 5 |
| 104373 | 29.92 | 0 | 1 | 16 | 5 |
| 7750 | 36.21 | 1 | 0 | 0 | 11 |
| 61962 | 49.21 | 1 | 0 | 9 | 19 |
| 104570 | 32.06 | 0 | 1 | 16 | 7 |
| … | … | … | … | … | … |
Kết quả nhận được là các cột RANKED_MORTDUE và RANKED_DEBTINC tương ứng với hạng của MORTDUE và DEBTINC. Nếu giá trị của biến ban đầu là missing thì giá trị của biến xếp hạng cũng là missing. Để summary dữ liệu, ta có thể dùng proc sql như sau:
PROC SQL NOPRINT;
CREATE TABLE TEMP01 AS
SELECT RANKED_MORTDUE AS GROUP,
MAX(MORTDUE) AS LB, MIN(MORTDUE) AS UB,
COUNT(*) AS TOTAL, SUM(GOOD) AS GOOD, SUM(BAD) AS BAD
FROM _TEMP_
GROUP BY RANKED_MORTDUE
ORDER BY RANKED_MORTDUE;
QUIT;