クロス表、平均値の比較、回帰分析

情報処理H : 第7回目(11/22/96)


前回は、2変量についての視覚化と関連を測る尺度を説明した。 ただ最後のところは時間がなくて駆け足になってしまい説明不足の感もあるので、 今回は、そこからスタートして、2群の平均値の比較方法と回帰分析について 式も含めて解説する。

  1. 2変量の関係 : 集計表、クロス集計 : 頻度を見る
    1. 単純集計 : 特性変数の場合
      • プログラム : freq01.sas

         /* Lesson 7-1 */
         /*    File Name = freq01.sas   11/22/96   */
        
        data zenin;
          infile 'all.dat';
          input seibetsu $ shintyou taijyuu kyoui kozukai jitaku $ daigaku $;
        
        proc freq data=zenin;                  : 頻度を調べる
          tables seibetsu;                     : 1変量ごとに
        run;                                   :
        proc freq data=zenin;                  : 頻度を調べる
          tables seibetsu*jitaku;              : 2変量で集計表
        run;                                   : 
        
      • 出力結果 : freq01.out

    2. 連続量をカテゴリー(階級)化、2重・3重クロス集計
      • プログラム : freq02.sas

         /* Lesson 7-2 */
         /*    File Name = freq02.sas   11/22/96   */
        
        data zenin;
          infile 'all.dat';
          input seibetsu $ shintyou taijyuu kyoui kozukai jitaku $ daigaku $;
        
        proc format;                           : 新しい階級(clshin)を作る
          value clshin low-<150='   -149'      : 階級の定義 1
                       150-<160='150-159'      :            2
                       160-<170='160-169'      :            3
                       170-high='170-   '      :            4
                       other   ='missing';     :            5
        run;                                   :
        proc freq data=zenin;                  : 頻度を調べる
          tables shintyou;                     : (一重クロス)集計
          format shintyou clshin.;             : 身長は階級に従ってクラス分け
        run;                                   :
                                               :
        proc freq data=zenin;                  : 頻度を調べる
          tables shintyou*seibetsu;            : 二重クロス集計
          format shintyou clshin.;             : 身長は階級に従ってクラス分け
        run;                                   :
                                               :
        proc freq data=zenin;                  : 頻度を調べる
          tables shintyou*seibetsu*jitaku;     : 三重クロス集計
          format shintyou clshin.;             : 身長は階級に従ってクラス分け
        run;                                   :
        
      • 出力結果 : freq02.out
        • 何重でも細かく見ることはできるが細分化しすぎに注意

    3. 各グループごとでの集計、基礎統計量
      • プログラム : freq03.sas

         /* Lesson 7-3 */
         /*    File Name = freq03.sas   11/22/96   */
        
        data zenin;
          infile 'all.dat';
          input seibetsu $ shintyou taijyuu kyoui kozukai jitaku $ daigaku $;
        
        proc format;                     
          value clshin low-<150='   -149' 
                       150-<160='150-159' 
                       160-<170='160-169' 
                       170-high='170-   ' 
                       other   ='missing';
        run;                             
        proc tabulate data=zenin;                         : 帳票の作成
          class shintyou seibetsu;                        : 特性変数であることの宣言
          var taijyuu;                                    : 集計する変量名
          tables taijyuu*(n mean std),shintyou*seibetsu;  : 表示内容、分類変量名
          format shintyou clshin.;                        : 身長のクラス分けの定義
        run;
        
      • 出力結果 : freq03.out
        • 身長と性別によって区分される各グループごとの体重の傾向をつかむ

  2. 平均値の比較 : 2つのグループの平均値に差があるか?
    1. t 検定 : パラメトリック検定 : 分布が正規分布に従っている必要がある
      • 両群の分散が等しいと見なせるかによって方法が異なる : F検定
        • 等分散 : t検定 (Student のt検定)
        • 不等分散 : Welch の検定

      • プログラム : ttest01.sas

         /* Lesson 7-4 */
         /*    File Name = ttest01.sas   11/22/96   */
        
        data zenin;
          infile 'all.dat';
          input seibetsu $ shintyou taijyuu kyoui kozukai jitaku $ daigaku $;
        
        proc ttest data=zenin;                 : t検定
          class seibetsu;                      : 分類したい特性変数の指定
          var shintyou taijyuu kyoui kozukai;  : 比較したい変量名
        run;                                   : 
        
      • 出力結果 : ttest01.out
        • このデータでは、: Prob>F'、Prob>|T|
          • 身長と小遣いは等分散であると言える ===> t検定 : Equal
          • 体重と胸囲は等分散であると言えない ===> Welchの検定 : Unequal

          • 身長や体重、胸囲は性別によって平均に差があると言える
          • 小遣いは性別によって平均に差があるとは言えない

        • 検定基準
          • 確率が小さい ===> 稀なこと ===> 普通ではない ===> 差がある
          • 5% 有意、1% 有意 : 今までの慣習から



    2. Wilcoxon 検定 : ノンパラメトリック検定 : 分布が正規分布にしたがっている必要はない
      • プログラム : wilco01.sas

         /* Lesson 7-5 */
         /*    File Name = wilco01.sas   11/22/96   */
        
        data zenin;
          infile 'all.dat';
          input seibetsu $ shintyou taijyuu kyoui kozukai jitaku $ daigaku $;
        
        proc npar1way data=zenin wilcoxon;     : wilcoxon 検定
          class seibetsu;                      : 分類したい特性変数の指定
          var shintyou taijyuu kyoui kozukai;  : 比較したい変量名
        run;                                   : 
        
      • 出力結果 : wilco01.out
        • 分布が不明なときはノンパラメトリック手法を使う
        • この手法でも検定結果は同じであった : Prob>|Z|

    3. 対応のある2群の検定 : 差の分布が正規分布に従っている必要がある
      • 薬の投与前後での測定、運動の前後での測定、実験の前後、...
      • proc univariate の中で表示されている
      • 詳しくは資料(1)参照のこと

  3. 連続変量の関係 : 回帰分析 : 予測等に使う
    1. 単回帰分析 : 説明する変量と説明される変量
      • 身長を体重で説明したい
      • [身長]=a[体重]+b : 回帰係数
      • 予測誤差の2乗和を最小にする : 資料(2)参照

      • プログラム : reg11.sas

         /* Lesson 7-6 */
         /*    File Name = reg11.sas   11/22/96   */
        
        data zenin;
          infile 'all.dat';
          input seibetsu $ shintyou taijyuu kyoui kozukai jitaku $ daigaku $;
        
        proc reg data=zenin;                                   : 回帰分析
          model shintyou=taijyuu;                              : 変量を指定
          output out=o_reg1 predicted=pred1 residual=resid1;   : 結果項目の保存
          where seibetsu='F';                                  : 女性について
        run;                                                   :
                                                               :
        proc print data=o_reg1(obs=30);                        : まず表示
        run;                                                   :
        proc plot data=o_reg1;                                 : 散布図の表示
          plot taijyuu*shintyou;                               : 体重と身長
          plot pred1*shintyou;                                 : 予測値と観測値
          plot resid1*shintyou;                                : 残差と観測値
        run;                                                   :
        
      • 出力結果 : reg11.out
        • 回帰に役立っているか : Prob>F : 小さいと有意(役立っている)
        • 決定係数 : R-Square
        • ( 相関係数 : R )
        • 回帰係数 : Parameter Estimate
        • 説明変数が予測に役立っているか?
          回帰係数の検定(係数=0 か?) : Prob>|T| : 小さいと有意
        • 残差の性質 ===> 正規性 : 残差プロット
          均等に散らばっているか?
        • ...

    2. 重回帰分析 : 2変量以上の説明する変量で1変量を説明
      • 身長を体重と胸囲で説明したい
      • [身長]=a[体重]+b[胸囲]+c : 回帰係数
      • 単回帰とアイディアは同じ : 予測誤差の2乗和を最小にする : 資料参照
      • 説明する変量が複数になる : 単 ==> 重

      • プログラム : reg12.sas

         /* Lesson 7-7 */
         /*    File Name = reg12.sas   11/22/96   */
        
        data zenin;
          infile 'all.dat';
          input seibetsu $ shintyou taijyuu kyoui kozukai jitaku $ daigaku $;
        
        proc reg data=zenin;                                   :
          model shintyou=taijyuu kyoui;                        : 複数変量を指定
          output out=o_reg1 predicted=pred1 residual=resid1;   :
          where seibetsu='F';                                  :
        run;                                                   :
        
        proc print data=o_reg1;
        run;
        proc plot data=o_reg1;
          plot taijyuu*shintyou;
          plot pred1*shintyou;
          plot resid1*shintyou;
        run;
        
      • 出力結果 : reg12.out
        • 説明変数群が予測に役立っているか?
          回帰に役立っているか : Prob>F : 小さいと有意(役立っている)
        • 決定係数 : R-Square
        • ( 相関係数 : R )
        • 回帰係数 : Parameter Estimate
        • ある特定の説明変数が予測に役立っているか?
          回帰係数の検定(係数=0 か?) : Prob>|T| : 小さいと有意
          胸囲は役立っていない
        • 残差の性質 ===> 正規性 : 残差プロット
          均等に散らばっているか?
          右上がりの傾向がある。何か要因があるのでは?
        • ...

  4. 次回は、... [DIR]講義のホームページへ戻ります