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 rank
có trên phiên bản SAS Base cònProc Hpbin
chỉ 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ả).VAR
các biến được sẽ được chia.RANKS
biế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;