내용
상관성(correlations)과 상관분석
상관 계수는 양적 변수(quantative variables) 간의 관계를 설명하는 데 사용됩니다. ± 기호는 관계의 방향을 나타내고 크기는 관계의 강도를 나타냅니다(관계가 없는 경우 0에서 완벽하게 예측 가능한 관계인 경우 1).
예를 들어 두 변수 x1과 x2에서 x1의 변화에 따라 x2가 변화한다면 두 변수는 서로 상관성이 존재합니다. 이 상관성의 정도를 나타내는 것이 상관계수이며 이는 두 변수의 공분산(covariance)으로부터 계산됩니다.
공분산과 상관계수
공분산은 각 변수의 편차들의 곱에 대한 기대값입니다.
$$\begin{equation} \text{Cov}(Y_1, Y_2)=E[(Y_1-\mu_1)(Y_2-\mu_2)] \end{equation}$$ $$\begin{align}&\begin{aligned}\text{Cov}(Y_1, Y_2)&=E[(Y_1-\mu_1)(Y_2-\mu_2)]\\&=E(Y_1Y_2-Y_1\mu_2-\mu_1 Y_2+\mu_1 \mu_2)\\&= E(Y_1Y_2)-E(Y_1)\mu_2-\mu_1E(Y_2)+\mu_1 \mu_2\\&=E(Y_1Y_2)-\mu_1 \mu_2\end{aligned} \\& \because\; E(Y_1)=\mu_1, \quad E(Y_2)=\mu_2\end{align}$$두 변수간의 공분산의 절대값의 증가에 따라 선형 의존성은 증가하며 양의 공분산은 정상관계, 음의 값은 역상관계를 의미합니다. 공분산이 0이라면 두 변수 사이의 선형의존성은 없습니다. 그러나 각 변수의 측정척도가 다른 경우 선형성에 대한 즉, 두 변수의 의존성에 대해 공분산을 절대적인 척도로 사용하는 것은 어렵습니다. 결과적으로 공분산만으로 선형성의 정도를 확인하는 것에는 한계가 있습니다. 이러한 문제는 값을 표준화하고 공분산과 관련된 양인 피어슨 상관 계수(Pearson correlation coefficient) $\mathbf{\rho}$를 사용하는 것으로 해결 할 수 있습니다.
$$\begin{align}&\rho = \frac{\text{Cov}(Y_1, Y_2)}{\sigma_1 \sigma_2}\\ & -1 \le \rho \le 1\\ &\sigma_1, \sigma_2: Y_1, Y_2의 \text{표준편차} \end{align}$$상관계수의 부호는 공분산의 부호와 같으며 다음과 같이 정리됩니다.
상관계수 | 의미 |
---|---|
ρ = 1 | 완벽한 정관계 |
0 < ρ <1 | 정관계 |
ρ= 0 | 상관성 없음 |
-1 < ρ < 0 | 역관계 |
ρ = -1 | 완벽한 역관계 |
state.x77 데이터 세트를 사용합니다.1:6열 사용
R은 Pearson, Spearman, Kendall, partial, polychoric 및 polyserial을 포함한 다양한 상관 계수를 생성할 수 있습니다.
PEARSON, SPEARMAN 및 KENDALL 상관 관계
Pearson 상관 관계는 두 양적 변수 간의 선형 관계 정도를 평가합니다. Spearman의 순위 상관 계수는 두 순위 변수 간의 관계 정도를 평가합니다. Kendall의 Tau는 순위 상관 관계의 비모수 측정 입니다.
cor()
함수는 세 가지 상관 계수를 모두 생성고 cov()
함수는 공분산을 제공합니다.
- x: matrix 또는 data.frame
- use: missing data 처리
- all.obs: maissing이 없다고 가정, 존재시 에러
- Everything: missing 관련된 모든 경우 missing으로 설정(default)
- complete.obs: missing이 존재하는 list는 삭제, 열 삭제
- pairwise.omplete: missing 존재하는 관찰치의 쌍들 삭제, 행삭제
- method: 상관성의 타입설정(pearson, spearman, kendall), pearson이 default
state<-state.x77[,1:6]
다음 결과는 데이터에 대한 공분산 행렬입니다. cov(x)
를 사용합니다.
round(cov(state), 3)
Population | Income | Illiteracy | Life Exp | Murder | HS Grad | |
---|---|---|---|---|---|---|
Population | 1 | 0.125 | 0.313 | -0.104 | 0.346 | -0.383 |
Income | 0.125 | 1 | -0.315 | 0.324 | -0.217 | 0.51 |
Illiteracy | 0.313 | -0.315 | 1 | -0.555 | 0.672 | -0.655 |
Life Exp | -0.104 | 0.324 | -0.555 | 1 | -0.78 | 0.524 |
Murder | 0.346 | -0.217 | 0.672 | -0.78 | 1 | -0.437 |
HS Grad | -0.383 | 0.51 | -0.655 | 0.524 | -0.437 | 1 |
round(cor(state),3)
Population | Income | Illiteracy | Life Exp | Murder | HS Grad | |
---|---|---|---|---|---|---|
Population | 1 | 0.208 | 0.108 | -0.068 | 0.344 | -0.098 |
Income | 0.208 | 1 | -0.437 | 0.34 | -0.23 | 0.62 |
Illiteracy | 0.108 | -0.437 | 1 | -0.588 | 0.703 | -0.657 |
Life Exp | -0.068 | 0.34 | -0.588 | 1 | -0.781 | 0.582 |
Murder | 0.344 | -0.23 | 0.703 | -0.781 | 1 | -0.488 |
HS Grad | -0.098 | 0.62 | -0.657 | 0.582 | -0.488 | 1 |
round(cor(state, method="spearman"), 3)
Population | Income | Illiteracy | Life Exp | Murder | HS Grad | |
---|---|---|---|---|---|---|
Population | 1 | 0.125 | 0.313 | -0.104 | 0.346 | -0.383 |
Income | 0.125 | 1 | -0.315 | 0.324 | -0.217 | 0.51 |
Illiteracy | 0.313 | -0.315 | 1 | -0.555 | 0.672 | -0.655 |
Life Exp | -0.104 | 0.324 | -0.555 | 1 | -0.78 | 0.524 |
Murder | 0.346 | -0.217 | 0.672 | -0.78 | 1 | -0.437 |
HS Grad | -0.383 | 0.51 | -0.655 | 0.524 | -0.437 | 1 |
위 결과는 각 변수들 사이에 상관성을 나타냅니다. 예를 들면 Income과 HS Grad와 강한 양의 상관관계가 있음을 나타냅니다. 상관성을 집약적으로 나타낼 수 있습니다.
x<-state[, c("Population", "Income" ,"Illiteracy" ,"Life Exp")] y<-state[, c("Murder", "HS Grad")] cor2<-round(cor(x, y), 3); cor2
Murder | HS Grad | |
---|---|---|
Population | 0.344 | -0.098 |
Income | -0.23 | 0.62 |
Illiteracy | 0.703 | -0.657 |
Life Exp | -0.781 | 0.582 |
그러나 위 결과는 통계적 유의성, 즉 통계적으로 변수들 사이의 상관성에 대한 통계적 결론을 내리기에는 부족합니다. 이를 위해서는 유의성검정이 필요합니다.
부분상관(Partial correlations)
부분 상관은 하나 이상의 다른 양적 변수를 제어하는 두 양적 변수 간의 상관 관계입니다. 예를 들어 세개 변수의 x1, x2, x3에서 x1과 x2의 부분 상관계수는 세 변수의 공통부분과 x1과 x3, x2와 x3의 공통부분을 배제한 상태에서 x1과 x2의 상관계수를 계산한 것입니다. 다음과 같이 계산합니다.
$$\rho_{12,3}=\frac{\rho_{12}-\rho_{13}\cdot\rho_{23}}{\sqrt{(1-\rho_{13}^2)\cdot(1-\rho_{23}*2)}}$$위 식에서 ρ{12}는 변수 1과 변수 2의 상관계수입니다. 또한 ρ{12,3}는 변수3을 배제한 조건에서의 상관계수로서 변수1과 2의 부분상관계수를 의미합니다.
ppcor 패키지의 pcor()
함수를 사용하여 편상관 계수를 계산할 수 있습니다.
- pcor(x, method)
- x: matrix or dataframe
- method: 'pearson', 'kendall','spearman'중의 하나로 기본값은 'pearon'
- estimate(편상관계수), p-value, statistic, n(샘플수), gn(제어된 변수의 수), method를 결과로 반환
다음 데이터셋으로부터 위 식을 사용하여 grade-hours의 부분상관계수를 계산해 보면 다음과 같습니다.
data <- data.frame(Grade = c(80, 50, 80, 90, 92, 85, 76, 81, 90, 95), hours = c(5, 4, 6, 6, 3, 5, 9, 9, 5, 6), Score = c(90, 80, 70, 80, 95, 91, 99, 88, 92, 91)) corr<-cor(data); round(corr, 3)
Grade | hours | Score | |
---|---|---|---|
Grade | 1 | 0.017 | 0.312 |
hours | 0.017 | 1 | 0.122 |
Score | 0.312 | 0.122 | 1 |
grade-hours의 부분상관계수
pcorr<-(corr[1,2]-corr[1,3]*corr[2,3])/sqrt((1-corr[1,3]^2)*(1-corr[2,3]^2)) pcorr
[1] -0.02240543
pcor()함수를 사용하여 부분상관계수를 계산합니다.
pcorr2<-pcor(data); round(pcorr2$estimate, 3)
Grade | hours | Score | |
---|---|---|---|
Grade | 1 | -0.022 | 0.312 |
hours | -0.022 | 1 | 0.123 |
Score | 0.312 | 0.123 | 1 |
위 두 결과는 같습니다.
다음으로 데이터 셋 state에 대한 각 변수 쌍에 대한 부분상관계수를 계산합니다.
library(ppcor) pc<-pcor(state) pc$estimate
Population | Income | Illiteracy | Life Exp | Murder | HS Grad | |
---|---|---|---|---|---|---|
Population | 1 | 0.307 | -0.205 | 0.361 | 0.484 | -0.291 |
Income | 0.307 | 1 | -0.073 | -0.043 | -0.003 | 0.502 |
Illiteracy | -0.205 | -0.073 | 1 | 0.194 | 0.55 | -0.42 |
Life Exp | 0.361 | -0.043 | 0.194 | 1 | -0.713 | 0.373 |
Murder | 0.484 | -0.003 | 0.55 | -0.713 | 1 | 0.232 |
HS Grad | -0.291 | 0.502 | -0.42 | 0.373 | 0.232 | 1 |
상관 분석
상관 계수를 통해 변수들의 상관 여부를 정성적으로 판단할 수 있지만 그 결과의 통계적 유의성을 판단의 근거로 제시할 필요가 존재합니다. 즉 가설-검정 방법에 의해 통계적 유의 정도를 정량적으로 나타내게 되는데 일반적인 귀무 가설은 관계 없음 즉, 모집단의 상관 관계가 0 입니다.
- cor.test(x, y, Alternative = , method = )
- x와 y는 분석할 변수
- method= Pearson, Spearman 및 Kendall 중의 하나이며 default로 Pearson
- Alternative는 양측 또는 단측 검정("two.side", "less" 또는 "크게")
연구 가설이 모집단 상관 관계가 0보다 작다면 Alternative="less"를 사용합니다. 연구 가설이 모집단 상관 관계가 0보다 크다면 Alternative="greater"를 사용합니다. 기본적으로 Alternative="two.side" (인구 상관 관계가 0과 같지 않음)이 가정됩니다.
state<-state.x77[,1:6] colnames(state)
[1] "Population" "Income" "Illiteracy" "Life Exp" "Murder" [6] "HS Grad"
cor.test(state[,3], state[,5])
Pearson's product-moment correlation data: state[, 3] and state[, 5] t = 6.8479, df = 48, p-value = 1.258e-08 alternative hypothesis: true correlation is not equal to 0 95 percent confidence interval: 0.5279280 0.8207295 sample estimates: cor 0.7029752
위 분석의 귀무가설은 "Illiteracy와 Murder과의 상관성은 0"이고 이에 대한 유의 확률은 0.01보다 작습니다. 즉, 귀무가설을 기각할 수 있습니다. 이에 대응하는 상관계수 0.703 역시 매우 높은 양의 상관성을 보입니다. 이 분석은 단지 두 변수간의 상관 정도를 분석한 것으로 다른 변수들과의 상관은 없다고 가정합니다.
위의 cor.test()는 단지 하나의 상관성만을 분석할 수 있습니다. sych 패키지의 corr.test(x, use, method)
함수는 method는 Pearson, Spearman 또는 Kendall 상관 관계의 행렬에 대한 상관 관계 및 유의 수준을 생성합니다. use는 missing value의 삭제 방식으로 "pairwise"는 기본값이며 케이스의 쌍별 삭제를 수행합니다. use="complete"는 완전한 케이스만 선택합니다. 이 함수의 결과인 신뢰구간을 확인하기 위해서는 print(테스트, short=FALSE) 함수에 의해 그 결과를 출력합니다.
library(psych)
corr.test(state, use="complete")
Call:corr.test(x = state, use = "complete") Correlation matrix Population Income Illiteracy Life Exp Murder HS Grad Population 1.00 0.21 0.11 -0.07 0.34 -0.10 Income 0.21 1.00 -0.44 0.34 -0.23 0.62 Illiteracy 0.11 -0.44 1.00 -0.59 0.70 -0.66 Life Exp -0.07 0.34 -0.59 1.00 -0.78 0.58 Murder 0.34 -0.23 0.70 -0.78 1.00 -0.49 HS Grad -0.10 0.62 -0.66 0.58 -0.49 1.00 Sample Size [1] 50 Probability values (Entries above the diagonal are adjusted for multiple tests.) Population Income Illiteracy Life Exp Murder HS Grad Population 0.00 0.59 1.00 1.0 0.10 1 Income 0.15 0.00 0.01 0.1 0.54 0 Illiteracy 0.46 0.00 0.00 0.0 0.00 0 Life Exp 0.64 0.02 0.00 0.0 0.00 0 Murder 0.01 0.11 0.00 0.0 0.00 0 HS Grad 0.50 0.00 0.00 0.0 0.00 0 To see confidence intervals of the correlations, print with the short=FALSE option
부분상관 분석은 ppcor 패키지의 pcor() 또는 pcor.test() 함수를 적용합니다. 두 함수는 반환하는 결과의 종류는 같지만 pcor.test()는 단지 한 쌍의 부분상관에 대한 결과만을 반환합니다.
pcor.test(state[,2], state[, 3], state[,c(1, 4, 5,6)])
estimate p.value statistic n gp Method 1 -0.0732356 0.6286068 -0.487098 50 4 pearson
위 결과는 다른 변수들을 제어한 상태에서 Income과 Illiteracy 변수의 상관분석을 수행한 것으로 이 둘만의 상관성은 없다는 귀무가설을 기각할 수 없습니다.
댓글
댓글 쓰기