이번 포스팅에서는 이론편에 이어서 R에서 실제로 t-test를 하는 방법에 대해 다루겠다. 다음의 화면을 보자.
첫 줄의 명령어가 무엇인지 잘 모르겠다는 독자들은 앞의 포스팅들을 참조할 것. a에는 평균이 5이고 표준편차가 2인 정규분포에서 10개의 난수를 추출하여 넣었다. 목록은 위와 같고, 평균은 4.64가량, 표준편차는 1.72 가량 된다. 원래의 모집단 분포와 완전히 동일하지는 않지만 대략적으로 비슷한 숫자가 나왔다. 완전히 일치하지 않는 까닭은 표집오차(sampling error)때문이다. 구체적인 개념은 통계 교과서를 보자. 아무튼 이 데이터를 이용하여 모집단의 평균이 5라고 할 수 있는지 역으로 검증해보도록 하자. R에서 t검증을 하는 명령어는 t.test()이다. 다음의 화면을 보자.

첫 줄의 명령어는 a라는 데이터에 대해 모평균이 5인지를 검증하라는 의미이다. 모평균은 모통 그리스 문자 μ("뮤"라고 읽음)으로 표시하므로 위에 mu라는 옵션이 붙었다. 결과는 밑에 제시되어 있다. t값은 -0.6571, 자유도는 9, 유의확률은 0.5275이다. 이것을 좀 더 formal하게 표현하면(논문에 주로 표현되는대로 나타내면) t(9)=-0.6571, p>.05 이렇게 표현할 수 있다. p값이 .05보다 (훨씬)크므로 영가설은 기각되지 않는다. 일표본 t검정에서 영가설은 모평균이 어떤 특정한 수와 같다는 것인데, 이번 검증의 경우 영가설은 모평균이 5와 정확히 같다는 것이다(물론 0.0000000000000000000000001도 차이가 나지 않는다는 것.) 지금 우리가 얻은 모평균은 이보다 약간 작지만, 지금 우리가 갖고 있는 데이터로는 모평균이 5가 아니라는 결론을 내리기에는 불충분하다고 결론내릴 수 있다. 참고로 95 percent confidence interval을 보면 우리가 얻은 표본의 평균이 저 구간 안에 포함되는 것을 볼 수 있다. 앞서의 포스팅에서 영가설이 기각되지 않았다는 것과, 통계치가 신뢰구간 안에 있다는 것은 동일한 의미라고 말했었다. 신뢰구간을 이용해서도 유의성검증을 할 수 있다(솔직히 나는 이렇게 가르치고 배우는 게 더 맞다고 생각한다.)
두 번째로 다룰 내용은 독립표본 t검증이다. 아래의 화면을 보자.
a에는 평균 5, 표준편차 2인 분포에서 10개의 랜덤한 숫자를 생성해서 넣었고 b에는 평균 3, 표준편차 2인 분포에서 10개를 생성하여 넣었다. 그러니까 a와 b의 유일한 차이는 평균인 셈이다. a와 b를 불러보니 10개의 난수들이 생성된 것을 볼 수 있다. 이제 이 두 집단의 모평균이 동일한지, 다른지 검증해 보자. (사실 우리는 a와 b의 모평균이 다른 것을 알고 있다. 우리는 t검증을 통해 이를 확인하는 셈이다.)
그 이전에 분산의 동질성 검증을 먼저 해야 한다. 독립표본 t검증의 가정 중 하나는 비교하는 두 집단의 분산이 동일하다는 것이다. 이것이 중요한 이유는 t값 계산이 등분산이냐, 아니냐에 따라 달라지기 때문이다(자세한 내용은 통계교과서 참조). 이를 검증하기 위해서는 var.test()문을 사용하면 된다. 결과는 다음과 같다.
var.test()의 영가설은 두 집단의 분산이 동일하다, 즉 비율이 1이라는 것이다. 따라서 등분산 가정이 지켜지기 위해서는 영가설이 기각되어서는 안 된다. 즉 p값이 .05보다 작아서는 안 된다는 소리다. 그런데 위의 화면을 보니 p값이 .05보다는 훨씬 큰 것을 볼 수 있다. 따라서 우리는 이번 분석에서 등분산이라는 가정을 포기하지 않아도 된다는 것이다. 등분산 가정이 기각되는 경우에 대해서는 이후에 다시 다룰 것이다.
일단 등분산 가정이 되었으니 t검증을 실제로 해 보자.
R에서는 t검증 명령어의 기본 검증방식이 있다. 아무런 옵션도 주지 않으면 등분산 가정은 깨진 것으로 보며, 유의수준은 .05로 설정하고, 양방검증을 해 준다. 지금 같은 경우에는 등분산 가정이 기각되지 않음을 확인했으므로 등분산 옵션을 위와 같이 준다. 물론 등분산을 가정하지 않는다면 위에서 var.equal 부분을 아예 빼거나, T를 F로 바꾸면 된다. 따라서 이 분석은 양방검증, 유의수준 .05, 등분산 가정 상태에서 이루어졌다. 결과를 보자. t(18)=4.1585, p<.05임을 확인할 수 있다. 따라서 우리는 두 집단의 모평균이 동일하다는 영가설을 기각한다. 즉 두 집단의 모평균이 같다는 통계적으로 유의미한 증거를 발견하지 않았다고 결론내린다. (사실 일반적으로는 모평균이 같지 않다, 다르다 라고 결론내리는 경우가 많다. 하지만 앞에 쓴 문장은 통계분석의 원래의 엄밀한 의미를 살리기 위한 것이다.) 한편 영가설이 맞다면 두 집단의 평균차는 정확히 0이 되어야 한다. 하지만 이 갑은 95%신뢰구간에 없다. 따라서 믿을만한 값이 아니라고 결론을 내릴 수 있다. 이와 같이 영가설이 기각된다는 것은, 통계치가 신뢰구간 안에 없다는 것을 의미한다.
이번에는 효과크기를 구해보자. 앞에서 가설검증의 단점을 보완할 도구로 사용하는 것이 효과크기라고 하였다. 독립표본 t검증에서 사용되는 효과크기는 크게 두 종류가 있는데, r제곱과 cohen`s d가 그것이다. 자세한 수식은 구글에서 effect size를 검색하면 다 나온다. 여기에는 수식을 입력하기 좋지 않으므로 생략하겠다. r제곱을 R을 이용하여 계산한 결과는 다음과 같다.
r제곱의 크기에 대한 해석은 보통 0.1, 0.3, 0.5를 기준으로 '작음', '중간', '큼' 으로 분류한다. 하지만 이것은 어디까지나 일종의 가이드라인이며 절대적인 것은 아니다. 지금 같은 경우에는 '중간'이지만 '큼'에 가까운 수치가 얻어졌다. 위 식을 보면 알겠지만 분모에 자유도를 더하게 되어 있는데, 표본크기가 크면 클수록 분모가 커져서 효과 크기가 떨어진다. 따라서 샘플사이즈만 늘려서 간신히(?)영가설을 기각한 결과에 대해 효과크기를 구해보면 당연히 작을 수밖에 없다.
이번에는 cohen`s d를 구해보자. 결과는 다음과 같다.
간단히 말해 코헨의 d를 구하는 방식은, 두 집단을 합쳐서 만든 데이터를 모집단으로 간주한 뒤에 모표준편차를 구하고, 그것으로 평균차를 나누는 것이다. 위에 18을 곱하고 20을 나누어준 것은, sd()명령어가 표본표준편차를 구하는 명령어이기 때문에 그것을 모표준편차로 전환하기 위함이다. 그것으로 평균차를 나누었더니 1.52 가량이 나온다. 이것의 해석에 대한 가이드라인은 구글에 나와 있으니 참조하기 바란다.
만약 두 집단의 분산이 같지 않음을 전제하고 분석하려면 옵션 없이 명령어를 그냥 돌리면 된다.
출력창에 Welch 라는 단어가 눈에 띈다. 사실 등분산가정이 깨지면 Welch-Satterthwaite 방식이라고 하는 방법을 이용하여 자유도를 보정해주는 식으로 분석을 보완한다. 이 Welch가 바로 그 Welch이다. 사실 별로 중요한 내용은 아니니 그냥 넘어가자. 위의 분석과 비교해서 t값은 동일하지만, df와 p값은 달라진 것을 볼 수 있다. 사실 내릴 수 있는 결론은 동일하지만, 때에 따라 다를 수도 있다. 아무튼 독립표본 t검정에서 등분산가정 확인은 중요하다는 것을 알아두자.
단방검증은 다음과 같이 하면 된다. 이번에는 a가 b보다 모평균이 크다는 가설을 검증해보자. 다음과 같이 하면 된다. 만약 a가 b보다 모평균이 작다고 하고 싶으면, alt='less'로 주면 된다.
사실 우리는 원래부터 a가 b보다 모평균이 크다는 것쯤은 알고 있었다(5>3). 이 분석은 이것을 확인하는 것에 불과하다. p값이 .05보다 작으므로 영가설을 기각한다. 이 경우의 영가설은 우리가 주장하고자 하는바와 반대로 주어진다(a의 모평균이 b보다 작거나 같다). 이것을 기각했으므로 대안가설을 받아들인다. 즉 a의 모평균이 b의 모평균보다 크다는 통계적으로 유의미한 증거를 발견했다고 결론내린다. (사실 이런 진술들 뒤에는 반드시 유의수준을 붙여주어야 한다. 왜냐하면 영가설의 수용여부에 있어서 기준이 되는 것은 유의수준이기 때문이다.)
이번에는 유의수준을 바꿔보자.

유의수준을 .01로 설정했다. 이는 99% 신뢰구간을 사용하는 것과 같다. 따라서 위와 같은 옵션을 주면 된다. 사실 산출되는 p값은 차이가 없는데 신뢰구간만 달라져서 나온 것을 볼 수 있다. 당연한 것이, 유의수준을 바꾸는 것은 영가설의 기각 기준만 바꾼 것일 뿐 데이터 자체에는 아무런 영향을 주는 것이 없다. 따라서 통계치가 똑같게 나오는 것은 당연한 일이다. 아무튼 유의수준을 바꾸었음에도 영가설을 기각하기에는 충분한 p값이 획득되었다.
마지막으로 대응표본 t검증을 다뤄보자.
위 데이터는 5명의 사람들에게 특정 학습법을 교육하기 전과 교육한 후의 시험점수를 나타낸 것이다. 한 사람이 두 조건에 할당되었으므로 이번 분석은 반복측정 디자인, 즉 대응표본 t검정으로 하는 것이 타당하다. 중요한 것은 반복측정 t검증에서는 등분산 검증 절차가 필요없다는 것이다. 이유는 이 검증에서는 합동표본분산(pooled sample variance)를 사용하지 않기 때문인데, 자세한 것은 교과서를 참조하자. 분석절차는 다음과 같다.
대응표본 t검증을 위해서는 paired 옵션을 T로 주면 된다. 검증결과 t(4)=-11.4309, p<.05로 평균차가 통계적으로 유의미하다. 그런데 자유도가 4밖에 되지 않는 것을 볼 수 있다. 독립표본 t검증의 자유도는 전체 sample size에서 2를 뺀 것인데, 여기서는 6이나 감소되었다. 왜 그럴까? 이유는 이 분석에서는 한 쌍의 데이터를 하나로 취급하는 것과 같기 때문이다. 그러니 총 5개의 데이터가 있는 셈인데, 여기서 한 쌍을 빼고 나니 4쌍이 남은 것이다. 물론 대응표본 t검증에 대해서도 일방/양방검증이 가능하며, 연구가설에 따라 골라 사용하면 되겠다. 특히 반복측정의 경우에는 실제 연구 맥락에서 '더 나아졌다'와 같은 가설을 많이 세우기 때문에, 점수가 높아졌다(학습장면)또는 낮아졌다(임상장면, 우울점수 등)는 가설을 검증하기 위해서는 일방검증을 활용할 수 있다. (물론 성차가 있다, 문화차가 있다 와 같은 가설들은 방향성이 있지 않으므로 양방검증을 하는 것이 타당하다.)
※지금부터 언급하는 내용은 꼭 필요한 것은 아니니 골라서 읽으시면 좋겠다. 사실 등분산 가정이 지켜져야 하는 이유는 하나 더 있다. 보통 두 집단간 평균차를 비교하는 맥락에서는 평균차를 유발하는 하나의 원인(요인)이 상정되고, 그 하나의 요인이 종속변수에 영향을 미치는 것으로 가정된다. 일반적으로는 이 영향력이 하나의 '상수'로 가정된다. 즉 요인은 종속변수에 일정한 상수 만큼의 영향력을 끼친다는 것인데, 이는 피험자 간에 처치로 인한 효과의 개인차가 없다고 가정하는 것을 의미한다. 말이 좀 어려운데, 풀어서 설명하자면, 어떤 우울증 치료제 실험에서 피험자들에게 투약전, 투약후 점수를 획득했다고 가정하자. 위의 '상수' 모형에서는 모든 피험자들이 똑같은 정도로 우울점수가 하락한다는 것을 가정할 것이다. 이것을 additive model이라고 하며, 이후에 다루어질 더미코딩을 이용한 회귀모형에서 다시 다루어질 것이다. 등분산 가정이 지켜지지 않는다는 것은, 요인이 종속변수의 평균 변화 뿐 아니라 분산 변화까지 유발한다는 뜻이다. 즉 개인차를 더 크게 또는 작게 만든다는 것이다. 이런 경우는 additive model로 다룰 수 없다.


첫 줄의 명령어는 a라는 데이터에 대해 모평균이 5인지를 검증하라는 의미이다. 모평균은 모통 그리스 문자 μ("뮤"라고 읽음)으로 표시하므로 위에 mu라는 옵션이 붙었다. 결과는 밑에 제시되어 있다. t값은 -0.6571, 자유도는 9, 유의확률은 0.5275이다. 이것을 좀 더 formal하게 표현하면(논문에 주로 표현되는대로 나타내면) t(9)=-0.6571, p>.05 이렇게 표현할 수 있다. p값이 .05보다 (훨씬)크므로 영가설은 기각되지 않는다. 일표본 t검정에서 영가설은 모평균이 어떤 특정한 수와 같다는 것인데, 이번 검증의 경우 영가설은 모평균이 5와 정확히 같다는 것이다(물론 0.0000000000000000000000001도 차이가 나지 않는다는 것.) 지금 우리가 얻은 모평균은 이보다 약간 작지만, 지금 우리가 갖고 있는 데이터로는 모평균이 5가 아니라는 결론을 내리기에는 불충분하다고 결론내릴 수 있다. 참고로 95 percent confidence interval을 보면 우리가 얻은 표본의 평균이 저 구간 안에 포함되는 것을 볼 수 있다. 앞서의 포스팅에서 영가설이 기각되지 않았다는 것과, 통계치가 신뢰구간 안에 있다는 것은 동일한 의미라고 말했었다. 신뢰구간을 이용해서도 유의성검증을 할 수 있다(솔직히 나는 이렇게 가르치고 배우는 게 더 맞다고 생각한다.)
두 번째로 다룰 내용은 독립표본 t검증이다. 아래의 화면을 보자.

그 이전에 분산의 동질성 검증을 먼저 해야 한다. 독립표본 t검증의 가정 중 하나는 비교하는 두 집단의 분산이 동일하다는 것이다. 이것이 중요한 이유는 t값 계산이 등분산이냐, 아니냐에 따라 달라지기 때문이다(자세한 내용은 통계교과서 참조). 이를 검증하기 위해서는 var.test()문을 사용하면 된다. 결과는 다음과 같다.

일단 등분산 가정이 되었으니 t검증을 실제로 해 보자.

이번에는 효과크기를 구해보자. 앞에서 가설검증의 단점을 보완할 도구로 사용하는 것이 효과크기라고 하였다. 독립표본 t검증에서 사용되는 효과크기는 크게 두 종류가 있는데, r제곱과 cohen`s d가 그것이다. 자세한 수식은 구글에서 effect size를 검색하면 다 나온다. 여기에는 수식을 입력하기 좋지 않으므로 생략하겠다. r제곱을 R을 이용하여 계산한 결과는 다음과 같다.

이번에는 cohen`s d를 구해보자. 결과는 다음과 같다.

만약 두 집단의 분산이 같지 않음을 전제하고 분석하려면 옵션 없이 명령어를 그냥 돌리면 된다.

단방검증은 다음과 같이 하면 된다. 이번에는 a가 b보다 모평균이 크다는 가설을 검증해보자. 다음과 같이 하면 된다. 만약 a가 b보다 모평균이 작다고 하고 싶으면, alt='less'로 주면 된다.

이번에는 유의수준을 바꿔보자.

유의수준을 .01로 설정했다. 이는 99% 신뢰구간을 사용하는 것과 같다. 따라서 위와 같은 옵션을 주면 된다. 사실 산출되는 p값은 차이가 없는데 신뢰구간만 달라져서 나온 것을 볼 수 있다. 당연한 것이, 유의수준을 바꾸는 것은 영가설의 기각 기준만 바꾼 것일 뿐 데이터 자체에는 아무런 영향을 주는 것이 없다. 따라서 통계치가 똑같게 나오는 것은 당연한 일이다. 아무튼 유의수준을 바꾸었음에도 영가설을 기각하기에는 충분한 p값이 획득되었다.
마지막으로 대응표본 t검증을 다뤄보자.


※지금부터 언급하는 내용은 꼭 필요한 것은 아니니 골라서 읽으시면 좋겠다. 사실 등분산 가정이 지켜져야 하는 이유는 하나 더 있다. 보통 두 집단간 평균차를 비교하는 맥락에서는 평균차를 유발하는 하나의 원인(요인)이 상정되고, 그 하나의 요인이 종속변수에 영향을 미치는 것으로 가정된다. 일반적으로는 이 영향력이 하나의 '상수'로 가정된다. 즉 요인은 종속변수에 일정한 상수 만큼의 영향력을 끼친다는 것인데, 이는 피험자 간에 처치로 인한 효과의 개인차가 없다고 가정하는 것을 의미한다. 말이 좀 어려운데, 풀어서 설명하자면, 어떤 우울증 치료제 실험에서 피험자들에게 투약전, 투약후 점수를 획득했다고 가정하자. 위의 '상수' 모형에서는 모든 피험자들이 똑같은 정도로 우울점수가 하락한다는 것을 가정할 것이다. 이것을 additive model이라고 하며, 이후에 다루어질 더미코딩을 이용한 회귀모형에서 다시 다루어질 것이다. 등분산 가정이 지켜지지 않는다는 것은, 요인이 종속변수의 평균 변화 뿐 아니라 분산 변화까지 유발한다는 뜻이다. 즉 개인차를 더 크게 또는 작게 만든다는 것이다. 이런 경우는 additive model로 다룰 수 없다.




덧글
ㅇ.ㅇ 2011/11/16 14:26 # 삭제 답글
R프로그래밍 수업을 수강중이라 자료찾다가 블로그 발견했는데 너무 좋네요:D 감사합니다 !