이상치(outlier)란 다른 데이터에 비해 특이한 데이터를 의미하며, 이는 불성실 응답을 나타내는 지표 중 하나이다. 이상치를 계산하는 방법은 여러가지이지만 그 중 1차원에서의 이상치 측정 방법인 점의 거리(distance= x−나 Z 점수)는 단순 거리 계산 방법이라는 점에서 한계를 갖는다. 이를 보완한 방법이 ‘마할라노비스 거리’이며 변수 간의 상관 관계 또한 고려할 수 있다는 점이 특징이다. 이를 계산하기 위해 공분산 행렬-역행렬을 사용하며, 공식은 다음과 같다.
DM(x,μ)=(x−μ)TΣ−1(x−μ)
마할라노비스 거리를 이용한 불성실 응답 탐지는 대다수의 응답자들이 성실하게 응답했다는 가정이 필요하다. 불성실 응답은 성실한 응답들과는 거리가 멀 것이다.
마할라노비스 거리의 컷오프 기준은 신뢰수준을 통해 설정되는데 DeSimone & Harms(2018)¹은 95%의 신뢰수준으로 탐지할 것을 권장하였다. 그러나 연구의 특성에 따라 99% 신뢰수준 등으로 변경될 수 있다. 또한, 마할라노비스 거리 기법은 자료의 정규분포를 가정하는데 만약 이 조건이 충족되지 못할 경우 이 기법의 효과성이 감소한다.
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) #신뢰수준 설정
실제 데이터로 분석 시의 과정과 결과를 예시를 통해 설명하고자 한다. 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명이었다.