핵심함수
spss.system.file: sav파일을 불러올 수 있는 함수
factanal(): 요인 분석 함수의 줄인말로써 요인 분석에서 해석이 어려운 어느 한 요인을 높게 나타나도록 하기 위하여 요인 축을 회전하는 방법
plot(): 기본적으로 plot() 함수는 산점도(scatter plot)를 그리는 함수지만 산점도뿐만 아니라 일반적으로 객체를 시각화하는데 모두 사용할 수 있는 일반적인 함수.
cor(): cor()함수는 상관계수를 구하는 함수이다
문제1: 다음은 drinking,water_example.sav 파일의 데이터셋이 구성된 테이블이다. 전체 2 개의 요인에 의해서 7 개의 변수로 구성되어 있다. 아래에서 제시된 각 단계에 맞게 요인 분석을 수행하시오.
단계 1 : 데이터파일 가져오기
library(memisc) #sav파일을 읽을 수 있는 memisc 라이브러리 불러오기
data.spss <- as.data.set(spss.system.file('dataset2/drinking_water_example.sav'))
#memisc 라이브러리를 활용하여 sav파일 불러오기
head(data.spss) #데이터 확인
drinkig_water_exam <- data.spss[1:7] ;drinkig_water_exam #1~7까지의 컬럼을 drinkig_water_exam 값에 저장하기
drinkig_water_exam_df <- as.data.frame(drinkig_water_exam) #데이터 프레임으로 변환
str(drinkig_water_exam_df) #데이터 확인
head(drinkig_water_exam_df) #데이터 확인
단계 2 : 베리맥스 회전법, 요인수 2, 요인점수 회귀분석 방법을 적용하여 요인 분석
result <- factanal(drinkig_water_exam_df, factors = 2,
rotation = "varimax", scores = "regression");result
#문제 요구에 맞게 요인점수 회귀분석방법을 적용하기
단계 3 : 요인적재량 행렬의 칼럼명 변경
colnames(result$loadings) <- c('제품친밀도','제품만족도');result
#colnames() 함수로 요구에 맞게 컬럼명 변경하기
단계 4 : 요인점수를 이용한 요인적재량 시각화
#관측치별 이름 표시
text(result$scores, labels = rownames(result$scores),
cex = 0.7, pos = 3, col = "blue")
#요인 적재량 표시
points(result$loadings, pch=19, col = "red")
text(result$loadings, labels = rownames(result$loadings),
cex = 0.8, pos = 3, col = "red")
단계 5 : 요인별 변수 묶기
# 제품만족도 데이터프레임 - q1,q2,q3
x <- data.frame(drinkig_water_exam_df$Q1, drinkig_water_exam_df$Q2,
drinkig_water_exam_df$Q3);x
# 제품친밀도 데이터프레임 - q4,q5,q6,q7
y <- data.frame(drinkig_water_exam_df$Q4, drinkig_water_exam_df$Q5,
drinkig_water_exam_df$Q6, drinkig_water_exam_df$Q7);y
# 요인별 산술평균 계산 (round()함수를 활용해 결과값 출력)
avg1 <- round((x$drinkig_water_exam_df.Q1+x$drinkig_water_exam_df.Q2
+x$drinkig_water_exam_df.Q3)/ncol(x),2) ;avg1
avg2 <- round((y$drinkig_water_exam_df.Q4 + y$drinkig_water_exam_df.Q5
+ y$drinkig_water_exam_df.Q6 + y$drinkig_water_exam_df.Q7) / ncol(y), 2);avg2
문제2: 문제1 에서 생성된 두 개의 요인을 데이터프레임으로 생성한 후 이를 이용하여 두 요인 간의 상관관계 계수를 제시하시오.
result2 <- data.frame(avg1, avg2)
cor(result2) #cor()함수를 활용해 두 요인간의 상관계수를 확인
'R > 머신러닝 & 딥러닝' 카테고리의 다른 글
[R] 시계열분석 관련 실습(2) (0) | 2022.11.07 |
---|---|
[R] 시계열분석 관련 실습(1) (0) | 2022.11.07 |
[R] 로지스틱 회귀분석관련 실습 (0) | 2022.11.04 |
[R] 변수선택 관련 간단한 실습 (0) | 2022.11.04 |
[R] 회귀분석 연습문제 (0) | 2022.11.04 |