/*
* http://sosal.kr/
* made by so_Sal
*/
Pearson 상관분석은 변수들이 얼마나 직선적인 관계를 가지는지 분석하는 기법으로
상관계수를 이용하여 측정한다.
상관계수: Correlation coefficient
> attach(iris)
> cor(Sepal.Length, Petal.Width)
[1] 0.8179411
> 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
cor.test() 함수로 Sepal.length와 Petal.Width간 상관계수 및 p-value, 신뢰구간을 구할 수 있다.
> 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
iris 데이터의 4가지 변수에 대해서 (Species를 제외한) 상관계수와 p-value를 구해보자.
> 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.0000000
# 4x4 상관계수 행렬 ( 자기자신과의 상관계수는 항상 1이므로 대각선 element의 값은 모두 1.0000 )
> pairs( iris[, 1:4] )
pair 함수를 통해 all pair-wise 산점도를 볼 수 있다.
전체 데이터의 시각적인 현황을 볼 수 있으므로, 탐색 자료 분석측면(Exploratory Data Analysis)에서 유용하다.
- 결측치(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( 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
cor() 함수의 결과는 모두 결측치를 반환한다. (NA가 연산에 포함되는 순간 그 결과값은 무조건 NA다.)
- 결측치(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
'Programing > R- programming' 카테고리의 다른 글
two-way ANOVA (0) | 2014.08.21 |
---|---|
범주형 자료의 통계분석 R programming (4) | 2014.08.21 |
데이터 검정 R programming (2) | 2014.08.21 |
파일 입출력, R 프로그래밍 (0) | 2014.08.21 |
데이터 추출 및 병합 연산 R프로그래밍 (0) | 2014.08.21 |