ロジスティックモデルにおける予測値の算出

[OS] ALL
[リリース] 9.1
[キーワード] LOGISTIC, SCORE, INMODEL= option, OUTMODEL= option

[質問]

LOGISTICプロシジャにて、データセットAを用いてモデルの当てはめを行なっています。
この際、算出されたパラメータの推定値を用いて、他のデータセットBのオブザベーションに対して予測値を求めることはできますか。

[回答]

LOGISTICプロシジャでは、パラメータの推定値を算出する際に、欠損値を含むオブザベーションを削除することになります。
ただし、説明変数が欠損でないオブザベーションに対しては、予測値が算出されます。この点を利用して、以下の手順で他のデータセットBに対し予測値を求めることができます。

  1. 2つのデータセットAとデータセットBを、1つのデータセットCにします。
    このとき、新たに変数(たとえば、「NEW」)を作成し、データセットAに対応する部分では応答変数をNEWの値とし、データセットBに対応する部分では欠損値をNEWの値とします。

  2. データセットCを用いて、LOGISTICプロシジャにて応答変数を新たに作成した変数NEWとし、モデルの推定を行ないます。
    このとき、以下のOUTPUTステートメントを追加して、予測値を含むデータセットを作成します。
    
       OUTPUT OUT=out P=predict;
    
    

    データセットOUTに含まれる変数PREDICTが、予測値となります。

    2つのデータセットを結合して意図的に応答変数を欠損とする方法は、他のプロシジャ(たとえばREGプロシジャ、GLMプロシジャなど)でも利用できます。

SAS9以降では新たに追加されているSCOREステートメントを活用することができます。データセットAに基づき、モデルの推定を行ない、同時にデータセットBにおける予測値を求める場合には、以下の記述にて行なうことができます。

例:SCOREステートメントの指定例


   PROC LOGISTIC DATA=A;
     MODEL <モデル式の記述>;
     SCORE DATA=B OUT=out;
   RUN;

また、OUTMODEL=オプション、INMODEL=オプションを併せて用いることによって、モデルの推定と予測値の算出を個別に行なうことができます。

例:OUTMODEL=オプションとINMODELオプションを利用する例


                              /* 推定したモデルの情報をデータセットMODELに出力 */
   PROC LOGISTIC DATA=A OUTMODEL=model;
     MODEL <モデル式の記述>;
   RUN;
                                          /* データセットBに対する予測値を算出 */
   PROC LOGISTIC INMODEL=model;
     SCORE DATA=B OUT=out;
   RUN;