Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

데이터분석 공부하기

상관(Correlation) 본문

통계

상관(Correlation)

Eileen's 2022. 1. 19. 18:17
이변량(bivariate) 상관

- 상관계수 파악 : 측정 전에 가장 먼저 그래프를 통해서 눈으로 상관관계를 파악한다.
 - 공분산(covariance)

분산(s²) = Σ(xᵢ - xˉ)²/(N-1) 

-> 한 변수의 분산 : 점수들이 대체로 평균과 어마나 떨어져 있는가?

교차곱 편차(cross-product deviation) : (한 변수의 편차)X(다른 변수의 편차) =  (xᵢ - xˉ)(yᵢ - yˉ)
 -> 편차의 곱이 양일 경우 (positive correlation), 음일 경우(negative correlation- 두 편차의 방향이 다르다) 
공분산(cov(x,y)) = Σ(xᵢ - xˉ)(yᵢ - yˉ)/(N-1) 

-> 교차곱을 모두 합하여 평균을 낸 것

-> 한 변수의 변화가 다른 변수의 변화 방식과 어느 정도 부합하는가?
-> 한 변수가 분산에서 벗어나는 방식과 다른 변수가 분산에서 벗어나는 방식이 비슷한가?
-> 한계 : 측정의 축적에 의존한다 (표준화된 척도가 아니여서 서로 다른 단위는 비교할 수 없다)

 

-상관계수(correlation coefficient)
a.k.a. 피어슨의 곱적률 상관계수(Person's product-moment correlation coefficient)/
피어슨 상관계수(Pearson correlation coefficient)

상관계수 = 표준화된 공분산 = (공분산)/(변수1의 표준편차)*(변수2의 표준편차)

r  =  (cov𝒙𝐲)/(S𝒙S𝐲)  =   Σ(xᵢ - xˉ)(yᵢ - yˉ)/(N-1)S𝒙S𝐲

* -1 < r < 1 
* 효과크기 : ±.1 작은 효과, ±.3 중간효과, ±.5 큰 효과 (연구 문맥 안에서 해석필요)

상관계수의 유의성 (확률적으로 관계가 유의한가, p.267)

1. z-score : r은 표지분포를 사용하다, 피셔의 공식으로 r의 표집분포를 실제로 정규분포로 만들 수 있음. z = zᵣ/SEᵣ

2. t 통계량(df = N-2) : 일반적으로 사용, r로부터 바로 구할 수 있음
 tᵣ = r√(N-2)/√(1-r²)

 

해석에 대한 유의사항 : correlation ≠ causation
1) third variable, 2) 인관관계의 방향

상관의 종류

이변량 상관(bivariate correlation) : 두 변수의 상관관계

편상관(partial correlation) : 하나 이상의 다른 변수들의 효과를 '제어'할 때의 두 변수의 상관관계

상관계수의 종류

피어슨 상관계수 :
1. 기본 요구조건 : 선형 관계 측정을 위해 데이터는 구간  또는 비례수준(interval/ratio)이여야 한다.
2. 유의성 확인을 위한 가정 : 두 변수가 모두 정규분포여야한다. (예외, 한 변수가 범주가 2개인 범주형변수이면 무시가능)
   -> 검정통계량 사용을 위해 표집분포가 정규분포여야 한다(표본자료가 정규분포이거나, 표본이 크면 표집분포도 정규분포라고 가정가능)

3. 결정계수(coefficient of determination, r²) : 변의성(variability), 변동(variation)을 다른 변수가 어느 정도 공유하는가?
   -> cor(df)^2    or    cor(df)^2 * 100

[피어슨의 상관계수 가정을 만족하지 못하는 경우]

스피어먼 상관계수(Spearman's correlation coefficient, 𝘱 (스피어먼의 로); 비모수적 통계량)
1. 두 변수 순위 사이의 피어슨 상관계수 : 자료에 순위를 매긴다 -> 순위들에 피어슨 상관계수 공식을 적용한다.

2. 순서척도(ordinal)데이터에서 사용

 

켄달의 타우(Kendall's tau, τ; 비모수적 상관계수)

- 표본의 크기가 작고 동순위 점수가 많을 경우, 스피어먼 대신 사용

- 모집단의 상관을 좀 더 정확하게 추정 가능

 

부트스트랩을 적용한 상관분석

객체 <- boot(df, 함수, 반복(추출 표본 수))

- 부트스트랩을 통해 생성된 객체로 알 수 있는 속성:
   1) estimate of biase, 2) 실험적으로 유도한 standard erro, 3) boot.ci(객체, conf = 0.99)로 부트스트랩에 기초한 신뢰구간

bootau <- function(liar, i){
  cor(liar$Position[i], liar$Creativity[i], use = "complete.obs", method = "kendall")}

library(boot)
boot_kendall <- boot(liar, bootau, 2000)
boot_kendall

boot.ci(boot_kendall)

- i : 특정 부트스트랩 표본을 식별하는 매개변수

 

 

* 함수 작성 *

함수이름 <- function(input.object1, input.object2, ...)
{a set of commands that do things to the input object(s),
a set of command that specify the output of the function}


mean.variable <- function(variable)
{
mean <- sum(variable)/length(variable)
cat("Mean = ", mean)
}

 

이연(biserial)상관과 점이연(point-biserial) 상관

- 두 변수 중 하나가 이분적(dichotomous;이항적) 변수일 때 사용(범주가 단 두 개) ex> 성별, 임신여부 등

점이연 상관계수(point-biserial correlation coefficient, r𝑏) : 한 변수가 이산적인 이분적 변수 ex> 사망 여부
범주를 0,1로 코드하고, 피어슨 상관계수로 계수 및 유의성 체크(p.294)

cor.test(cat.data$time, cat.data$gender)

이연 상관계수(biserial correlation coefficient, r𝑝𝑏) : 한 변수가 연속적인 이분적 변수 ex> 시험점수 1-100에서 통과/탈락

-z-score로 유의성 체크 가능(p.230)

library(polycor)
polyserial(cat.data$time, cat.data$gender)

 

In R

R 패키지 : Hmisc, polycor, boot, ggplot2, ggm

R 함수:
1. cor(x,y, use = "결측값 처리 방식", method = "상관계수 종류")
 - use = "everything"(해당 변수에 결측값 존재시, NA출력) ,"all.obs"(자료에 결측값 존재시 오류메시지),           
               "complete.obs"(목록별 결측값 제외),"pairwise.complete.obs"(쌍별 결측값 제외)

 - method = "pearson"(default), "spearman", "kendall", c("pearson", "spearman")

2. cor.test(x, y, alterative = "string", method = "correlation type", conf.level = 0.95, exact= FALSE)
 - 두 변수(df전체 X)사용가능
 - alternative : 검정/ 방향 가설의 종류- "two.sided"(양쪽꼬리 검정), "less"(음의 상관 예측), "greater"(양의 상관예측)
 - cof.level : "피어슨" 상관계수의 신뢰구간의 너비, default = 0.95(디폴트일 경우 생략가능)
- exact = FALSE : 동일 랭크가 있는 경우

3. rcorr(x, y, type = "상관계수의 종류") : Hmisc패키지, type : "pearson", "spearman", c("pearson", "spearman")
   1) df에는 작동하지 않으므로 df를 행렬(matrix)로 변환해야함, 2) 쌍별 결측값 제거방식으로만 작동한다(목록별 제거 지원X)
   ex) rcorr(as.matric(df[, c("","","")]))
   *) ggm패키지에도 rcorr()함수가 있으므로, 두 패키지를 모두 설치했을 시, Hmisc::rcorr()로 작성이 필요하다.

출처: 앤디 필드의 유쾌한 R 통계학

* 결측값 제거: 
John : exam, anxiety(missing), attendance

-목록별 결측값 제외(excluding cases listwise) : 한 사례에 하나 변수라도 결측값이 있으면 그 사례를 통째로 분석에서 제외
                                                                           ex) exam-attendance계산에도 john의 데이터는 제외함
-쌍별 결측값 제외(excluding cases pairwise) : 빠진 점수가 관여하는 계산에서만 제외
                                                                           ex) exam-anxiety 계산에는 사용되지 않지만, exam-attendance 계산에는 사용됨

 

 

 

 

편상관 (partial correlation)

-third variable의 효과를 일정하게 유지/제어하여, 두 변수의 고유/유일(unique) 관계를 파악할 수 있는 상관

  ex) 시험 불안, 복습, 성적의 상관관계가: 불안이 성적에 미치는 19.4%, 보습이 성적에 미치는 15.7%. 
- first ordr(1차 편상관계수) : 제어 변수가 하나 일때

- second-order(2차 편상관계수) : 제어 변수가 둘 일때 ...

library(ggm)
#pcor(c("var", "var2", "control 1", "control 2",...), var(df)), 
pc <- pcor(c("Exam", "Anxiety", "Revise"), var(exam.data))
pc
pc^2

#유의성 검사 : pcro.test(pcor로 만든 객체, 제어 변수의 게수, 표본 크기)
pcor.test(pc, 1, 103)

준편상관(semi-partial)/ 부분상관(part) 

third variable이 상관관계가 있는 두 변수 중 '하나에' 미치는 영향만 제어(VS. 일반 편상관은 두 변수 '모두'에 미치는 영향 제어)

-> 특정한 하나의 변수(결과변수)의 변동을 다른 일단의 예측변수들로 설명하고자 할 때

 

 

상관계수의 비교

1. 독립적인 r들의 비교 : z-score사용
 -> 남성과 시험 불안의 상관계수 vs 여성과 실험 불안의 상관계수의 차이가 유의한지 평가

zdifference<-function(r1, r2, n1, n2)
{zd<-(atanh(r1)-atanh(r2))/sqrt(1/(n1-3)+1/(n2-3))
p <-1 - pnorm(abs(zd))
print(paste("Z Difference: ", zd))
print(paste("One-Tailed P-Value: ", p))
}

2. 종속적인 r들의 비교

tdifference<-function(rxy, rxz, rzy, n)
{ df<-n-3
td<-(rxy-rzy)*sqrt((df*(1 + rxz))/(2*(1-rxy^2-rxz^2-rzy^2+(2*rxy*rxz*rzy))))
p <-pt(td, df)
print(paste("t Difference: ", td))
print(paste("One-Tailed P-Value: ", p))
}

 

 

효과크기 계산에 유의 사항

1. Spearman's r𝑠의 의미
Pearson's R² : 변동(분산)들의 공유 비율
Spearman R𝑠² : 두 변수가 공유하는 '순위'들의 변동 비율

 

2. 상관계수 간 비교
 - r, r𝑠는 결국엔 동일한 공식을 사용하여 값과 의미가 유사하나, Kendall은 값이 그 둘에 비해 상당히 작다(66~75%)

  -> Kendall τ² : 변동이나 순위의 변동 비율 X; r, r𝑠과 비교할 수 없다.

- 이연 상관계수와 점이연 상관계수의 크기가 다르다 - 이분적 변수에 연속체가 깔려있느지 아닌지세심하게 판단해야한다. 

 

상관분석의 보고

유의 사항

1) 절대값이 1보다 작은 상관계수 또는 확률 값 표기 : 소수점 앞에 0 표기 X

2) 상관계수는 소수점 이하 두자리까지 보고

3) 양쪽꼬리가 아닌 한쪽꼬리 확률을 인용하는 경우 명시해야함

4) 각 상관계수를 서로 다른 영문자로 표기해야함

5) 적용하는 확률에 표준적 기준(.05, .01, .001) 존재

 

text보고 예시(p.241) :

-there was a significant relationship between number of TV shows watched and the number of SNS accounts, r = .78, p(one-tailed) < .05.

-Test performance was significantly correlated with confidence score, r = .60, and time spent sleeping, r = .45; the time spend sleeping was also correlated with confidence score, r = .72 (all 𝑝𝑠 < .001).

-Creativity was significantly related to how well people did in a drawing competition, τ = -.30, 𝑝 < .001.

 

Table보고 예시:

출처 : Discovering Statsitics in R

 

 

출처 및 참고 : '앤디 필드의 유쾌한 R 통계학'