통계, t-test에 대해 알아보자(R)

디자이너들이 논문을 쓸 때 가장 어려워하는 부분이 통계이다. 귀무가설이란 무엇인지, 통계적으로 유의미함은 무엇인지, t-test는 무엇인지, Anova는 무엇인지 등등… 어려운 내용들이 디자이너를 힘들게 한다. 하지만 조금만 알고 있으면 그렇게 어렵지 않다. 이 포스팅에서는 t-test의 공식 유도 같은 건 말하지 않는다. ‘어떤 경우에 어떻게 사용해야 하는지만 설명할 것이다.’
t-test는 무엇인가?
t-test란 두 집단의 평균 차이가 유의미한지 검정하는 통계 방법이다. 예를 들어보자, 문자메시지를 보낼 때 오타를 줄여주는 새로운 키보드 레이아웃 A를 만들었다. 그렇다면 A가 통계적으로 유의미하다는 건 어떻게 증명할 수 있는가? 바로 ‘A를 사용하여 문자메시지를 보낸 집단의 평균적인 오류 횟수’ VS ‘A를 사용하지 않고 문자메시지를 보낸 집단의 평균적인 오류 횟수’를 비교해보면 된다. 여기서 오해하지 말아야 할 것은 단순히 둘 사이의 평균값을 내서 계산하는 것은 아니라는 것이다. 그것은 추론 통계가 아니라 기술 통계일 뿐이다. 그렇다면 추론 통계와 기술(descriptive) 통계, 둘은 무슨 차이가 있는가? 바로 표본에서 얻은 값으로 모집단의 값을 추정한다는 것이다. 어려운 이야기는 아니다. 위의 새로운 키보드 레이아웃을 실험하는 경우 우리는 전 세계 모든 사용자들을 대상으로 실험을 할 수는 없다. 따라서 일부 ‘표본’만을 조사하게 된다. 즉 몇십 명 규모의 표본을 대상으로 실험을 한 이후에 ‘모집단’이 이 레이아웃을 사용하였을 때도 효과가 있는가?를 검정하는 것이 추론 통계이다. 반면에 기술 통계는 그저 평균, 중앙값, 표준편차(standard deviation) 등을 계산한 값일 뿐이다. 논문을 작성할 때는 물론 둘 다 필요하다.
t-test를 쓰려면 무엇이 필요한가?
t-test를 하기 위해서는 몇 가지 조건이 필요하다. 조건을 크게 세 가지로 나누면 아래와 같다. 괄호에 넣은 건 무슨 말인지 몰라도 된다.
- 표본이 독립적인가? (t-test or paired t-test)
- 수집된 데이터가 정규 분포를 따르는가?(t-test or Wilcoxon test)
- 집단이 두 개인가?(t-test or ANOVA)
1. 표본이 독립적인가?
표본이 독립적이라는 말은 무슨 뜻인가? 바로 표본으로부터 측정한 관측치가 다른 표본의 영향을 받지 않는다는 뜻이다. 조금 헷갈린다. 예를 들어서 설명해보자. 앞서 만든 새로운 키보드 레이아웃 A를 실험하기 위해 참가자 20명을 모았다. 10명은 새로운 키보드 레이아웃 A를 사용했고, 다른 10명은 기존 키보드 레이아웃을 사용했다. 이 경우에는 새로운 프로토타입을 사용한 집단과 기존 키보드 레이아웃을 사용한 집단의 관측치가 서로 영향을 받지 않는다. 즉 둘은 아무런 관계가 없다. 잘 이해가 되지 않으면 다음 예시를 보자, 이번에는 20명을 뽑은 후에 실험을 이렇게 했다. 20명 모두에게 먼저 새로운 키보드 레이아웃 A를 사용하게 하고, 이후에 기존의 키보드 레이아웃을 사용하게 했다. 이렇게 되면 관측치가 영향을 받는다. 즉 새로운 키보드 레이아웃을 먼저 사용했으니 이후에 기존 키보드 레이아웃을 사용할 때 A를 사용한 기억이 남아 자판이 헷갈려 오타를 더 많이 낼 수도 있고 키 입력 시간이 더 오래 걸릴 수도 있다. 이 경우에는 표본이 독립되지 않았다고 한다. t-test는 표본이 독립적인 경우에만 사용할 수 있다. 표본이 독립적이지 않다면 paired t-test를 사용한다. 그러면 모든 표본을 독립으로 만들면 되지 않느냐고 할 수 있는데, 같은 사람에게 두 조건을 다 겪게 하는 실험이 많아 paired t-test를 쓰게 되는 일이 잦다.
2. 수집된 데이터가 정규분포를 따르는가?
일단 당신이 디자인과 학생이며, 문과라면 정규분포라는 말에서 이미 지쳤을 것이다. 정규분포는 통계에서 아주 자주 나오는 핵심 개념이다. 정규 분포에 대한 자세한 설명은 나중에 따로 시간을 내서 포스팅하도록 하겠다. 정규분포는 통계를 이해하는 데 아주 중요한 개념이라 대충 넘어가면 안 된다.
R-studio에서는 아주 간단한 코드로 수집된 데이터가 정규 분포를 따르는지 혹은 따르지 않는지를 검정할 수 있다. 바로 qqnorm과 qqline이다.

R 코드 예시

R 코드 예시
sample은 주어진 범위에서 숫자를 무작위로 골라 내는 함수로 1:15는 1에서 15까지, 뒤에 10은 10개의 숫자를 만들어내는 것을 의미한다. 그리고 이를 df라는 변수에 저장한다. 뒤에 df라고 한 번 더 입력을 한 것은 확인용이다. qqnorm과 qqline을 입력하면 아래 그래프가 만들어진다. 점이 선에 가까이 붙어 있을수록 정규분포를 따르는 것이다. 그런데 이렇게 되면 시각적으로 정규분포를 얼마나 따르는지 해석할 수밖에 없다. 즉 정확히 정규분포를 따르는지 알 수가 없다. 이를 해결하기 위해 나온 함수가 shapiro.test()이다.


R에서 Shapiro test를 사용하는 방법
위와 같이 shapiro test를 시행하면 아래와 같이 결괏값이 나온다. 이때 p-value(유의 확률)가 관습적 기준인 0.05보다 크면 정규분포를 따르지 않는다고 볼 근거가 없다. 헷갈리지 말아야 할 것은 Shapiro test의 귀무가설이 ‘수집된 데이터가 정규 분포를 따른다.’ 이므로, p-value가 0.05보다 크면 귀무가설을 기각하지 못해 정규분포를 따르지 않는다고 볼 근거가 없다는 뜻이라는 것이다. 표본이 작으면 정규분포가 아닌 데이터에서도 p가 크게 나온다. 요약하자면 p-value가 0.05보다 크면 t.test를 시행할 수 있다. qqnorm과 qqline을 시행하기 전에 Shapiro test를 시행하면 조금 더 빨리 결괏값을 확인할 수 있다. 만약 정규분포를 따르지 않는다면 Wilcoxon test라는 다른 방법을 사용하면 된다.
3. 집단이 두 개인가?
집단이 두 개라는 것은 실험군과 대조군이 하나씩 있다는 말과 거의 같다. 즉 키보드 레이아웃을 사용할 집단 VS 사용하지 않을 집단과 같이 비교군과 대조군으로 이루어진 경우에는 t-test를 사용할 수 있다. 그러나 집단이 3개가 존재할 수도 있다. 예를 들어보자, 키보드 레이아웃 A, 키보드 레이아웃 B 두 개를 만들었다. 둘 중에 어떤 키보드가 효율적인지 실험하기 위해서는 이러한 비교가 필요하다. 키보드 레이아웃 A VS 키보드 레이아웃 B VS 기존 키보드. 이렇게 비교를 해야 둘 중 어떤 키보드가 기존 키보드에 비해 우수한지, 둘 중 어떤 키보드가 더 우수한가를 비교할 수 있다. 이렇게 집단이 3개가 나오는 경우에는 아노바(ANOVA)를 시행해야 한다. 이 경우에는 독립변수가 ‘키보드의 종류’가 되고, 독립변수가 하나인 one-way Anova를 사용해야 한다. 안타깝게도 ANOVA는 t-test보다 어렵다.
t-test를 돌려보자
t-test를 R-studio에서 돌리는 방법은 정말 간단하다. 엑셀 파일을 csv 형태로 추출하고, 코드 두세 줄이면 된다. 사실 R에서 코드를 돌리는 것보다 더 중요한 게 엑셀 파일 형태를 아는 것이다. T-test의 엑셀 파일 형태는 다음과 같다. 앞에 No 칼럼은 빼도 상관없다. 두 개의 그룹과 그룹에서 얻어낸 관측치가 필요하다.

이 상태로 CSV 파일로 ‘바탕화면’에 저장한다.
그리고 아래 코드를 그대로 입력한다. setwd로 현재 working directory를 바탕화면으로 지정하였기 때문에 바탕화면에 있는 csv파일을 바로 읽어올 수 있다.

결과는 아래와 같이 출력된다.

p-value가 매우 작은 2.394e-05인데, e-05는 지수 표기가 된 것으로 10⁻⁵에 2.394를 곱하면 된다. p-value가 0.05보다 훨씬 작으므로 두 집단의 평균 차이가 유의미하다고 볼 수 있다.
그런데 이 CSV 포맷으로는 데이터를 한 칼럼으로 다루기가 번거롭다. 따라서 아래 방법을 추천한다. 칼럼을 그룹과 데이터로 나누는 것이다. 다만 정규성은 집단을 합쳐서 보면 안 되고 집단마다 따로 봐야 한다.


그리고 이렇게 실행하면 된다. 끝으로 결과를 시각화하고 싶다면 이 코드를 사용하면 된다.


이 글, 어떠셨어요?
이 글에 오류가 있나요?
사실이 틀렸거나 오탈자, 깨진 링크를 발견하셨다면 알려주세요. 확인하고 고치겠습니다.