データのお砂場(39) R言語、ability.cov、能力/知能テストの共分散行列とな

Joseph Halfmoon

R言語所蔵のサンプルデータセットをABC順(大文字先)で端から眺めておりますが、ついに大文字完了、小文字先頭のaに戻りましたです。なんか元の木阿弥感が強いデス。まだ先は長い。さて今回は能力/知能テストの集計結果の処理なんであります。そういえば遥かな昔に似たようなことをやったような。既に忘却の彼方。

※「データのお砂場」投稿順Indexはこちら

以前に似たような処理をやった気であったのは以下2件です。どちらも処理は出来たけれども、本人まったく訳分かっていない回です。

データのお砂場(11) R言語、Harman23.cor、因子分析?何が何やら

データのお砂場(12) R言語、Harman74.cor、因子分析?「続」何が何やら

のっけから何なのですが、その後勉強が進んだということは全く無く、再び「因子分析」に遭遇してしまったので今回も「何が何やら」必定。

さて、今回のデータセットの解説ページは以下に。

Ability and Intelligence Tests

能力、知能テストの集計結果らしいです。6個のテストの112名様の結果を集計し、共分散行列にしたものが対象のデータです。集計してしまっているので個人情報などは皆無。テスト項目は以下に(といってこれまた分かったような、本当は分かっていないような)

    1. general キャッテル?式知能テスト。遥かな昔知能テスト受けたが忘却。
    2. picture 絵の完成?ただpicture言われてもなあ。
    3. block ブロックのデザイン?何それ。
    4. maze 迷路。迷路を解けば良いのかね。
    5. reading comprehension 読解。何読んだのよ。
    6. vocab 語彙力。きっと英語だ。あたりまえか。

まあ、これらのテスト項目を変数として、その間の関係を共分散行列(covariance matrix)として表にしたものがデータらしいです。

今回の参考文献が以下に。例によって同志社大の先生のページ

Rと因子分析

1か所引用させていただいます。

因子分析は、変数の間の相関関係から共通因子を求めることで、多くの変数を少数個の共通因子にまとめて説明することを目的としている。

まずは生データ

生データをロードして、そのデータ形式を確かめると list でした。rawDataClass

R言語の list は、「何でも入る」入れ元みたいな感じです。実際に今回のデータセット全貌を見てみると以下のようです。

リストの最初の要素 $covには、共分散行列そのもの。$centerは、各項目の中心、$n.obsは全観測数(人数)てな具合で良いのですかね。

肝心の共分散行列のみをとりだすのは以下で(取り出す必要ないけど。)rawDataCov

またlistはunlistできるのでやってみたものが以下。ただ、データ構造が潰れてフラットなデータになってしまうので、今回は迷惑千万。rawDataUnlist

因子分析やってみた

訳分かっていなくても、R言語では因子分析を一撃でやってくれる関数ありデス。説明ページの例題から、こんな感じ。factorAnalysis1

上記のようにp-valueはとても小さいので、有意水準が5%でも、各変数は独立だという帰無仮説は棄却される、と。ホントか?

でもねえ、一個の因子で説明できそー、というのではあまり役にたたない感があります。個人の感想です。

そう思ったのか例題も2つの因子で計算しなおしてます。こんな感じ。

factorAnalysisUV

でもま、上の結果のfactor1とfactor2は全変数混ざっていて何だかよく分からないです。でも、デフォルトのバリマックス回転というのをプロマックス回転というのに変更するとちょっといい感じになります。

factorAnalysisUP

プロマックス回転、斜行回転の一種なんだそうです。なんだか文学的な背景のあるお名前みたいですが、わたしゃサッパリです。でもま、これで処理すりゃ、なんだか解釈しやすい結果がでてくるよ、っと。じゃ最初からプロマックスでやれやと。

冒頭のアイキャッチ画像に貼り付けたグラフを描いたときのコマンドが以下に。

Results <- factanal(factors = 2, covmat = ability.cov,rotation = "promax")
barplot(Results$loadings, col=c(1,2,3,4,5,6))

グラフ、再掲しました。書き加えている文字は「個人の感想」です。左Factor1が言語能力?右Factor2が図形認識力に見えます。縦方向は負荷(ローディング)の積み上げですが該当のテスト項目名を書き加えてあります(文字の赤、黒は見えやすさだけで意味ありません。)BarPlot

個人的には上の結果は納得いくような。。。でも計算過程はサッパリなんでありますが。

データのお砂場(38) R言語、WorldPhones、世界の電話台数、70~60年前 に戻る

データのお砂場(40) R言語、airmiles、米国の航空会社の旅客マイルとな、昔の へ進む