[fpr 943] 因子分析とScaleType

岡本安晴

岡本@金沢大学文学部です。

  南風原さんは、さきに、分散分析におけるScale Typeの問題例を
示されました。データ値を逆数変換すると単調変換であるのに分析
結果が変わる、差が有意になったり非有意になったりするという
ものでした。

  心理学でよく用いられる分析法として、分散分析の他に因子分析
があります。このモデルも、線形モデルですのでデータ値は間隔
尺度の水準でなければなりません。以下に、3乗による変換を
行った場合の影響をシミュレーションで調べたものを報告します。
3乗変換では、1より大きい値がより強調されます。

  まず、次の直交2因子モデルでデータを生成します。

    x1 =     f1           + 0.1*e1
    x2 =     f1           + 0.1*e2
    x3 =     f1           + 0.1*e3
    x4 = 0.7*f1 + 0.7*f2 + 0.1*e4
    x5 = 0.7*f1 + 0.7*f2 + 0.1*e5
    x6 = 0.7*f1 + 0.7*f2 + 0.1*e6
    x7 =               f2 + 0.1*e7
    x8 =               f2 + 0.1*e8
    x9 =               f2 + 0.1*e9

  ここで、
          f1、f2   : 2つの独立な因子
          e1 〜 e9 : f1、f2と独立で、かつ、
                      互いに独立な因子(誤差)
          因子は全て標準正規分布に従うものとします。

  まず、上のモデルで1000個のデータを生成しました。
1000個のデータを生成するプログラムリストはこのメールの後ろに
リスト1として付けてあります。
  このデータに主因子法(柳井ら「因子分析」,1990、3.1節)を
適用すると以下のようになります。


固有値...
                 1     5.83907
                 2     3.06593
                 3     0.00095
                 4     0.00076
                 5     0.00036
                 6     0.00017
                 7    -0.00040
                 8    -0.00090
                 9    -0.00093

Communality...
                 1        0.99020
                 2        0.98950
                 3        0.98890
                 4        0.98914
                 5        0.98907
                 6        0.98845
                 7        0.99010
                 8        0.99003
                 9        0.98962

Varimax回転後の因子パターン
                  因子1    因子2
          x1    -0.00839  -0.99505
          x2    -0.01040  -0.99468
          x3    -0.01645  -0.99430
          x4     0.71253  -0.69386
          x5     0.71381  -0.69249
          x6     0.71016  -0.69579
          x7     0.99485   0.01937
          x8     0.99469   0.02483
          x9     0.99464   0.01784

  因子1がf2、因子2が−f1に対応する解が得られています。


  次に、x3、x6、x9の値を3乗したものに対して主因子法を
適用してみます。3乗することによって1より大きい値が
より強調されます。この3乗したものを含むデータを生成
するプログラムはこのメールの後ろにリスト2として付け
ました。
  このデータに対する解は以下のようになりました。

固有値...
                 1     5.09912
                 2     2.65472
                 3     0.17740
                 4     0.02004
                 5    -0.00870
                 6    -0.01109
                 7    -0.01243
                 8    -0.01602
                 9    -0.14919

Communality...
                 1        0.98198
                 2        0.98035
                 3        0.63671   <<==
                 4        0.97238
                 5        0.97475
                 6        0.60845   <<==
                 7        0.97718
                 8        0.98033
                 9        0.64173   <<==

Varimax回転後の因子パターン

                     因子1    因子2
           x1      -0.00461   0.99094
           x2      -0.00241   0.99012
           x3      -0.00092   0.79794  <<==
           x4      -0.71692   0.67706
           x5      -0.71853   0.67710
           x6      -0.57230   0.53002  <<==
           x7      -0.98792  -0.03470
           x8      -0.98927  -0.04092
           x9      -0.80095   0.01448  <<==

  3乗変換が行われた変数のcommunalityの減少、因子パターン
における因子負荷量の減少が認められます。

  因子分析の結果を解釈するとき、因子負荷量、communalityに
減少が認められる場合、Scale Typeのことも考慮する必要が
あるようです。


                               岡本安晴@金沢大学文学部
                               C00279 (at) simail.ne.jp

===============================
リスト1  1000個のデータを生成するプログラム

procedure TForm1.OKButtonClick(Sender: TObject);
const N = 1000;
type  TArray = array[1..9] of Extended;
var   f : TextFile;
      i, j : Longint;
      x    : TArray;

  procedure GenData( var x : TArray );
    var f1, f2 : Extended;
    begin
      with NormalRN do
        begin
          f1  :=Normal;
          f2  :=Normal;
          x[1]:=f1+0.1*Normal;
          x[2]:=f1+0.1*Normal;
          x[3]:=f1+0.1*Normal;
          x[4]:=0.7*f1+0.7*f2+0.1*Normal;
          x[5]:=0.7*f1+0.7*f2+0.1*Normal;
          x[6]:=0.7*f1+0.7*f2+0.1*Normal;
          x[7]:=f2+0.1*Normal;
          x[8]:=f2+0.1*Normal;
          x[9]:=f2+0.1*Normal;
        end;
    end;

begin
    NormalRN:=TNormalRN.Create;
    NormalRN.Init;
    OKButton.Enabled:=false;
    MsgLabel.Caption:='Calculation Started';
    UpDate;
    Assignfile(f, OutFlNmEdit.Text);
    Rewrite(f);

    writeln(f,'*/');
    writeln(f, '  9');
    for i:=1 to N do
      begin
          write(f, i:7,' ');
          GenData( x );
          for j:=1 to 9 do
            write(f,' ',x[j]:10:5);
          writeln(f);
      end;
    writeln(f, '  -1');  

    CloseFile(f);
    MsgLabel.Caption:='Calculation Ended';
    ExitButton.SetFocus;
    NormalRN.Free;
end;

=============================

=============================
リスト2  3乗による強調がある変数を含むデータの生成

procedure TForm1.OKButtonClick(Sender: TObject);
const N = 1000;
type  TArray = array[1..9] of Extended;
var   f : TextFile;
      i, j : Longint;
      x    : TArray;

  procedure GenData( var x : TArray );
    var f1, f2 : Extended;

    function p3( a : Extended ) : Extended;
      begin
           p3 := a * sqr(a);
      end;

    begin
      with NormalRN do
        begin
          f1  :=Normal;
          f2  :=Normal;
          x[1]:=f1+0.1*Normal;
          x[2]:=f1+0.1*Normal;
          x[3]:=p3(f1+0.1*Normal);
          x[4]:=0.7*f1+0.7*f2+0.1*Normal;
          x[5]:=0.7*f1+0.7*f2+0.1*Normal;
          x[6]:=p3(0.7*f1+0.7*f2+0.1*Normal);
          x[7]:=f2+0.1*Normal;
          x[8]:=f2+0.1*Normal;
          x[9]:=p3(f2+0.1*Normal);
        end;
    end;

begin
    NormalRN:=TNormalRN.Create;
    NormalRN.Init;
    OKButton.Enabled:=false;
    MsgLabel.Caption:='Calculation Started';
    UpDate;
    Assignfile(f, OutFlNmEdit.Text);
    Rewrite(f);

    writeln(f,'*/');
    writeln(f, '  9');
    for i:=1 to N do
      begin
          write(f, i:7,' ');
          GenData( x );
          for j:=1 to 9 do
            write(f,' ',x[j]:10:5);
          writeln(f);
      end;
    writeln(f, '  -1');  

    CloseFile(f);
    MsgLabel.Caption:='Calculation Ended';
    ExitButton.SetFocus;
    NormalRN.Free;
end;

==========================


スレッド表示 著者別表示 日付順表示 トップページ

ここは心理学研究の基礎メーリングリストに投稿された過去の記事を掲載しているページです。