No.13674 相関行列のデータへの因子分析について  【そらに】 2010/10/27(Wed) 07:08

ローデータではなく,相関行列のデータ(具体的には,WISC-III知能検査法のマニュアルに記載されている,下位検査の内部相関表)に因子分析を行ないたいと思っています。

これまでは分析にはSPSSを使用していたのですが,SPSSでは相関行列のデータを入力して,それに対して因子分析を行うことはできないようでした。

線形代数などの知識がないため,相関行列を見ながら計算式に基づいて,電卓などを使って固有値と固有ベクトルを求めることはできません(たとえ知識があっても膨大な作業になるのでしょうか……?)

そのため,何らかのソフトを利用したいと思っています。

コマンドの入力ができないため,Rは今まで挑戦する勇気がなかったのですが,Rでは,「相関行列のデータを入力」→「そのデータに対して因子分析を実施」という分析ができるのでしょうか?

ご教授いただければ幸いです。

No.13680 Re: 相関行列のデータへの因子分析について  【青木繁伸】 2010/10/27(Wed) 14:54

> R ではできるでしょうか

できますよ。
相関係数行列を(例えば,r に)読み込んで,factanal(covmat = r, factors = 2) などとするだけです。

No.13681 Re: 相関行列のデータへの因子分析について  【そらに】 2010/10/27(Wed) 16:44

早速のご回答ありがとうございます。

青木先生の著書などを参考にしながら,最初からRの使い方を勉強したいと思います。

No.13723 Re: 相関行列のデータへの因子分析について  【そらに】 2010/11/05(Fri) 13:50

先日はご教授ありがとうございました。
青木先生の著書を拝読し,以下のように入力しましたら,WISCのマニュアルに載っているものと同様の結果を再現することができました。
set.seed(123)
all <-matrix(c(1.00,0.54,0.54,0.62,0.51,0.39,0.39,0.30,0.38,0.40,0.34,0.34,0.20,
0.54,1.00,0.46,0.60,0.52,0.33,0.40,0.31,0.32,0.39,0.29,0.31,0.19,
0.54,0.46,1.00,0.49,0.44,0.45,0.33,0.34,0.36,0.49,0.34,0.39,0.25,
0.62,0.60,0.49,1.00,0.62,0.36,0.35,0.29,0.33,0.36,0.32,0.31,0.17,
0.51,0.52,0.44,0.62,1.00,0.29,0.38,0.29,0.33,0.35,0.31,0.31,0.17,
0.39,0.33,0.45,0.36,0.29,1.00,0.23,0.27,0.20,0.37,0.24,0.32,0.18,
0.39,0.40,0.33,0.35,0.38,0.23,1.00,0.22,0.39,0.43,0.43,0.31,0.21,
0.30,0.31,0.34,0.29,0.29,0.27,0.22,1.00,0.31,0.38,0.27,0.55,0.22,
0.38,0.32,0.36,0.33,0.33,0.20,0.39,0.31,1.00,0.40,0.34,0.36,0.23,
0.40,0.39,0.49,0.36,0.35,0.37,0.43,0.38,0.40,1.00,0.52,0.44,0.37,
0.34,0.29,0.34,0.32,0.31,0.24,0.43,0.27,0.34,0.52,1.00,0.30,0.22,
0.34,0.31,0.39,0.31,0.31,0.32,0.31,0.55,0.36,0.44,0.30,1.00,0.22,
0.20,0.19,0.25,0.17,0.17,0.18,0.21,0.22,0.23,0.37,0.22,0.22,1.00),13, 13)
library(MASS)
z <- mvrnorm(n=1125,
mu=rep(0,13),
Sigma=all,
empirical=TRUE)
ans <- factanal(z, factors=4, rotation="varimax")
ans
もう一つ,伺いたいことがあるのですが,Heywood caseというものを避けるため,WISCやWAISでは,反復計算回数を2回に設定するのが慣例だと教わりました。

反復計算回数は,ans <- factanal(z, factors=4, rotation="varimax") の () の中に何か新しいコマンドを入力すれば設定できるのでしょうか。

それとも,青木先生の
http://aoki2.si.gunma-u.ac.jp/R/pfa.html
のページにあるような,複雑なコマンドを使用する必要があるのでしょうか。

お忙しい中恐縮ですが,ご教授いただけましたら幸いです。

No.13724 Re: 相関行列のデータへの因子分析について  【青木繁伸】 2010/11/05(Fri) 14:08

factanal(covmat = r, factors = 2) というような方法でやるのですよとお答えしたのに,なぜ,そうしないでわざわざ mvrnorm で仮想データを作ったのでしょうか?

factanal(covmat=all, factors=4, rotation="varimax") で,全く同じ結果が得られますよ。もし,因子得点を求めて更なる分析をとか思っているのかも知れませんが,それはむり(元のデータは多次元正規分布データ じゃないのだから)。

> Heywood caseというものを避けるため,WISCやWAISでは,反復計算回数を2回に設定するのが慣例

そのようにするのは,表面を取り繕っている(つまり,問題が表面化しない前に計算を強制的に中止する)だけです。「WISCやWAISでは,反復計算回数を2回に設定するのが慣例だ」というのは,お笑いぐさですね。

pfa や従来の統計プログラムなどで主因子解を求める場合には,共通性の反復推定を行うわけで,「反復計算回数」とはこれを意味しているのでしょう。つまり,共 通性が収束しない(収束しても共通性が1を超えることがない)うちに収束計算を打ち切ってしまおうということ。正しい答えではないものを得ることになりま す。

factanal は,"Perform maximum-likelihood factor analysis" ですから,"共通性の反復推定"はありません。オンラインヘルプを見て分かるように,「何か新しいコマンドを入力すれば設定できる」ものではありません。 そのような指定をするための引数はありません。

No.13725 Re: 相関行列のデータへの因子分析について  【そらに】 2010/11/05(Fri) 20:34

ご回答ありがとうございます。

>factanal(covmat = r, factors = 2) というような方法でやるのですよとお答えしたのに,なぜ,そうしないでわざわざ mvrnorm で仮想データを作ったのでしょうか?

せっかくご教授いただいたのに,別の方法を使ってしまい,申し訳ありません。

先生に
>相関係数行列を(例えば,r に)読み込んで,factanal(covmat = r, factors = 2) などとするだけです。

とご教授いただいたのですが,相関係数行列の作成方法が分からなかったため,先生の書籍を購入し,相関係数行列の作成方法の項を読み,そのまま因子分析の項も読んで分析を行なってしまいました。

nvrnormというのは,仮想のローデータを作り出す関数なのですね。

教えていただき,ありがとうございます。
また,以降は失礼のないよう注意いたします。

今後の研究では,
生川善雄,増山英太郎,代喜一(1981)精神遅滞者の知能構造に関する研究―WAIS成人知能診断検査による検討.心理学研究,52(3),181-185.
のように,障害のある人とない人の知能構造の異同に関して明らかにしたいと思っております。

先生のご回答を読んで,統計プログラムの使用法だけではなく,因子分析の数学的な理論なども勉強する必要があると実感いたしました。

貴重なお時間をいただき,ありがとうございます。

No.13726 Re: 相関行列のデータへの因子分析について  【青木繁伸】 2010/11/05(Fri) 20:37

> 相関係数行列の作成方法が分からなかったため,

all <-matrix(c(1.00,0.54,0.54,0.62,0.51,0.39,0.39,0.30,0.38,0.40,0.34,0.34,0.20,
0.54,1.00,0.46,0.60,0.52,0.33,0.40,0.31,0.32,0.39,0.29,0.31,0.19,
  :
0.20,0.19,0.25,0.17,0.17,0.18,0.21,0.22,0.23,0.37,0.22,0.22,1.00),13, 13)

が相関行列でしょうに。

No.13728 Re: 相関行列のデータへの因子分析について  【そらに】 2010/11/06(Sat) 09:25

おっしゃる通りです。

私は一週間ほど前に初めてRをインストールした初心者ですので, <-matrix(c で始めることや,最後に行と列の数字を記入すること,(この場合, ,13,13) で終えること)を知りませんでした。

大学の書店でRに関する本をいくつか読んだのですが,さっと読んだ限りでは,ローデータの分析について書いてあるものが多く,相関係数行列の作成については,先生の本が一番分かりやすかったです。

今回は一度,仮想データを作ってしまうという失敗をしてしまいましたが,訂正も含めて,ご教授いただけて嬉しいです。

No.13732 Re: 相関行列のデータへの因子分析について  【chen】 2010/11/06(Sat) 21:27

教えを請うてきた,十分な知識のない初心者が,自分の教えたことを十分に理解できずに検討違いのことをやってしまったとして,それを殊更粘着に責め立て,辱める必要があるのでしょうか?

---------------------
Re: 相関行列のデータへの因子分析について
  投稿者:青木繁伸 2010/11/05(Fri) 20:37 No. 13726
> 相関係数行列の作成方法が分からなかったため,

all <-matrix(c(1.00,0.54,0.54,0.62,0.51,0.39,0.39,0.30,0.38,0.40,0.34,0.34,0.20,
0.54,1.00,0.46,0.60,0.52,0.33,0.40,0.31,0.32,0.39,0.29,0.31,0.19,
  :
0.20,0.19,0.25,0.17,0.17,0.18,0.21,0.22,0.23,0.37,0.22,0.22,1.00),13, 13)

が相関行列でしょうに。

No.13733 Re: 相関行列のデータへの因子分析について  【青木繁伸】 2010/11/07(Sun) 08:09

引用形式が全く不適切。

...が相関行列でしょう。

と書けば,あなたのお気に召したのでしょうか。

...が相関行列でしょうね。

とか

...が相関行列でしょうに。

とか

...が相関行列ですよ(全く!)

とか

...が相関行列だよ

それぞれ,ニュアンスが違うでしょうね。「でしょう」と書かずに「でしょうに」と書いたのは,確かに私の感情の違いが現れているのでしょう。しかし,それを「殊更粘着に責め立て,辱める」と言うように批判されるのは,納得がいきません。
気に入らなければ,黙って退場すればよいでしょう。二度とおいで頂く必要はありません。「そして誰もいなくなった」らここを閉めるだけです。

● 「統計学関連なんでもあり」の過去ログ--- 044 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る