分解分析の違い を、Rで進める時のレシピです。
主成分分析、独立成分分析、因子分析をいっぺんにするコードです。
# データの読み込み
library(fastDummies)# ライブラリを読み込み
setwd("C:/Rtest") # 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T) # データを読み込み
Data2 <- Data # 加工用のデータを作る
# Data2 <- dummy_cols(Data2,remove_first_dummy = FALSE,remove_selected_columns = TRUE)# 質的変数があればダミー変換
# 主成分分析
pc <- prcomp(Data2, scale=TRUE,tol=0.01)# 主成分分析
Data3a<-pc$x# 要約変数(主成分)を抽出
Data4a<-cbind(Data2,Data3a)# 元データと合体
cor2all <- cor(Data4a)^2# 変数の組合せについて、寄与率(相関係数の2乗)を計算
ncol2 <- ncol(Data2)
ncol3 <- ncol(Data3a)
n3 <- ncol2 + 1
n4 <- ncol2 + ncol3
PCA <- round(cor2all[n3:n4,1:ncol2],4)
# 独立成分分析
library(fastICA) # ライブラリを読み込み
setwd("C:/Rtest") # 作業用ディレクトリを変更
ICA <- fastICA(Data2, ncol3)# 独立成分分析。抽出成分の数はncol3
Data3b <- ICA$S# 要約変数(独立成分)の抽出
Data4b<-cbind(Data2,Data3b)# 元データと合体
cor2all <- cor(Data4b)^2# 変数の組合せについて、寄与率(相関係数の2乗)を計算
ICA <- round(cor2all[n3:n4,1:ncol2],4)
# 因子分析
ncol3c <- ncol3 # 下記でエラーが出たら、「ncol3-1」や、「ncol3-2」に書き換え
library(psych) # ライブラリの読み込み
#library(GPArotation) # ライブラリの読み込み
fa_result <- fa(Data2, nfactors = ncol3c, fm = "ml", rotate = "varimax") # 因子分析。潜在変数の数をncol3cと仮定
Data3c <- fa_result$scores # ライブラリの読み込み
Data4c<-cbind(Data2,Data3c)# 要約変数の抽出
cor2all <- cor(Data4c)^2# 変数の組合せについて、寄与率(相関係数の2乗)を計算
n4 <- ncol2 + ncol3c
FA <- round(cor2all[n3:n4,1:ncol2],4)
PCA# 寄与率(相関係数の2乗)の表示
ICA# 寄与率(相関係数の2乗)の表示
FA# 寄与率(相関係数の2乗)の表示
plot(Data2)# 元データ
plot(as.data.frame(Data3a))# 主成分分析の結果
plot(as.data.frame(Data3b))# 独立成分分析の結果
plot(as.data.frame(Data3c))# 因子分析の結果