カイ2乗検定とちょっとしたテクニック

統計処理 01 クラス : 第22回(11/21/02)

今週は、主成分分析と因子分析について、 利用する際に注意する点と両手法の違いを述べ、 その後、カイ2乗検定を紹介する。 この手法は、クロス集計表の各属性間が独立であるかどうかを確かめる手法である。 時間に余裕があれば、いくつかの便利なコマンドについても紹介する。
  1. 主成分分析(PCA)と因子分析(FA) : 演習をする際の考慮点と両手法の利用時の違い

  2. クロス表における属性間の関係 : カイ2乗検定(Chi-Square Test)
    第10回 で紹介したクロス表は、各属性の組合わせにおける頻度を表示し、 データの分布状況を把握する手法であった。 もし、属性間に何らかの関連があると、頻度は均一にならず、 一部のマス目(セルという)に集中することが考えられる。 セル毎の頻度から、属性間に関係があるかどうかを把握する手法として、 カイ2乗検定(χ^2検定、Chi-Square Test)がある。

    1. プログラム : les2201.sas

       /* Lesson 22-1 */
       /*    File Name = les2201.sas   11/21/02   */
       /*                                                  */
       /*    Original File Name = les1001.sas   06/20/02   */
       /*    Original File Name = les1002.sas   06/20/02   */
      
      data gakusei;
        infile 'all02.prn' firstobs=2;
        input sex $ height weight chest 
              jitaku $ kodukai carrier $ tsuuwa;
      
      proc print data=gakusei(obs=10);
      run;
      
      proc freq data=gakusei;                               
        tables sex*jitaku/chisq;                       
        tables sex*jitaku/chisq norow nocol nopercent; 
      run;                                                  
      
      proc format;
        value clheight low-<150='   -149'
                       150-<160='150-159'
                       160-<170='160-169'
                       170-<180='170-179'
                       180-high='180-   '
                       other   ='missing';
      run;
      
      proc freq data=gakusei;
        tables height*sex/chisq norow nocol nopercent;
        format height clheight.;
      run;
      
      
    2. 出力結果 : les2201.lst
      
                                    SAS システム                             2
                                            20:48 Wednesday, November 20, 2002
                               TABLE OF SEX BY JITAKU
      
                        SEX       JITAKU
      
                        Frequency|
                        Percent  |
                        Row Pct  |
                        Col Pct  |G       |J       |  Total
                        ---------+--------+--------+
                        F        |     20 |     48 |     68
                                 |   9.43 |  22.64 |  32.08
                                 |  29.41 |  70.59 |
                                 |  26.67 |  35.04 |
                        ---------+--------+--------+
                        M        |     55 |     89 |    144
                                 |  25.94 |  41.98 |  67.92
                                 |  38.19 |  61.81 |
                                 |  73.33 |  64.96 |
                        ---------+--------+--------+
                        Total          75      137      212
                                    35.38    64.62   100.00
      
                        Frequency Missing = 31
      
                                    SAS システム                             5
                                            20:48 Wednesday, November 20, 2002
                       STATISTICS FOR TABLE OF SEX BY JITAKU
      
               Statistic                     DF     Value        Prob
               ------------------------------------------------------
               Chi-Square                     1     1.558       0.212
               Likelihood Ratio Chi-Square    1     1.584       0.208
               Continuity Adj. Chi-Square     1     1.198       0.274
               Mantel-Haenszel Chi-Square     1     1.551       0.213
               Fisher's Exact Test (Left)                       0.137
                                   (Right)                      0.921
                                   (2-Tail)                     0.223
               Phi Coefficient                     -0.086            
               Contingency Coefficient              0.085            
               Cramer's V                          -0.086            
      
               Effective Sample Size = 212
               Frequency Missing = 31
      
               WARNING:  13% のデータが欠損です.
      
                                    SAS システム                             7
                                            20:48 Wednesday, November 20, 2002
                               TABLE OF SEX BY JITAKU
      
                        SEX       JITAKU
      
                        Frequency|G       |J       |  Total
                        ---------+--------+--------+
                        F        |     20 |     48 |     68
                        ---------+--------+--------+
                        M        |     55 |     89 |    144
                        ---------+--------+--------+
                        Total          75      137      212
      
                        Frequency Missing = 31
      
                                    SAS システム                            10
                                            20:48 Wednesday, November 20, 2002
                               TABLE OF HEIGHT BY SEX
      
                        HEIGHT     SEX
      
                        Frequency|F       |M       |  Total
                        ---------+--------+--------+
                           -149  |      5 |      0 |      5
                        ---------+--------+--------+
                        150-159  |     29 |      1 |     30
                        ---------+--------+--------+
                        160-169  |     36 |     45 |     81
                        ---------+--------+--------+
                        170-179  |      2 |     98 |    100
                        ---------+--------+--------+
                        180-     |      0 |     17 |     17
                        ---------+--------+--------+
                        Total          72      161      233
      
                        Frequency Missing = 10
      
                                    SAS システム                            12
                                            20:48 Wednesday, November 20, 2002
                       STATISTICS FOR TABLE OF HEIGHT BY SEX
      
               Statistic                     DF     Value        Prob
               ------------------------------------------------------
               Chi-Square                     4   125.627       0.001
               Likelihood Ratio Chi-Square    4   148.468       0.001
               Mantel-Haenszel Chi-Square     1   113.962       0.001
               Phi Coefficient                      0.734            
               Contingency Coefficient              0.592            
               Cramer's V                           0.734            
      
               Effective Sample Size = 233
               Frequency Missing = 10
      
    3. 解析結果
      • 分割表 : 頻度、各パーセント(オプションによって)
      • 分割表に対する統計量
        • カイ2乗値(Chi-Square) : 幾つかの種類がある
        • 有意確率(Prob)
      • セル内の頻度が 5以下のものがあると警告が出る。
      • データの欠損率が高いと警告が出る。

      • 性別と自宅/下宿 : 関係があるとは言えない(Prob=0.212)
      • 性別と身長 : 関係があると言える(Prob=0.001)

  3. データの生成 : 乱数で(正規乱数) : 種(seed)の指定 [参考] : 乱数を生成する関数

  4. 例題1

    1. プログラム : les2202.sas

       /* Lesson 22-2 */
       /*    File Name = les2202.sas   11/21/02   */
      
      options linesize=72; /* pagesize=20; */      : 出力サイズの指定
      
      data rei01;                                  : データセット名を rei01 とする
       do i=1 to 200;                              : 200回の繰り返し
         x=rannor(12345);                          : 正規乱数を発生させる
         output;                                   : データセットに追加する
       end;                                        : 繰り返しの終端
      run;                                         :
      
      proc print data=rei01(obs=10);               : 先頭 10ケースの表示
      run;                                         :
      
      proc means data=rei01;                       : 全データに対する平均の計算
      run;                                         :
      
      proc print data=rei01(firstobs=91 obs=110);  : 91番から 110番のデータの表示
      run;                                         :
      
      proc means data=rei01(firstobs=91 obs=110);  : 91番から 110番のデータについての平均
      run;                                         :
      
      data _null_;                                 : データセット名は付けない
        set rei01;                                 : 元となるデータセット名
        file "unsorted.dat";                       : 出力ファイル名
        put i 5. x 15.8;                           : 変量 i は小数点以上 5桁で
      run;                                         : 変量 x は小数点以上 15桁、以下 8桁で
      
      proc sort data=rei01;                        : 並べ替え
        by x;                                      : 変量 x について
      run;                                         :
      
      proc print data=rei01(obs=10);
      run;
      
      proc print data=rei01(firstobs=91 obs=110);
      run;
      
      proc means data=rei01(firstobs=91 obs=110);
      run;
      
      data _null_;
        set rei01;
        file "sorted.dat";
        put i 5. x 15.8;
      run;
      
    2. 出力結果 : les2202.lst unsorted.dat sorted.dat
      • 並べる前後での数値列を比較せよ
      • 乱数の種類を取り替えて計算させてみよ

  5. 例題2

    1. プログラム : les2203.sas

       /* Lesson 22-3 */
       /*    File Name = les2203.sas   11/21/02   */
      
      options linesize=72; /* pagesize=20; */
      
      data rei02;                           : データセット名を rei02 とする
        do i=1 to 100;                      :
          x=rannor(23456);                  : 上記とは別の種で乱数を発生させる
          x10=int(x*10);                    : 10倍して正数部分だけ利用
          output;                           :
        end;                                :
      run;                                  :
      
      title "Default";                      : 見出し(タイトル)を付ける : 「無指定」
      proc chart data=rei02;                : オプションを指定しない場合のヒストグラム
        hbar x;                             : 変量 x について
      run;                                  :
      
      title "Ascending order";              : 「昇順」
      proc chart data=rei02;                : 
        hbar x / midpoints=-3 to 3 by .5;   : 変量 x について昇順で。0.5 刻み。
      run;                                  :
      
      title "Descending order";             : 「降順」
      proc chart data=rei02;                :
        hbar x / midpoints=3 to -3 by -.5;  : 変量 x について降順で。-0.5 刻み。
      run;                                  :
      
      title "Default";                      : 「無指定」: x10 を昇順に表示
      proc freq data=rei02;                 : オプションを指定しない場合の度数分布表
        tables x10;                         : 変量 x10 について
      run;                                  :
      
      title "Freqency order";               : 「頻度降順」: 頻度の大きいものから
      proc freq data=rei02 order=freq;      :
        tables x10;                         : 変量 x10 についての頻度順に表示
      run;                                  :
      
      proc sort data=rei02;                 : 並べ替え
        by decending x10;                   : x10 について降順に並べる
      run;                                  :
      
      title "Descending order";             : 「数値降順」: x10 を降順に表示
      proc freq data=rei02 order=data;      : データの出現順で表示させるというオプション
        tables x10;                         :
      run;                                  : 
      
    2. 出力結果 : les2203.lst
      • どこをキーとした順で表示されているかを把握せよ
      • 乱数の種類を取り替えて計算させてみよ

  6. その他の便利なコマンド : 過去の資料にも掲載してあるので参考にしてほしい

  7. 次回は、... : 11月28日 14:45
[DIR]講義のホームページへ戻ります