[수학]/R로 배우는 통계학
[통계학/R] 요인분석 : 요인분석의 목적, 요인분석 실습 코드
seom-j
2023. 7. 18. 11:46
📌 요인분석의 목적
여러 변수들을 하나의 요인으로 묶어내는 방법
일대일 함수처럼 하나의 변수들은 하나의 요인에만 묶여짐(주성분분석과의 차이)
➡️ 상호베타적으로 할당되어 변수 재탄생
📌 요인분석 실습 코드
# --- 데이터 구조 파악 ---
str(state.x77)
View(state.x77)
# --- 요인 개수 추출 ---
if (!require(psych)) {
install.packages('psych')
library(psych)
}
if (!require(nFactors)) {
install.packages('nFactors')
library(nFactors)
}
state.x77 <- as.data.frame(state.x77)
# fa.parallel 함수 활용
fa.parallel(state.x77, fm = "ml", fa = "fa", n.iter = 100) # 최대우도법을 기반으로 요인의 갯수 추출
# 2개의 요인을 사용하는 것을 추천
# nFactors 패키지 활용
nScree(state.x77) # 4가지 방법론 중 3가지에서 3개의 요인을 추천
# eigen value 확인
eigen(cor(state.x77)) # eigen value가 1을 넘는 것이 3번째까지 확인됨
# --- 요인 분석 수행 ---
pc3 <- principal(state.x77, nfactors = 3, rotate = "varimax", scores = TRUE)
print.psych(pc3, cut = 0.3, sort = TRUE)
cortest.bartlett(state.x77) # Bartlett's Test
if (!require(REdaS)) {
install.packages('REdaS')
library(REdaS)
}
kmos <- KMOS(state.x77)
kmos
if (!require(semPlot)) {
install.packages('semPlot')
library(semPlot)
}
semPaths(pc3, what = "est", residuals = FALSE, cut = 0.3,
posCol = c("White", "darkgreen"), negCol = c("white", "red"), edge.label.cex = 0.75)
➡️ 요인분석 수행 결과를 알아볼 수 있음