1. 들어가며
몸무게나, 키와 같이 실재하는 속성을 측정하려면 kg, cm 등의 단위로 만들어진 척도(scale)를 사용하면 된다. 그러나 추상적인 개념이나 특정 의견에 대해 어떻게 생각하는지 측정하려면 인위적으로 간격을 나눈 리커트 척도를 사용한다. 그 간격의 수에 따라 적게는 3첨 척도 많게는 7점 척도까지 사용하지만 일반적으로 4점 또는 5점 척도를 사용한다.
2. 리커트 데이터의 성질
리커트 척도로 측정된 데이터가 순서(ordinal) 데이터인지 비율(ratio)데이터인지에 대해서는 의견이 분분하지만 분석의 관점에서는 순서 데이터로도, 비율 데이터로도 분석한다. R을 이용해 리커트 척도 데이터를 분석하는 방법에 대해 알아보자.
3. 예제 데이터 준비
A=c(2,1,3,2,2,4,4,4,5)
B=c(1,5,2,2,3,4,4,1,2)
C=c(5,2,3,2,3,5,4,3,4)
G=c("T","F","T","F","T","F","T","F","T")
df = data.frame(A,B,C,G)
str(df)
예제 데이터는 아래와 같이 세 개의 numeric 변수와 하나의 character 변수로 구성되어 있다. 데이터는 A,B,C 문항에 응답한 데이터(5점 척도)라고 가정한다. 데이터를 출력하면 아래 그림과 같다.
4. 순서 데이터로 다루기
numeric 데이터로 취급해 평균, 분산 등의 값을 구하는 과정은 많이 소개되어 있으므로(아래 글 참고) 변수들을 순서형 변수로 보고 분석하는 방법을 살펴보자.
(1) 하나의 변수 분석
예제 데이터의 변수 A만 순서형 변수로 만들고 분석해보자.
df$A_F = factor(df$A,ordered = TRUE, #A를 factor 형 변수로 바꾼 변수 추가
levels = c("1", "2", "3", "4", "5"))
str(df)
factor형 변수로 변한 변수 A_F를 summary 함수로 요약된 자료를 보자.
summary(df$A_F)
결과는 다음과 같이 출력된다. 1번에 응답한 사람은 1명, 2번에 응답한 사람은 3명, 3번에.....이라는 의미다.
## 1 2 3 4 5
## 1 3 1 3 1
이 결과를 테이블 형태로 저장한 뒤 그래프를 그려보자.
res = xtabs(~ A_F,data = df)
barplot(res, col="dark gray",ylab="빈도")
이번에는 집단 변수 G에 따른 빈도를 비교해보자.
res = xtabs(~ G + A_F, data = df) # G X A_F 교차 테이블
barplot(res,
beside=TRUE,
legend=TRUE,
xlab="5점 척도",
ylab="빈도")
(2) 여러 변수 다루기
이제 하나의 변수만 다루지 않고 모든 변수 즉 A, B, C를 한번에 다뤄보자. 먼저 예제 데이터를 다시 만들고 변수 A, B, C를 한번에 factor 변수로 변환한다.
A=c(2,1,3,2,2,4,4,4,5)
B=c(1,5,2,2,3,4,4,1,2)
C=c(5,2,3,2,3,5,4,3,4)
df = data.frame(A,B,C)
for (i in 1:ncol(ABC)){ #df 데이터의 모든 변수에 적용하는 for 구문
ABC[,i] = factor(ABC[,i],
levels = c("1", "2", "3", "4", "5"),
ordered = TRUE)
}
str(df)를 실행하면 모든 변수 A, B, C가 순서형 변수로 변환되어 있는 것을 볼 수 있을 것이다.
순서형 변수이므로 각 범주(1~5점 척도)에 응답한 비율이 중요해진다. 응답 범주에 대한 요약 정보와 차트를 그리기 위해서 likert 패키지를 사용한다.
library(likert)
likert(df)
summary(df)
실행하면 아래와 같은 결과를 보여준다. likert(df)는 각 변수의 각 문항에 대한 응답 비율을 의미하고 summary(df)는 응답자수를 의미한다.
아래 코드를 실행하면 5점 척도이므로 1,2점 반응을 low, 3점 반응을 neutral, 4,5반응을 high라고 설정하면 각 변수의 응답 등급 비율을 알려준다.
res=likert(df)
summary(res)
위의 결과를 보면 A문항(변수)에 1,2라고 응답한 사람들(low)은 전체의 44%, 3점 이라고 응답한 사람(neutral)은 11%라는 사실을 알려 준다.
이제 차트를 그려보자. 각 문항(변수)의 각 범주에 응답한 비율을 막대 그래프로 보여준다.
chart_data = likert(df)
plot(chart_data,
type="bar", # 옵셥으로 heat, density가 있다.
low.color = "white",
high.color = "red",
text.color = "black",
text.size = 2)
차트의 종류를 "heat"로 바꾸면 다음과 같은 차트를 생성한다.
참고
https://cran.r-project.org/web/packages/likert/likert.pdf
'R_데이터 분석 기술' 카테고리의 다른 글
정말 쉬운 연관규칙 실습 (1) | 2024.05.21 |
---|---|
편상관계수(partial correlation) 구하기 (0) | 2022.06.19 |
R 확인적 요인분석(CFA) (0) | 2022.05.13 |
R 크론바흐 알파 값 계산 (0) | 2022.05.13 |
R을 이용한 t-test와 효과 크기 계산 (0) | 2022.05.04 |
R 랜덤포레스트(randomforest) (0) | 2022.05.03 |
R_의사결정나무 분석(rpart) (0) | 2022.05.02 |
댓글