[ R ] 요인분석 #3 잘못 분류된 요인 제거로 변수 정제
(2) 잘못 분류된 요인 제거로 변수 정제
특정 변수가 묶여질 것으로 예상되는 요인으로 묶이지 않는 경우 해당 변수를 제거하여 변수를 정제하는 방법
ex) 요인분석에 사용될 데이터 셋 가져오기
#1 spss데이터 셋 가져오기
install.packages("memisc") library(memisc) setwd("C:/Rwork/") data.spss <- as.data.set(spss.system.file('drinking_water.sav')) head(data.spss[1:11],3) # Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 # 1 3 2 3 3 4 3 4 3 4 3 4 # 2 3 3 3 3 3 3 2 3 3 2 3 # 3 3 3 3 4 3 4 3 4 4 4 4 |
memisc 패키지: spss데이터를 가져오기 위한 패키지
as.data.set(spas.system.file(‘spss데이터 파일’)함수: spss데이터를 가져오기
#2 데이터프레임으로 변경
drinking_water <- data.spss[1:11] drinking_water_df <- as.data.frame(data.spss[1:11]) str(drinking_water_df) |
ex) 요인 수를 3개로 지정하여 요인 분석 수행
result2 <- factanal(drinking_water_df, factor=3,rotation="varimax") result2 Call: factanal(x = drinking_water_df, factors = 3, rotation = "varimax") Uniquenesses: Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 0.321 0.238 0.284 0.447 0.425 0.373 0.403 0.375 0.199 0.227 0.409 Loadings: Factor1 Factor2 Factor3 Q1 0.201 0.762 0.240 Q2 0.172 0.813 0.266 Q3 0.141 0.762 0.340 Q4 0.250 0.281 0.641 Q5 0.162 0.488 0.557 Q6 0.224 0.312 0.693 Q7 0.235 0.219 0.703 Q8 0.695 0.225 0.304 Q9 0.873 0.122 0.155 Q10 0.852 0.144 0.161 Q11 0.719 0.152 0.225 Factor1 Factor2 Factor3 SS loadings 2.772 2.394 2.133 Proportion Var 0.252 0.218 0.194 Cumulative Var 0.252 0.470 0.664 Test of the hypothesis that 3 factors are sufficient. The chi square statistic is 40.57 on 25 degrees of freedom. The p-value is 0.0255 |
Uniquenesses항목에서 모든 변수가 0.5이하의 값을 갖기 때문에 모두 유효
데이터 셋에서 의도한 요인과 요인으로 묶여진 결과가 서로 다르게 나옴
q4 변수의 타당성 의심
p-value < 0.05 : 요인변수 선택에 문제가 있다고 볼 수 있다.
여기서 p-value는 chi_square검정으로 기대치와 관찰치에 차이가 있음을 알려주는 확률값이다.
요인 수를 3개로 전제하기 대문에 p-value값은 무시해도 된다.
ex) 요인별 변수 묶기
#1 q4를 제외하고 데이터프레임 생성
dw_df <- drinking_water_df[-4] str(dw_df) dim(dw_df) |
#2 요인에 속하는 입력 변수별 데이터프레임 구성
s <- data.frame(dw_df$Q8, dw_df$Q9, dw_df$Q10, dw_df$Q11) c <- data.frame(dw_df$Q1, dw_df$Q2, dw_df$Q3) p <- data.frame(dw_df$Q5, dw_df$Q6, dw_df$Q7) |
요인분석을 통해서 만들어진 파생변수는 상관분석이나 회귀분석에서 독립변수로 사용할 수 있다.
#3 요인별 산술평균 계산
satisfaction <- round( (s$dw_df.Q8 + s$dw_df.Q9 + s$dw_df.Q10 + s$dw_df.Q11) / ncol(s), 2) closeness <- round( (c$dw_df.Q1 + c$dw_df.Q2 + c$dw_df.Q3) / ncol(s), 2) pertinence <- round( (p$dw_df.Q5 + p$dw_df.Q6 + p$dw_df.Q7) / ncol(s), 2) |
요인 제품만족도(satisifaction)를 구성하는 4개의 변수의 산술평균 계산 요인 제품친밀도(closeness)와 요인 제품만족도(pertinence)는 3개 변수에 대한 산술평균을 계산하여 파생변수를 생성
#4 상관관계분석
drinking_water_factor_df <- data.frame(satisfaction, closeness, pertinence) colnames(drinking_water_factor_df) <- c("제품만족도", "제품친밀도", "제품적절성") cor(drinking_water_factor_df) # 제품만족도 제품친밀도 제품적절성 # 제품만족도 1.0000000 0.4046931 0.4823906 # 제품친밀도 0.4046931 1.0000000 0.6346448 # 제품적절성 0.4823906 0.6346448 1.0000000 length(satisfaction); length(closeness); length(pertinence) # [1] 380 # [1] 380 # [1] 380 |
(3) 요인 분석 결과 제시
요인 분석 결과를 논문이나 보고서에 제시하는 경우, 해당 요인과 변수, 요인적재량, 요인의 설명력을 나타내는 고유값을 함께 제시