이상치(outlier)란 다른 데이터에 비해 특이한 데이터를 의미하며, 이는 불성실 응답을 나타내는 지표 중 하나이다. 이상치를 계산하는 방법은 여러가지이지만 그 중 1차원에서의 이상치 측정 방법인 점의 거리(distance= x−나 Z 점수)는 단순 거리 계산 방법이라는 점에서 한계를 갖는다. 이를 보완한 방법이 ‘마할라노비스 거리’이며 변수 간의 상관 관계 또한 고려할 수 있다는 점이 특징이다. 이를 계산하기 위해 공분산 행렬-역행렬을 사용하며, 공식은 다음과 같다.

DM(x,μ)=(xμ)TΣ−1(xμ)

마할라노비스 거리를 이용한 불성실 응답 탐지는 대다수의 응답자들이 성실하게 응답했다는 가정이 필요하다. 불성실 응답은 성실한 응답들과는 거리가 멀 것이다.

마할라노비스 거리의 컷오프 기준은 신뢰수준을 통해 설정되는데 DeSimone & Harms(2018)¹은 95%의 신뢰수준으로 탐지할 것을 권장하였다. 그러나 연구의 특성에 따라 99% 신뢰수준 등으로 변경될 수 있다. 또한, 마할라노비스 거리 기법은 자료의 정규분포를 가정하는데 만약 이 조건이 충족되지 못할 경우 이 기법의 효과성이 감소한다.

R manual

R에서 마할라노비스 거리 분석은 ‘careless’ 패키지에 포함된 ‘mahad’ 코드를 이용해 쉽게 진행할 수 있다. 해당 코드는‘mahad(x, plot = TRUE, flag = FALSE, confidence = 0.99, na.rm = TRUE)’로 이루어져 있으며, x는 데이터 매트릭스를 의미한다.plot은 결과로 나온 QQ 그래프를 그리는 것이며, 정규 분포와 주어진 데이터의 분포를 비교하는 데 사용된다. flag은 QQ 그래프에서 이상치(potential outliers)를 표시하는 역할을 한다. confidence 은 신뢰수준을 설정하는 매개변수이며 na.rm은 결측치의 처리방식을 지정해주는 매개변수이다. ‘careless’ 패키지에 포함된 예시 데이터셋을 이용한 코드의 작성은 다음과 같이 이루어질 수 있다.

mahad_raw <- mahad(careless_dataset) #mahad 수치만을 분석
mahad_flags <- mahad(careless_dataset, flag = TRUE) #이상치 추가 분석
mahad_flags <- mahad(careless_dataset, flag = TRUE, confidence = 0.999) #신뢰수준 설정

Practice example

실제 데이터로 분석 시의 과정과 결과를 예시를 통해 설명하고자 한다. 1번 데이터의 성격을 측정하는 50문항에 대한 응답을 역코딩하여 사용하였다. 실제로 적용해본 코드와 그에 따른 결과는 다음과 같다.

mahad_flags <- mahad(big5_reverse50, flag = TRUE, confidence = 0.99) #신뢰수준 설정
id d_sq flagged
1376 245.93698 TRUE
1369 219.836501 TRUE
362 206.502631 TRUE
718 205.541276 TRUE
696 194.058668 TRUE
185 184.367355 TRUE
1003 183.340348 TRUE
1002 180.670857 TRUE
1633 180.022109 TRUE
1011 86.8814684 TRUE
269 86.7207451 TRUE
1361 86.6105713 FALSE
336 86.59356 FALSE
869 11.7113963 FALSE
564 6.70125673 FALSE

분석 결과 mahad() 코드가 제공하는 flagged 결과에 따라 99%의 신뢰수준에서 이상치로 탐지된 응답은 전체 응답자의 약 8.39%에 해당하는 212명이었다.