因子分析、その他

情報処理H : 第10回目(01/10/97)

長いと思っていたこの講義も、来週のレポート作成を残して いよいよ最終回になった。SAS という統計解析システムを用いて データ特性の把握方法をある程度体系的に説明してきたつもりであるが、 如何であったろうか?
今回は心理学の分野等でよく利用されている多変量解析手法として 因子分析を紹介する。また、今後統計と関わったときの注意点についても 補足しておく。

  1. 因子分析(Factor Analysis)

    前回は主成分分析を説明した。この手法は、 p変量(p次元)の観測値をm個(m次元)の主成分に縮約させる方法であった。 この意味では、因子分析も同じような方法であるのだが、 主成分分析の場合は、 データの散らばり方を捉えてデータ特性を把握する手法である。 今回説明する因子分析は、変数間に(潜在的な)構造を持ち込んで関係を探る手法である。
    この手法は心理学の分野で広く利用されている。

  2. 定式化 : 配布資料 195ページ〜

  3. [例題1]食品の嗜好性を探ってみよう : 200 ページ〜
    100種類の食品の性、年齢毎の嗜好度調査の結果 : データ : food.dat

    1. まずは因子数を決めよう : プログラム : fact01.sas

       /* Lesson 10-1 */
       /*    File Name = fact01.sas   01/10/97   */
      
      data food;                          :
        infile 'food.dat';                : ファイルの読み込み
        input X01-X10;                    : 変量リスト、連続的に
          label X01='M(-15)'              : 各変量に解りやすい名前を付ける
                X02='M(16-20)'            :   M : 男性
                X03='M(21-30)'            :   F : 女性
                X04='M(31-40)'            :  ()内 : 年齢
                X05='M(41-)'              :
                X06='F(-15)'              :
                X07='F(16-20)'            :
                X08='F(21-30)'            :
                X09='F(31-40)'            :
                X10='F(41-)';             :
                                          :
      proc print data=food(obs=10);       : データの表示
      run;                                :
      proc factor data=food;              : 因子分析
        var X01-X10;                      : 解析に使う変量リスト
      run;                                :
      
      • 出力結果 : fact01.out
        • 固有値 : 相関行列を用いた主成分分析の結果から
        • 因子数は2だと判断された : 固有値が1より大きい
        • 因子負荷量の推定値
        • 因子毎の分散の推定値
      • 因子数の決定
        • システムは2と判断
        • 固有値の変化量からすると、3 でも良さそう : 3と4の間が空いてる
        • 因子数を3として計算してみよう

    2. 因子数3で解析 : プログラム : fact02.sas

       /* Lesson 10-2 */
       /*    File Name = fact02.sas   01/10/97   */
      
      data food;
        infile 'food.dat';
        input X01-X10;
          label X01='M(-15)'
                X02='M(16-20)'
                X03='M(21-30)'
                X04='M(31-40)'
                X05='M(41-)'
                X06='F(-15)'
                X07='F(16-20)'
                X08='F(21-30)'
                X09='F(31-40)'
                X10='F(41-)';
      
      proc print data=food(obs=10);
      run;                                          :
      proc factor data=food nfactor=3 out=fscore;   : 因子数3、出力の保存
        var X01-X10;                                :
      run;                                          :
      proc plot data=fscore;                        :
        plot factor1*factor2/vref=0.0 href=0.0;     : 第1因子 x 第2因子、軸
        plot factor2*factor3/vref=0.0 href=0.0;     : 第2因子 x 第3因子、軸
      run;                                          :
      
      • 出力結果 : fact02.out
        • 固有値
        • 因子負荷量の推定値
        • 因子毎の分散の推定値
        • 共通性
      • 解釈
        • 因子の特徴付け :
        • 第1因子 : 全体的な嗜好
        • 第2因子 : 年齢効果
        • 第3因子 : 性別効果
        • 各個体の散布図 : 第2因子と第3因子の関係が面白い

    3. 回転させてみよう : プログラム : fact03.sas

       /* Lesson 10-3 */
       /*    File Name = fact03.sas   01/10/97   */
      
      data food;
        infile 'food.dat';
        input X01-X10;
          label X01='M(-15)'
                X02='M(16-20)'
                X03='M(21-30)'
                X04='M(31-40)'
                X05='M(41-)'
                X06='F(-15)'
                X07='F(16-20)'
                X08='F(21-30)'
                X09='F(31-40)'
                X10='F(41-)';
      
      proc print data=food(obs=10);
      run;
      proc factor data=food nfactor=3 rotate=varimax out=fscore2;
        var X01-X10;                                : 回転の指定
      run;                                          :
      proc plot data=fscore2;
        plot factor1*factor2/vref=0.0 href=0.0;
        plot factor2*factor3/vref=0.0 href=0.0;
        plot factor3*factor1/vref=0.0 href=0.0;
      run;
      
      
      • 解釈
        • 因子の特徴付け :
        • 第1因子 : 若年層の嗜好
        • 第2因子 : 成人男性の嗜好
        • 第3因子 : 成人女性の嗜好
        • 各個体の散布図 : 各因子間の関係が面白い

  4. [例題2]趣味の特性を探ってみよう : 193 ページ
    30種類の趣味の性、年齢毎の特性調査の結果 : データ : syumi.dat

     /* Lesson 10-4 */
     /*    File Name = fact04.sas   01/10/97   */
    
    data hobby;
      infile 'syumi.dat';
      input code $ X1-X6;
        label X1='M(-29)'
              X2='M(30-49)'
              X3='M(50-)'
              X4='F(-29)'
              X5='F(30-49)'
              X6='F(50-)';
    
    proc print data=hobby(obs=10);
    run;
    proc factor data=hobby nfactor=2 out=fscore;
      var X1-X6;
    run;
    proc plot data=fscore;                           : 回転前
      plot factor1*factor2=code/vref=0.0 href=0.0;   : コード化した記号
    run;                                             :
    proc factor data=hobby nfactor=2 rotate=varimax out=fscore2;
      var X1-X6;
    run;
    proc plot data=fscore2;                          : 回転後
      plot factor1*factor2=code/vref=0.0 href=0.0;   : コード化した記号
    run;                                             :
    

  5. 因子数の決定基準

  6. 因子分析の解釈

  7. 残った領域

  8. レポート作成について 来週(1月17日)はレポートを作ってもらう。 第8回のレポート作成時と同じような形式だが、主成分分析か因子分析を含めて 実習してもらう。そのために追加のデータを配布する。

  9. 参考文献(追加) : これまで紹介してきた文献と共に機会があれば手に取ってみよう。
[DIR]講義のホームページへ戻ります