878 Views
April 03, 24
スライド概要
[第6回大阪sas勉強会] 森 大樹
SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです
PROC LOGISTIC いろんなオプションとか 森 大樹 1
基礎的な文法 基本的な書き方は以下の通り PROC LOGISTIC DATA=<data>; MODEL <target>=<vars>; RUN; このほか色々なオプションがあって、結構便利。 金融では「金融事故の有無」「貸倒の有無」などの 2 値変数を 予測する場合が多く、 LOGISTIC プロシジャの使い道は多い でも、実務では Enterprise Miner 使ってる 2
CLASS ステートメント PROC LOGISTIC DATA=<data>; CLASS <class vars> MODEL <target>=<vars>; RUN; CLASS ステートメントは、指定した変数を One Hot Encoding( ダミー変数化 ) するオプション。 MODEL ステートメントの前に記載する。 例えば、以下のようなコード値があった場合、名義尺度なので LOGISTIC の線形モデルにそのまま説明変数として放り込むと おかしくなるときに使う 居住区分: 1: 持ち家 ( ローン有 ) 2: 持ち家 ( ローン無 ) 3: 賃貸 ( 自己が借主 ) 4: 賃貸 ( 他人名義で賃貸 ) 5: 親と同居 6: 社宅 etc 3
SCORE ステートメント PROC LOGISTIC DATA=<data>; MODEL <target>=<vars>; SCORE DATA=<data> OUT=<out data> RUN; MODEL ステートメントに指定した変数と同様の変数を持つ 検証用データに対し、学習モデルによる予測値を付与する。 例えば、 5 万件のデータを 4 万件を学習用 (LEARN) と、 1 万件を 検証用 (VALID) として分割した場合 SCORE DATA=VALID OUT=SCORE_VALID と記載。ちなみに SCORE ステートメントは複数記載可能。 検証用データが 3 個あっても、 3 回プロシジャを回す必要がない 4
交互作用項の適用 交互作用をモデルに入れたい場合 PROC LOGISTIC DATA=<data>; MODEL <target>=VAR1|VAR2|VAR3 ; RUN; と、複数の説明変数を” |” で区切って書く。 上記の場合は 3 変数交互作用を考慮するモデルになるが、 3 変数のうち、有効な 2 変数交互作用を自動で検出してほしい場合 MODEL <target>=VAR1|VAR2|VAR3 @2 と @ の後ろに選択してほしい最大の N を記載 5
他、便利なもの ODS GRAPHICS ON にした上で ROC ステートメントを書く →ROC 曲線のグラフと AUC の値がグラフィック出力される。 → 指定によってモデル全体の AUC でも、 1 つの説明変数の AUC でもどちらも出力可能 学習用、検証用データを PROC LOGISTIC 内で分割し、作成する ステートメントも存在する → 詳細忘れた。 6