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))
다수의 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))
댓글
댓글 쓰기