Patrick's 데이터 세상

다변량 분석 본문

Programming/R

다변량 분석

patrick610 2020. 6. 25. 00:22
반응형
SMALL

1. 상관 분석

 

   상관분석(Correlation Analysis)은 데이터 안의 두 변수 간의 관계를 알아보기 위해 한다.
   두 변수의 상관관계를 알아보기 위해 상관계수(Correlation coefficient)를 이용한다. 상관계수에는 등간척도 이상으로 측정되는 두 변수들 간의 상관관계를 측정하는 데 쓰이는 피어슨 상관계수(Pearson correlation)와 서열척도인 두 변수들의 상관관계를 측정하는 데 사용하는 스피어만 상관계수(Spearman correlation)가 있다.

                                       0<=r<=1                                             -1<=r<=0                                                 r=0

 상관관계가 양수일 때는 x가 증가할 때 y도 증가하는 경향을 보이고 음수일 때는 x가 증가할 때 y가 감소하는 경향을 보인다.
 산점도가 직선에 가깝게 분포하면 상관계수가 절대값이 1에 가까워지고 이는 강한 상관관계를 반영한다.
 산점도가 직선에서 넓게 퍼져 x와 y의 직선상의 관계가 희미할수록 상관계수는 0에 가까워진다.
 상관계수가 0인 경우에는 오른쪽 그래프의 모양처럼 x의 변동에 따라 y의 패턴이 변화가 없다.

 

가. 피어슨의 상관계수

   두 확률변수 X와 Y의 선형관계의 크기를 측정하는 공분산은 아래와 같이 정의된다.

   여기서  평균X, Y의 기댓값이다.
   공분산의 크기는 X, Y의 단위에 따라 영향을 받는데, 단위에 영향을 받지 않고 언제나 -1과 1사이의 값을 갖도록 피어슨의 상관계수는 다음과 같이 정의된다.

 

모수인 피어슨의 상관계수를 추정하기 위해 표본상관계수 r을 사용하고, 이를 구하는 공식은 다음과 같다.

 


   [예제] 다음은 mtcars 데이터를 이용한 상관분석의 예이다.

install.packages("Hmisc")
library(Hmisc)
data(mtcars)
head(mtcars)

#Result

 

mtcars 데이터세트의 drat, disp 변수 간의 산점도를 그려보자.

drat <- mtcars$drat
disp <- mtcars$disp
plot(drat, disp)

#Result

 

산점도에 임의로 선을 그어보면 disp 변수와 drat 변수는 서로 음의 직선관계인 것처럼 보인다.

두 변수의 상관계수를 구해보자.

cor(drat, disp)

#Result

 

상관계수를 보면 disp와 drat은 서로 강한 편의 음의 상관성을 가지고 있음을 알 수 있다.

다음은 Hmisc 패키지의 rcorr 함수를 이용하여 mtcars 데이터세트를 상관분석한 내용이다.
rcorr 함수는 모든 변수들 사이의 상관계수와 함께 가설 

에 대한 p-값을 출력한다.

rcorr(as.matrix(mtcars), type="pearson")

#Result

 

앞 부분에 표시된 상관계수 행렬에서 변수 자신과의 상관계수는 모두 1로 대각항에 표현되고 비대각항에는 다른 변수들과의 상관계수들도 표시됨을 알 수 있다.
아래 부분에 표시된 P 행렬은 각 상관계수의 유의확률을 포함한다.
carb와 am의 p-값이 0.7545로 두 변수 사이의 상관계수가 유의하지 않음을 알 수 있다.
공분산을 구해보자.

cov(mtcars)

#Result

매트릭스 형식으로 공분산을 구할 수 있다.

 

 

나. 스피어만 상관계수(Spearman's rank correlation coefficient)

   피어슨의 상관계수는 두 변수 간의 선형관계의 크기를 측정하는 값으로 비선형적인 상관관계는 나타내지 못한다.
   스피어만 상관계수는 두 변수 간의 비선형적인 관계도 나타낼 수 있는 값으로, 한 변수를 단조 증가 함수로 변환하여 다른 변수를 나타낼 수 있는 정도를 나타낸다. 스피어만의 상관계수는 두 변수를 모두 순위로 변환시킨 후, 두 순위 사이의 피어슨 상관계수로 정의가 된다.
수식은 다음과 같다.

 

데이터세트를 이용해 스피어만 상관계수를 해보자.

rcorr(as.matrix(mtcars), type="spearman")

#Result

 

 

   [예제] 다음은 국어, 수학, 영어, 과학 점수를 데이터 프레임 형식으로 만든 데이터 세트이다.

korean <- c(85, 75, 65, 78, 59, 60, 90, 100, 99, 91, 70)
math <- c(80, 60, 75, 40, 50, 64, 70, 78, 90, 98, 50)
english <- c(80, 70, 69, 79, 80, 95, 98, 97, 67, 80, 59)
science <- c(90, 100, 50, 80, 67, 89, 60, 79, 89, 80, 100)
test <- data.frame(korean, math, english, science)
test

#Result

 

이 데이터를 이용해 스피어만 상관분석을 해보자.

rcorr(as.matrix(test), type="spearman")

#Result

 

 

 

 

2. 다차원 척도법

 

   다차원척도법(Multidimensional Scaling, MDS)은 여러 대상 간의 거리가 주어져 있을 때, 대상들을 동일한 상대적 거리를 가진 실수공간의 점들로 배치시키는 방법을 말한다. 주어진 거리는 추상적인 대상들간의 거리가 될 수도 있고, 실수공간에서의 거리가 될 수도 있다.
대상들을 2차원이나 3차원 실수공간의 점으로 대응시킬 수 있다면 이 점들을 시각화할 수 있고, 이는 관측치들 간의 전반적 관계에 대한 직관적 이해를 할 수 있게 도와준다.
따라서 다차원 척도법은 주로 자료들의 상대적 관계를 이해하는 시각화 방법을 근간으로 주로 사용된다.

 

data(eurodist)
eurodist

#Result

...

loc <- cmdscale(eurodist)
loc

#Result

x <- loc[,1]
y <- loc[,2]
plot(x,y,type="n", main="eurodist")
text(x,y,rownames(loc), cex=0.8)
abline(v=0, h=0)

#Result

   eurodsit는 각 도시 사이의 거리를 포함하는 행렬행태의 자료이다. cmdscale 함수를 사용하여 각 도시의 상대적 위치를 도식화 할 수 있는 X, Y 좌표를 계산하고 그래프로 표현한 것이 위 그래프이다.
이처럼 각 개체에 대한 특정 변수들의 관측치는 없더라도 개체 간의 유사성에 대한 자료를 사용하여 산점도를 그릴 수 있다.

 

 

 

3. 주성분 분석

 

   주성분 분석(Principal Component Analysis, PCA)은 상관관계가 있는 고차원 자료를 자료의 변동을 최대한 보존하는 저차원 자료로 전환시키는 방법으로, 자료의 차원을 축약시키는데 주로 사용된다.

 


   아래의 예는 USArrests자료의 주성분 분석을 보여준다.
이 자료는 미국의 50개 주의 인구 10만명 당 살인, 폭행, 강간으로 인한 체포의 수와 도시 인구의 비율을 포함하고 있다.

library(datasets)
data(USArrests)
summary(USArrests)

#Result

fit <- princomp(USArrests, cor=TRUE)
summary(fit)

#Result

loadings(fit)

#Result

plot(fit, type="lines")

#Result


주성분 분석은 R 함수 princomp를 이용하여 수행되었고, 그 결과는 fit이라는 이름으로 저장되었다.
cor=TRUE 옵션은 주성분 분석을 공분산 행렬이 아닌 상관계수 행렬을 사용하여 수행하도록 한다.
summary(fit)의 결과는 4개의 주성분의 표준편차, 분산의 비율 등을 보여준다.
예를 들면 첫 번째 주성분 하나가 전체 분산의 약 62%를 설명하고 있다. 두 번째와 세 번째 주성분의 분산은 전체 분산 중 각각 25%와 9를 설명하고 있다.
따라서 첫 번째와 두 번째 주성분 두 개의 변수만을 이용해 전체 분산의 약 87%를 설명할 수 있음을 알 수 있다.
세 번째 주성분까지 포함시키면 전체 분산의 약 96%까지 설명할 수 있다는 것을 알 수 있다.
loadings(fit) 함수는 주성분들의 로딩 벡터들을 보여준다.
이를 통해, 첫 번째와 두 번째 주성분이

와 같이 주어지는 것을 알 수 있다.

 

plot(fit) 함수는 각 주성분의 분산의 크기를 그림으로 그려준다. 이 그림을 스크리 그림(Scree plot)이라고 한다.
이를 통해서 주성분의 분산의 감소가 급격하게 줄어들어 주성분의 개수를 늘릴 때 얻게되는 정보의 양이 상대적으로 미미한 지점에서 주성분의 개수를 정하는 것이 하나의 방법이다.
그 외에도 주성분들이 설명하는 총 분산의 비율이 70~90% 사이가 되는 주성분의 개수를 선택하는 방법을 사용하기도 한다.

fit$scores

#Result

...

biplot(fit)

#Result

fit$scores는 각 관측치를 주성분들로 표현한 값을 나타낸다.
biplot은 관측치들을 첫 번째 주성분(Comp.1)이 Assault, Murder, Rape와 비슷한 방향을 가지고 UrbanPop과 방향이 수직에 가까운 것으로 보아 첫 번째 주성분이 주로 Assault, Murder, Rape 변수들에 대해 상대적으로 큰 가중치를 적용하여 계산된 것을 알 수 있다.
두 번째 주성분은 UrbanPop와 상대적으로 평행하기 때문에 다른 변수들에 비해 UrbanPop의 영향을 크게 받아 구성된 것으로 보인다.
   첫 번째 주성분의 값이 작을수록 세 가지 범죄 발생율이 큰 주이고 두 번째 주성분 값이 작을수록 도심인구 비율이 큰 주라고 해석할 수 있다.

 

또 다른 예제로 새로운 컴퓨터를 구입했을 때 가격, 소프트웨어, 외형, 브랜드에 대한 만족도를 1~7까지의 척도로 점수를 부여한 분석이다.

Price <- c(6,7,6,5,7,6,5,6,3,1,2,5,2,3,1,2)
Software <- c(5,3,4,7,7,4,7,5,5,3,6,7,4,5,6,3)
Aesthetics <- c(3,2,4,1,5,2,2,4,6,7,6,7,5,6,5,7)
Brand <- c(4,2,5,3,5,3,1,4,7,5,7,6,6,5,5,7)
data <- c(4,2,5,3,5,3,1,4,7,5,7,6,6,5,5,7)
data<-data.frame(Price, Software, Aesthetics, Brand)
pca<-princomp(data, cor=T)
summary(pca, loadings=T)

#Result

   위 결과를 보면 Comp.1이 60%, Comp.2까지 하면 84%를 설명해 줌을 알 수 있다.
Comp.1은 Aesthetics와 Brand가 클수록, Price가 낮을수록 높은 값을 가지고 Software의 영향은 적게 받는다.
Comp.2는 Software의 영향만은 크게 받는다.
Comp.1은 패션 추구형, Comp.2는 기능 추구형을 측정하는 변수로 해석할 수 있다.

biplot(pca)

#Result

 

 

 

4. 시계열 예측


1. 정상성

   시간의 흐름에 따라서 관측된 데이터를 시계열자료(Time-series Data)라고 한다. 시계열 분석(Time Series Analysis)을 위해서는 정상성(Stationary)을 만족해야 한다. 정상성은 시점에 상관없이 시계열의 특성이 일정하다는 것을 의미하며, 이를 만족한다는 것은 다음과 같은 것을 말한다.

정상성

① 평균이 일정하다.
② 분산이 시점에 의존하지 않는다.
③ 공분산은 단지 시차에만 의존하고 시점 자체에는 의존하지 않는다.


   위에서 정의한 정상성 조건을 하나라도 만족하지 못하는 경우의 시계열 자료를 비정상 시계열이라고 부르며, 대부분의 시계열 자료는 비정상 시계열 자료이다. 비정상 시계열 자료는 정상성을 만족하도록 데이터를 정상 시계열 자료로 만든 후에 시계열 분석을 수행한다.
때문에 주어진 시계열 자료가 정상성을 만족하는지 판단하는 과정이 필요하다. 가장 먼저 시계열 자료 그림을 통해서 자료의 이상점(Outlier)과 개입(Intervention)을 살피고, 정상성 만족 ㅇ녀부와 개략적인 추세 유무를 관찰한다. 이상점의 경우 일반적으로 해당 이상값을 제거하고, 개입의 경우 회귀분석을 수행하면 된다. 그리고 추세를 보이는 (평균이 일정하지 않은) 경우에는 차분(Difference)을 통해 비정상 시계열을 정상 시계열로 바꾸고, 시간에 따라 분산이 일정하지 않은 경우에는 변환(Transformation)을 통해서 정상 시계열로 바꿀 수 있다.

   차분이란 현 시점의 자료값에서 전 시점의 자료값을 빼는 것을 말한다. 일반적인 차분은 현재 시점에서 바로 전 시점의 자료값을 빼는 것을 말하며, 여러 시점 전의 자료를 빼는 것을 계절차분(Seasonal Difference)이라고 한다.
계절성을 갖는 비정상 시계열을 정상 시계열로 바꿀 때 계절차분을 사용한다.

 

2. 시계열 모형

가. 자기회귀 모형(AR 모형)

   자기회귀모형(Autoregressive model)은 현 시점의 자료가 p 시점 전의 유한개의 과거 자료로 설명될 수 있다는 의미이며 AR(p) 모형이라 한다.

   자기회귀모형은 현 시점의 시계열 자료에 몇 번째 전 자료까지 영향을 주는지 알아내는데 있다. 현 시점의 시계열 자료에 과거 1 시점 이전의 자료만 영향을 준다면, 이를 1차 자기회귀모형이라고 하며 AR(1)모형이라고 한다.

   현 시점의 시계열 자료에 과거 2시점 전 자료까지 영향을 주는 모형을 2차 자기회귀모형이라고 하며, AR(2)모형은 아래와 같다.

   자기회귀모형인지 판단하기 위한 모형 식별을 위해서 자료에서 자기상관함수(ACF, Auto-Correlation Function)과 부분자기상관함수(PACF, Partial Auto-Correlation Function)을 이용하여 식별한다. 일반적으로 자기회귀모형은 자기상관함수는 시차가 증가함에 따라 점차적으로 감소하고, 부분자기상관함수는 p+1 시차 이후 급격히 감소하여 절단된 형태이며, 이를 AR(p) 모형이라고 판별한다.

 

나. 이동평균모형(MA 모형)

   시계열 자료를 모형화 하는데 자기회귀모형 다음으로 많이 쓰이는 모형이 이동평균모형(Moving Average model)이다.

   이동평균모형은 현 시점의 자료를 유한개의 백색잡음의 선형결합으로 표현되었기 때문에 항상 정상성을 만족한다. 때문에 이동평균모형은 정상성 가정이 필요없다.
   1차 이동평균모형, MA(1) 모형은 가장 간단한 이동평균모형으로 같은 시점의 백색잡음과 바로 전 시점의 백색잡음의 결합으로 이루어진 모형이다.

   다음으로 2차 이동평균모형인 MA(2) 모형은 아래와 같다.

   이동평균모형을 판단하기 위한 모형 식별은 자기회귀모형과 마찬가지로 자기상관함수와 부분자기상관함수를 이용하여 식별하게 된다. 이동평균모형은 자기회귀모형과 반대로 자기상관함수는 p+1 시차 이후 절단된 형태가 되고, 이때를 MA(p) 모형이라 볼 수 있다. 그리고 부분자기상관함수는 점차 감소하는 형태를 띄게 된다.

 

 

다. 자기회귀누적이동평균모형(ARIMA 모형)

   대부분의 많은 시계열 자료가 자기회귀누적이동평균모형(Autoregressive Integrated Moving Average model) 따른다. ARIMA 모형은 기본적으로 비정상 시계열 모형이기 때문에 차분이나 변환을 통해 AR모형이나 MA모형, ARMA 모형으로 정상화할  있다. ARIMA(p,d,q) 모형은 차수 p,d,q 값에 따라 모형의 이름이 다르게 된다. 차수 P AR 모형과 관련이 있고, q MA 모형과 관련이 있는 차수이다. d ARIMA에서 ARMA 정상화할    차분을 했는지를 의미한다.

   d=0이면 ARMA(p,q) 모형이라 부르고,  모형은 정상성을 만족한다. p=0이면 IMA(d,q) 모형이라 부르고,  모형을 d 차분하면 MA(q) 모형이 된다. q=0이면 ARI(p,d) 모형이며, 이를 d 차분한 시계열 모형이 AR(p) 모형을 따르게 된다.

 

 

라. 분해 시계열

   분해 시계열이란 시계열에 영향을 주는 일반적인 요인을 시계열에서 분리해 분석하는 방법을 말하며, 회귀분석적인 방법을 주로 사용하고 있다. 시계열을 구성하는 요소는 다음 4가지로 분류된다.

 

   1) 추세요인

   자료의 그림을 그렸을 때 그 형태가 오르거나 내리는 추세를 따르는 경우가 있다. 물론 선형적으로 추세가 있는 것 이외에도 이차식의 형태를 취하거나 지수적 형태를 취할 수도 있는데, 이렇게 자료가 어떤 특정한 형태를 취할 때 추세요인(Trend factor)이 있다고 한다.

 

   2) 계절요인

   요일마다 반복되거나 이년 중 각 월에 의한 변화, 사분기 자료에서 각 분기에 의한 변화 등 고정된 주기에 따라 자료가 변화하는 경우가 있다. 이렇게 고정된 주기에 따라 자료가 변화할 경우 계절요인(Seosonal factor)이 있다고 한다.

 

   3) 순환요인

   명백한 경제적이나 자연적인 이유가 없이 알려지지 않은 주기를 가지고 변화하는 자료가 있다. 이와 같이 알려지지 않은 주기를 가지고 자료가 변화할 때 순환요인(Cyclical factor)이 있다고 한다.

 

   4) 불규칙요인

   위 세 가지의 요인으로 설명할 수 없는 회귀분석에서 오차에 해당하는 요인을 불규칙요인(Irregular factor)라고 한다.

   분해 시계열 분석법에서는 각 구성요인을 정확하게 분리하는 것이 중요하다. 그러나 각 요인을 정확하게 분리하는 것은 그리 쉽지 않다. 또한 분해 시계열 방법은 이론적인 약점이 있는 것으로도 알려져 있다. 하지만 경제학자들이나 조사통계학자들은 이러한 약점에도 널리 사용하고 있으며, 실제로 경제 분석이나 예측에서 이 방법은 성공적으로 사용되고 있다. 분해식의 일반적 정의는 다음과 같다.

 

 

반응형
LIST

'Programming > R' 카테고리의 다른 글

정형 데이터 마이닝  (0) 2020.06.25
회귀 분석  (0) 2020.06.25
기초 통계 분석  (0) 2020.06.25
통계학 개론  (0) 2020.06.25
결측값 처리, 이상값 검색  (0) 2020.06.25
Comments