📌 편상관계수(partial correlation coefficient)
- 두 변수 간의 순수한 상관관계
- 하나 이상의 다른 변수의 영향을 통제한 상태에서 관심 대상인 두 변수 간의 선형적 관련성 측정
가짜 상관을 찾아내는 데 활용
ex) 연봉과 혈압 ~ 나이
숨겨진 관계를 찾는 데 활용
ex) 구매 필요성과 구매 의향 ~ 소득
A는 C와 양의 상관관계, C와 B는 음의 상관관계를 가지기 때문에 상쇄가 되어 A-B 관계가 드러나지 않는 것
str(mtcars)
'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
> mtcars2 <- mtcars[, c("mpg", "cyl", "hp", "wt")]
📌 상관계수
> cor(mtcars2)
mpg cyl hp wt
mpg 1.0000000 -0.8521620 -0.7761684 -0.8676594
cyl -0.8521620 1.0000000 0.8324475 0.7824958
hp -0.7761684 0.8324475 1.0000000 0.6587479
wt -0.8676594 0.7824958 0.6587479 1.0000000
- mpg-cyl의 상관계수 : -0.8521620
- mpg-hp의 상관계수 : -0.7761684
- mpg-wt의 상관계수 : -0.8676594
mpg와 hp의 음의 상관관계가 mpg-cyl, mpg-wt의 영향을 받았을 가능성이 존재한다.
📌 편상관계수
mph와 hp의 편상관계수
> pcor(c(1, 3, 2, 4), cov(mtcars2))
[1] -0.2758932
> pcor(c("mpg", "hp", "cyl", "wt"), cov(mtcars2))
[1] -0.2758932
cyl와 wt를 통제한 상태에서의 mpg와 hp의 순수한 상관계수 -0.2758932이다. mpg와 hp의 높은 음의 상관계수는 cly과 wt의 영향을 받았음을 알 수 있다.
📌 편상관계수에 대한 유의성 검정
> pcor.test(pcor(c(1, 3, 2, 4), cov(mtcars2)),
q=2, n=nrow(mtcars2))
$tval
[1] -1.518838
$df
[1] 28
$pvalue
[1] 0.1400152
p-value = 0.1400152 이므로 귀무가설을 기각할 수 없다.
따라서 cyl과 wt를 통제하면 mpg와 hp에는 순수한 상관관계는 존재하지 않는다.
📝 편상관계수를 수행해주고 유의성 검정을 수행해주는 패키지
> library(ppcor)
> pcor(mtcars2)
$estimate
mpg cyl hp wt
mpg 1.0000000 -0.3073687 -0.2758932 -0.6285559
cyl -0.3073687 1.0000000 0.5340905 0.2224468
hp -0.2758932 0.5340905 1.0000000 -0.1574640
wt -0.6285559 0.2224468 -0.1574640 1.0000000
$p.value
mpg cyl hp wt
mpg 0.0000000000 0.098480097 0.140015155 0.0001994765
cyl 0.0984800975 0.000000000 0.002365994 0.2374063384
hp 0.1400151550 0.002365994 0.000000000 0.4059618058
wt 0.0001994765 0.237406338 0.405961806 0.0000000000
$statistic
mpg cyl hp wt
mpg 0.000000 -1.709183 -1.518838 -4.276365
cyl -1.709183 0.000000 3.342856 1.207328
hp -1.518838 3.342856 0.000000 -0.843747
wt -4.276365 1.207328 -0.843747 0.000000
$n
[1] 32
$gp
[1] 2
$method
[1] "pearson"
> pcor.test(mtcars2["mpg"], mtcars2["hp"], mtcars2[c("cyl", "wt")])
estimate p.value statistic n gp Method
1 -0.2758932 0.1400152 -1.518838 32 2 pearson