因子分析編

###################因子分析編#########################

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)

コメント

このブログの人気の投稿

subsetで必要なデータだけを、取り出す。

Googleフォームの使い方(基本編)

Rでの、データの基礎統計量の算出(summary,describe)

Googleフォーム使い方(応用編) 回答に応じて分岐、セッションの移動

Googleフォームの使い方(応用編) 設定の使い方