# naver search confirm # markdown number and equation 리커트(likert) 척도 데이터 분석 //google adsense
본문 바로가기
R_데이터 분석 기술

리커트(likert) 척도 데이터 분석

by 노마드분석가 2022. 6. 11.

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 데이터로 취급해 평균, 분산 등의 값을 구하는 과정은 많이 소개되어 있으므로(아래 글 참고) 변수들을 순서형 변수로 보고 분석하는 방법을 살펴보자. 

 

 

변수별 부분 집계 by dplyr

이전글 R 전처리 최강자 dplyr 패키지 1. 들어가며 본격적인 데이터 분석에 들어가기 전에 분석가의 요구와 필요에 맞게 데이터를 조작할 필요가 있다. 이런 과정을 데이터 전처리(data pre processing)

diseny.tistory.com

 

(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)

 

[그림 1] 리커트 척도 응답 비율 막대 그래프

 

차트의 종류를 "heat"로 바꾸면 다음과 같은 차트를 생성한다. 

 

[그림 2] 리커트 척도 응답 비율 히트맵 차트

 

참고
https://cran.r-project.org/web/packages/likert/likert.pdf
반응형

댓글