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
#시각화
pairs( iris[, 1:4] )







# 상관분석시, 결측치(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

'R' 카테고리의 다른 글

R 회귀분석 (R regression test)  (0) 2018.08.19
R apply 함수  (0) 2018.08.15
막대그래프 (Barplot)  (0) 2018.08.06
R, 결측치 처리 (Missing value, NA)  (0) 2018.07.26
R, Command line interface Ⅱ  (0) 2018.07.20

+ Recent posts