目次へ戻る

因子得点(欠損値の処理も)

HADで因子得点を求める

ここでは、社会心理学のための統計学(清水裕士先生、荘島宏二郎先生)の書籍P45の表3-4「因子分析による因子得点の計算(回帰法による推定)」」をHADとRを使って作成する方法について解説しています。あくまで手順の解説になりますので、詳細は書籍をご覧ください。

データは、こちらからダウンロードできます。ここでは第3章のCSVファイルをダウンロードします。

欠損値の処理

書籍内で言及はされていないようにありますが、実はダウンロードしたファイル、v03c3attachment.csvには欠損値があります。エクセルで開いたときの、70行目D列のデータです。2021/1/22時点で空白になっています。よい機会ですので、欠損値の扱い方について簡単にご説明します。

HADの場合は、.(ピリオド)を使って欠損値を表します。70行目D列にピリオドを打ち込みます。その後、名前をつけてCSV形式で保存します。

Rの場合は、NAを使って欠損値を表します。70行目D列にNAと書き込んでください。その後、CSV形式で保存を行いますが、ここで注意が必要です。エクセルでは次にあげる2種類のCSV形式が存在します。

  • CSV(コンマ区切り)
  • CSV UTF-8(コンマ区切り)

Rでは、CSV(コンマ区切り)を選ぶようにしてください。UTF-8で保存されたファイルを開こうとすると、

make.names(col.names, unique = TRUE) でエラー:
不正なマルチバイト文字があります

というようなエラーが表示されるようです。

HADで因子得点を求める

こちらの手順を参考にして読み込みます。繰り返しになりますが、上に書いた外れ値の処理を事前に施してください。

以下の図を参考に設定をして「分析実行」をクリックします。特に因子得点にチェックを入れる点に注意してください。

まず、Factorシートには因子分析の結果が出ます。書籍のP44の表3-3と同じ情報が出力されていることを確認してください。

次に因子得点ですが、これは「ScoreF」という別シートに出力されます。ちなみに公式サイトの説明に次のような説明があります。

また因子得点を出力したい場合は、因子得点と尺度平均値が選択できます。因子得点は回帰法で推定します。尺度平均値は、項目は因子負荷が最も高い因子に負荷していると仮定して、それぞれの因子に該当する尺度の平均値を算出します(因子分析表の、太字の項目を平均する)

https://norimune.net/655

さてHADを使って無事に因子得点を算出できましたが、実は表3-4と比較したときに、Factor2の正負が反転しています。私がなにか勘違いしているかもしれません。ただし、以下に説明するようにRを使って因子得点を算出したときも正負が反転しています。つまり、HADとRの結果は一致しています。

Rで因子得点を求める

Rでは次のように因子得点を求めることができます。factanal関数とfa関数を使う2つの方法があります。出力される数値がわずかに異なりますが、基本的には同じ結果が得られます。

dat <- read.csv("CSVファイルを指定")
subdat <- na.omit(subset(dat, select = c(不安1,不安2,不安3,不安4,不安5,回避1,回避2,回避3,回避4,回避5)))

# 因子数は2でプロマックス回転、因子得点の推定は回帰法を使う

# 方法1
result1 <- factanal(subdat, 2, rotation="promax", scores="regression")
result1$scores # 因子得点

# 方法2
library(psych)
library(GPArotation) 
result2 <- fa(subdat, nfactors = 2, fm = "ml", rotate = "promax")
result2$scores # 因子得点

Copyright(c) 2011 Department of Psychology, School of Letters, Graduate School of Human-Environment Studies, Kyushu University. All Rights Reserved. Designed by o2BusinessTheme