因子分析編
###################因子分析編#########################
VSS.scree(xx)
#スクリープロット作成
x.cor<-cor(xx,use="complete.obs")
#相関マトリックスを準備して
#[use="complete.obs"]=>欠損を含むサンプルをすべて除く
#[use="pairwise.complete.obs"]=>2変数の組み合わせごとに欠損値があるサンプルを除く(ペアワイズ)
eigen(x.cor)
#因子ごとの固有値$values
fa.parallel(x.cor)
#平行分析
d1<-fa(x.cor,nfactors=5,fm="ml",rotate="promax")
#nfactors=抽出する因子数
#fm=因子抽出方法(pa=主因子法,ml=最尤法,gla=一般化最小二乗法)
#rotate=回転の種類(promax=プロマックス,varimax=バリマックス,none=なし)
print(d1,sort=TRUE,digit=3)
#sort=TRUE並び替えの有無
#digit=負荷量(パターン)の表示桁数
#h2共通性
#u2独自性
#SS loadings負荷量の二乗和
#Proportion Var寄与率
#Cumulative Var累積寄与率
################因子分析編Part2(結果を負荷量の低いものを非表示にする)#####################
#resultというデータセットをつくり、その中に因子分析結果をぶちこむ
result <- fa(xa10,nfactors=5,fm="ml",rotate="promax")
#因子分析(データセット名,因子数=4,抽出法=ml[mlは最尤法。],回転=プロマックス)
fa(xa10,nfactors=5,fm="ml",rotate="promax")
#因子分析の結果を順番に並び替えるプログラムをぶちこむ
sort.loadings <- function(x) # factanalが返すオブジェクト
{
a <- x$loadings
y <- abs(a) # 因子負荷量の絶対値
z <- apply(y, 1, which.max) # 各変数をどの因子に含めるべきか
loadings <- NULL # 結果
for (i in 1:ncol(y)) {
b <- a[z == i,, drop=FALSE]
if (nrow(b)) {
t <- order(abs(b[, i, drop=FALSE]), decreasing=TRUE) # 因子単位で並べ替え情報を得る
loadings <- rbind(loadings, b[t,, drop=FALSE])
}
}
class(loadings) <- "loadings" # クラスの設定
return(loadings) # 結果を返す
}
#因子分析結果をならびかえる指示
sort.loadings(result)
コメント
コメントを投稿