初学者の統計学習ノート統計学およびR、Pythonでのプログラミングの勉強の過程をメモっていくノート。因子分析の分析対象から除去すべき項目を割り出すプログラムを書いてみる心理学で心理測定尺度の因子分析を行う際に、30項目なら30項目の質問を並べて「とても当てはまる」〜「全く当てはまらない」までの7段階の回答を取り、7点〜1点を割り振って、因子分析を行うことがよくあります。仮説によって「3因子」の構造が想定される(あるいはスクリープロットなどから3因子構造が示唆される)として、分析してみたときに因子1と因子3の両方に高い負荷をもつ質問項目があったりすると、尺度の構成上困ってしまいます。いう項目は、「ああ、質問文の作りが良くなかったんだな」と判断して分析対象から除いて、再度因子分析を行ったりします。各質問項目の「共通性」をみて、著しく低い値が出ている場合は、共通因子によって説明される分散の割合が小さいということなので、その項目も除いてみたりします。手元にある調査データの値を適当に変換してつくったダミーデータで以下のように分析してみます。因子負荷行列をみると、たとえばQ6なんかは第1因子に0.473、第3因子に0.316という負荷量を持っていて、「どっちやねん」と解釈しづらい項目になっています。共通性が0.1台などのものもあり、共通因子によって説明できているとはあまり言えない項目もたくさんまじっていますね。因子分析には、どういう因子構造として解釈するのが適切かという唯一の正解は存在しませんが*1、説明力の低い結果とか、複数の因子にかかってしまっている項目があるような結果になるのは、なるべく避けたいです。上の結果をみて、共通性0.3未満のやつをとりあえず削ってみるとか、2つ以上の因子に対して絶対値0.3以上の負荷量を持っている項目を削ってみるとかしてみて、もう1回因子分析をやってみたいですね。(最終的にたとえば共通性は0.5以上ないとダメとかは言われますが。)しかし、因子分析を1回行って、結果の因子負荷行列などをみて、「あーこの項目削ってみよう」とか言ってエクセルで削ったテーブルをつくり、再度読み込んでやり直す・・・といったことはしたくありません。自動的に、どの項目が削除候補となるかを計算し、それを除いて再度分析するといったところまで自動でやりたいですね。いうわけで、以下のような関数を作成しました。パッケージpsychが読み込まれていることが前提です。(因子分析のfa()関数を使うため。"lowcommunality.name")return(list)}戻り値の定義の仕方をあまり分かってないのですが、複数あるときはリストにしないとダメなようです。これをつかって、最初のデータで分析を実行してみます。おおww13項目(Q10は両方の基準にひっかかっている)も、削除候補となりました。これらを削ったデータを用意してもう1回分析してみます。1717項目残っていますね。5つも削除候補になってしまいました。だめだこの分析は感じですね。(じつはスクリープロットや平行分析の結果からすると3因子ではなく4因子が示唆されている。)まぁ、実際の分析はここまで機械的に進めていくわけでもなく、もう少しいろんな要素を考慮して削除項目を決めていきますが、とりあえず判定のコードは書けたということで練習にはなりました。実際、使うと思います。)を行うたとえば重回帰分析とかを行って、効果が「有意ではない」とい...2014-11-01検定の繰り返しと多重比較について(追記あり)真ん中らへんに追記しました。R、Pythonの勉強の過程をメモっていくノートです。初心者なのであまり信用なさらぬよう。間違いについてはコメント等でご指摘頂ければ幸いです。6つぶやき@statsbeginnerさんのツイートはてなブログをはじめよう!midnightseminarさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。