R 상관분석 (R correlation test) Start.
BioinformaticsAndMe
# R을 이용한 상관분석(correlation test)을 시작해보자.
(상관분석에 대한 개념정리는 아래의 'Statistic' 카테고리에 있으니, 먼저 선행하고 오면 좋을 듯하다..!)
http://bioinformaticsandme.tistory.com/58?category=808983
# Pearson 상관분석은 변수들이 얼마나 직선적인 관계를 가지는지 분석하는 기법으로 상관계수를 이용하여 측정한다.
# 상관계수: Correlation coefficient
# 아이리스 예제데이터 불러오기
> attach(iris)
# cor() 함수 사용하여 상관계수 확인
> cor(Sepal.Length, Petal.Width)
[1] 0.8179411
# Pearson 상관계수: 0.8179
# cor.test() 함수로 Sepal.length와 Petal.Width간 상관계수 및 p-value, 신뢰구간을 구할 수 있다.
> cor.test(Sepal.Length, Petal.Width)
Pearson's product-moment correlation
data: Sepal.Length and Petal.Width
t = 17.2965, df = 148, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.7568971 0.8648361
sample estimates:
cor
0.8179411
# iris 데이터의 4가지 변수에 대해서 (Species를 제외한) 상관계수를 구해보자.
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
#4x4 상관계수 행렬 ( 자기자신과의 상관계수는 항상 1이므로 대각선 element의 값은 모두 1.0000 )
> cor( iris[, 1:4] )
Sepal.Length Sepal.Width Petal.Length Petal.Width
Sepal.Length 1.0000000 -0.1175698 0.8717538 0.8179411
Sepal.Width -0.1175698 1.0000000 -0.4284401 -0.3661259
Petal.Length 0.8717538 -0.4284401 1.0000000 0.9628654
Petal.Width 0.8179411 -0.3661259 0.9628654 1.000000
#시각화
# 상관분석시, 결측치(Missing value)가 존재하는 경우 ##############
> iris.na.test <- iris[ ,1:4]
> iris.na.test[1, 1] <- NA
> iris.na.test[3, 2] <- NA
> iris.na.test[4, 3] <- NA
> head(iris.na.test)
Sepal.Length Sepal.Width Petal.Length Petal.Width
1 NA 3.5 1.4 0.2
2 4.9 3.0 1.4 0.2
3 4.7 NA 1.3 0.2
4 4.6 3.1 NA 0.2
5 5.0 3.6 1.4 0.2
6 5.4 3.9 1.7 0.4
# cor() 함수의 결과는 모두 결측치를 반환한다. (NA가 연산에 포함되는 순간 그 결과값은 무조건 NA다.)
> cor( iris.na.test )
Sepal.Length Sepal.Width Petal.Length Petal.Width
Sepal.Length 1 NA NA NA
Sepal.Width NA 1 NA NA
Petal.Length NA NA 1 NA
Petal.Width NA NA NA 1
# 결측치(NA)가 존재하는 데이터 row 벡터를 삭제하는 방법
> cor( iris.na.test, use="complete.obs")
Sepal.Length Sepal.Width Petal.Length Petal.Width
Sepal.Length 1.0000000 -0.1094799 0.8678973 0.8121441
Sepal.Width -0.1094799 1.0000000 -0.4246671 -0.3610068
Petal.Length 0.8678973 -0.4246671 1.0000000 0.9615075
Petal.Width 0.8121441 -0.3610068 0.9615075 1.0000000
# 결측치(NA)가 존재하는 위치에서의 연산만 넘어가는 방법
> cor( iris.na.test, use="pairwise.complete.obs")
Sepal.Length Sepal.Width Petal.Length Petal.Width
Sepal.Length 1.0000000 -0.1097160 0.8696945 0.8169612
Sepal.Width -0.1097160 1.0000000 -0.4299167 -0.3654865
Petal.Length 0.8696945 -0.4299167 1.0000000 0.9624433
Petal.Width 0.8169612 -0.3654865 0.9624433 1.0000000
R 상관분석 (R correlation test) End.
BioinformaticsAndMe