Pearson Correlation: how to compute a p-value?

상관계수를 구해놓고 p-value를 알고 싶다면?
다수의 R 패키지가 '이정도는 알겠거니...' 해서 아예 계산값조차 제공하지 않는 것 중의 하나가 피어슨 상관계수의 p-value이기도 하다.
안보여준다고 계산 못하나? 직접 구해보자.

p-value를 구하기 위해 먼저 피어슨 상관계수의 통계량이 t-분포를 따른다는 점을 이해하자. 또한 p-value를 구한다는 것은 가설검정을 하겠다는 뜻이다.

귀무가설: 상관계수(beta_0) = 0.0

상관이 전혀 없다는 것을 귀무가설로 잡으면 음이든 양이든 상관관계가 어느 정도 존재한다는 점을 입증하기 위해 위의 귀무가설을 기각(reject)시켜야 한다.

이때, t-statistics는 T(.) = (beta_hat - beta_0) / Se(beta_hat,degree of freedom)
으로 주어진다. Se는 표준오차, beta_hat은 추정한 correlation, degree of freedom은 자유도이다.

우선, DF (degree of freedom)은 비교하고자 하는 X와 Y 벡터의 개수인 nx와 ny의 합인 nx+ny에서 2를 뺀 값이다. DF = nx + ny - 2

beta_hat을 이미 알고 있다고 하자.

> beta_hat = -0.8294

> Se = sqrt((1 - beta_hat^2) /DF)

이제 통계량을 구하자.

> tstat = (beta_hat - 0)/Se

p-value는 alpha = 5%일 때 양측 꼬리의 누적확률이므로

> pvalue = 2 * pt(-abs(tstat),DF)

이왕 커피 마시면서 쉬는 김에 가설 검정과 p-value의 관계에 대해서 조금 더 부연하겠다.

귀무가설: 평균 = 5

평균이 5라는 가설을 잡고 데이터를 모아 결과를 구했더니 7이 나왔다. 이래놓고 평균이 5라고 주장할 수 있는가?

데이터의 사이즈를 20, 표준편차를 2라고 하자. 표준화된 Z값을 구하면

Z = (7-5)/(2/sqrt(20))
즉, Z = (x_bar - x_zero) / sqrt(variance/obs)
를 따른다.

앞서 상관관계의 p-value를 구할 때와 마찬가지로 양측 꼬리의 누적확률을 계산하면 p-value가 된다.

pvalue = 2*pnorm(-abs(Z))




댓글

이 블로그의 인기 게시물

Bradley-Terry Model: paired comparison models

xlwings tutorial - 데이터 계산하여 붙여 넣기

R에서 csv 파일 읽는 법