20.통계데이터분석 - 상관분석 - 편상관관계.Rmd
0.01MB
20.통계데이터분석---상관분석---편상관관계.html
1.26MB

 

 

https://www.youtube.com/watch?v=LKK9PaSu9zU&list=PLY0OaF78qqGAxKX91WuRigHpwBU0C2SB_&index=21

1. 편상관계수(partial correlation coefficient)

  • 다른 변수가 두 변수 간 관계에 미치는 영향력 확인의 필요성: 상관분석으로 두 변수 간 관계를 분석할 때, 다른 변수가 그 관계에 영향을 미치는지 살펴볼 필요가 있음
  • 편상관관계: 두 변수 간의 순수한 상관관계를 의미함
  • 예) 직장인의 연봉과 혈압 간 대개 정의 상관관계가 관찰됨
    • 그런데 원인은 이 두 변수가 모두 제3의 변수인 나이와 상관관계를 갖고 있기 때문임
    • 일반적으로 나이가 많은 직장인은 젊은 직장인에 비해 연봉도 많고 혈압도 높기 때문에 마치 혈압이 높은 직장인의 연봉도 많이 받는 것처럼 보이게 됨
    • 따라서 연봉과 혈압간 순수한 관계를 분석하고자 하면 나이의 영향을 배제해야 함
    • 이를 통계학 용어로 “나이 변수를 통제한다” 라고 얘기함
    • 나이의 영향을 일정하게 유지한 체 연봉과 혈압 간 관계를 분석해야 두 변수 간 진정한 상관관계를 알 수 있음
  • 편상관계수: 하나 이상의 다른 변수 영향을 통제한 상태에서, 관심의 대상인 두 변수 간 선형적 관련성을 측정한 지표임
  • 편상관계수의 특징
    • 편상관계수를 통해 두 변수 간 순수한 상관관계를 파악할 수 있음
    • 편상관계수는 두 변수 간 상관이 존재하는 듯 보이나 사실 상관관계가 없는 가짜 상관을 찾아내는 데 유용하게 활용될 수 있음
      • 두 변수 간 상관이 사실 두 변수가 진짜 상관을 갖는 제3의 다른 변수와 상관관계를 갖기 때문에 발생한다면 두 변수 간에는 가짜 상관이 관찰될 수 있음
      • 위의 예에서 연봉과 혈압 간 관계는 가짜 상관임. 나이를 통제하면 두 변수 간 상관관계는 사라지게 되기 때문임
    • 편상관계수로 숨겨진 관계를 찾을 수 있음
      • 어떤 두 변수 간 충분히 예상할 수 있는 기대되는 상관을 발견할 수 없다면 다른 변수들이 이 관계를 억제하고 있을 가능성이 있음
      • 변수 a와 변수 b간의 기대되는 상관이 나타나지 않으면, 변수 a는 다른 변수 c와 정의 상관관계를 갖고, 동시에 변수 c가 변수 b와 부의 상관관계를 갖고 있기 때문일 수 있음
      • 변수 c를 통해 ‘+’ 상관관계와 ‘-’ 상관관계가 상쇄 돼 변수 a 와 변수 b간의 관계가 드러나지 않았을 수 있음
      • 예) 와인냉장고 구매 필요성과 구매의향 간 상관관계가 거의 나타나지 않았다고 가정
        • 이때 새로운 변수인 소득을 고려할 때, 소득과 구매 필요성 간에는 부의 상관관계, 소득과 구매의향 간에는 정의 상관관계가 나타남
        • 편상관분석으로 소득의 영향을 통제하면, 즉, 소득을 통제한 구매필요성과 구매의향 간의 편상관계수를 구하면 처음과 달리 정의 상관관계를 확인할 수 있음
        • 결국 소득이라는 제3의 변수로 인해 구매 필요성과 구매의향 간 관계가 드러나지 않았다고 볼 수 있음

2. 편상관분석 수행하는 절차

2-1. mtcars데이터셋 설명

https://youtu.be/LKK9PaSu9zU?list=PLY0OaF78qqGAxKX91WuRigHpwBU0C2SB_&t=237

  • mtcars데이터셋 설명
    • 32개 자동차 모델별로 자동차에 대한 정보가 11개 변수로 저장이 돼 있음
    • 설명의 편의를 위해서 11개의 변수 중 4개만 선택 후 subset 생성함
    • 4개 변수는 연비(mpg), 실린더개수(cyl), 마력(hp), 자동차 무게(wt)임
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")]

2-2. cor() - 변수간의 상관계수 측정

  • 4개 변수 간 상관계수 계산
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)와 마력(hp) 간 상관계수가 -0.78로 꽤 높은 수준의 부의 상관관계가 관찰됨
    • 연비(mpg)와 나머지 두 개 변수 간 관계도 마력(hp)과의 관계 못지않게 꽤 높은 수준의 부의 상관계수가 출력됨
      • 연비(mpg)와 실린더개수(cyl) 간은 -0.85, 연비(mpg)와 자동차 무게(wt) 간은 -0.87임
    • 그래서 연비(mpg)와 자동차 마력(hp) 간 이러한 높은 수준의 부의 상관관계가 어쩌면 연비(mpg)와 실린더개수(cyl) 간 관계, 연비(mpg)와 자동차 무게(wt) 간 관계에서 영향을 받았을 수도 있다고 생각할 수 있음
    • 연비(mpg)와 마력(hp) 간 순수한 상관계수를 계산해 그러한 가능성을 확인할 수 있음

2-3. pcor()_ggm패키지 - 편상관계수 계산

  • 실린더개수(cyl), 무게(wt) 영향을 통제한 상태에서 연비(mpg)와 마력(hp) 간 편상관계수 계산
  • 인수설명
    • 1st 인수: 편상관계수를 계산할 변수통제할 변수인덱스나 변수명으로 지정
      • 처음 두개의 인덱스나 변수명편상관계수를 계산할 변수임. 여기서는 연비(mpg)와 마력(hp) 간 편상관계수를 계산할 것이기 때문에 인덱스로 1과 3 지정
      • 이어서 나머지 변수의 변수명이나 인덱스는 통제할 변수를 의미함. 통제할 변수가 실린더개수(cyl)와 자동차 무게(wt)이기 때문에 인덱스로 2와 4 지정
    • 2nd 인수: 데이터셋으로부터 산출된 공분산행렬 지정. 공분산행렬은 cov()로 계산가능
library(ggm)
pcor(c(1, 3, 2, 4), cov(mtcars2))
## [1] -0.2758932
  • 결과해석: 실린더개수(cyl)와 자동차 무게(wt)를 통제한 상태에서 연비(mpg)와 마력(hp) 간 순수한 상관계수가 확인됨
  • 인덱스 대신에 변수명을 사용해도 됨
pcor(c("mpg", "hp", "cyl", "wt"), cov(mtcars2))
## [1] -0.2758932
  • 결과해석
    • 앞서와 똑같은 편상관계수를 얻을 수가 있음
    • 실린더개수(cyl)와 무게를 통제한 연비(mpg)와 마력(hp) 간 편상관계수는 -0.28
    • 연비(mpg)와 마력(hp) 간 pearson상관계수가 -0.78었으니 거의 1/3수준으로 축소됨
    • 이로 미뤄볼 때, “연비(mpg)와 마력(hp) 간 이러한 높은 상관계수는 실린더개수(cyl)와 자동차 무게(wt)의 영향을 받았을 수 있다”라고 생각해 볼 수 있음
    • 실린더개수(cyl)와 자동차 무게(wt)의 영향을 배제하면, 그 둘간 순수한 상관계수는 -0.28로 작아지는 것을 볼 수 있음

2-4. pcor.test()_ggm패키지 - 편상관계수에 대한 유의성 검정

  • 편상관계수에 대한 유의성 검정은 pcor.test() 함수로 측정 가능
  • 인수설명
    • 1st: pcor()함수로 산출된 편상관계수를 지정
    • q인수: 통제할 변수의 개수 지정. 여기는 실린더개수(cyl)와 자동차 무게(wt)를 통제할 변수로 사용했기 때문에 q 인수에 2를 지정
    • n인수: 관측값 갯수, 즉, 표본크기를 지정. 데이터셋의 행 개수를 세서 지정
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 값이 0.14
    • 유의수준을 0.05 했을 때, 모집단에서 편상관계수가 0이라는 귀무가설을 기각하지 못함
    • 따라서 실린더개수(cyl)와 무게를 통제하면, 연비(mpg)와 마력(hp) 간 순수한 상관관계는 존재하지 않음
    • 두 변수 간 드러난 상관관계는 상당부분 실린더개수(cyl)와 무게에 의한 것이라 판단할 수 있음

2-5. pcor()_ppcor패키지 - 편상관계수와 그에 대한 유의확률 계산

  • ppcor 패키지 pcor() 특징
    • ggm 패키지 pcor()와 달리 편상관계수와 편상관계수에 대한 유의성 검정을 동시에 계산
    • 데이터셋에 포함돼 있는 모든 변수쌍 간 편상관계수와 그에 대한 유의확률을 계산해 줌
  • 인수설명: pcor()함수의 행렬이나 데이터 프레임을 인수로 지정함
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"
  • 결과해석
    • 첫 번째 출력결과로 모든 변수쌍 간 편상관계수를 볼 수 있음
    • 이어서 그 편상관계수에 대한 유의확률도 확인할 수 있음
    • 각 변수쌍 간 편상관계수를 산출 시, 나머지 변수들은 통제변수로 간주
      • mpg변수와 hp변수 간 편상관계수 계산 시, 나머지 변수 cyl와 wt가 통제변수로 사용됨
      • mpg변수와 cyl변수 간 편상관계수 계산 시, 나머지 변수 hp와 wt가 통제변수로 사용됨

2-6. pcor.test()_ppcor패키지 - 특정 두 변수만의 편상관계수와 유의확률 계산

  • pcor.test() 사용시 모든 변수쌍이 아닌 특정 두 변수만의 편상관계수와 유의확률 계산 가능
  • 인수설명
    • 1st, 2nd: 편상관계수를 계산하는 변수를 차례대로 지정
    • 3rd: 통제변수 지정
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
  • 결과해석: 연비(mpg)(mpg)와 마력(hp)(hp) 간의 편상관계수와 그에 대한 유의성 검정결과만 출력가능

+ Recent posts