My Log

[ADsP #10] 데이터 분석 2장 - 통계 분석 (2) 본문

자격증 기록/ADsP(데이터분석 준전문가)

[ADsP #10] 데이터 분석 2장 - 통계 분석 (2)

My Log 2019. 8. 22. 16:42

* 시작하기에 앞서 본 게시물에 포함된 내용은 한국데이터산업진흥원에서 발행한 [데이터 분석 전문가 가이드, 2019년 2월 8일 개정]

   에 근거한 것임을 밝힙니다.

 

 

1. 다변량 분석

     가. 상관분석

           - 두 변수 간의 관계를 알아보기 위한 것

           - 상관계수(r)를 이용

               * 0 ≤ r ≤ 1 : x가 증가할 때 y도 증가

               * -1  r  0 : x가 증가할 때 y는 감소

               * r = 0 : x가 변화해도 y의 변화가 없음

 

           plot(x, y) 함수 : 두 변수의 산점도 확인, 대략적인 상관관계 파악

             cor(x, y) 함수 : 두 변수의 상관계수를 구함

 

 

           1) 피어슨의 상관계수

                - 등간척도 측정

                - 두 변수 간 선형관계의 크기를 측정

                - rcorr( as.matrix(data), type="pearson" ) 함수 : 데이터세트의 모든 변수들 사이의 상관계수와 가설에 대한 p-값 출력,

                                                                                                                p-값을 통해 각 상관계수가 유의함을 확인

 

 

 

 

 

 

 

           2) 스피어만 상관계수

                - 서열척도 측정

                - 비선형적인 상관관계를 나타내지 못하는 피어슨의 단점 보완

                - 두 변수를 모두 순위로 변환시킨 후, 두 순위 사이의 피어슨 상관계수로 정의

                - rcorr( as.matrix(데이터명),  type="spearman" )

 

 

     나. 다차원 척도법

           - 여러 대상 간의 거리가 주어져 있을 때, 대상들을 동일한 상대적 거리를 가진 실수공간의 점들로 배치시키는 방법

           - 대상들의 거리를 2차원 또는 3차원 실수공간의 점으로 대응시켜, 시각화를 통해 직관적 이해를 할 수 있게 도와준다.

           - 주로 자료들의 상대적 관계를 이해하는 시각화 방법의 근간으로 사용된다.

 

           > loc <- cmdscale(데이터명)                                     # 상대적 위치를 도식화할 수 있는 X, Y 좌표를 계산

           > X <- loc[ , 1]

           > Y <- loc[ , 2]

 

           > plot( X, Y, type="n" , main="데이터명")           # X, Y 좌표를 그래프로 표현

 

     다. 주성분 분석

           - 상관관계가 있는 고차원 자료를 자료의 변동을 최대한 보존하며 저차원 자료로 변환시키는 방법

           - 자료의 차원을 축약시키는데 주로 사용

           - 주성분들은 차원을 줄여 예측모델을 만들 때도 사용한다.

  

           - 자료에서 p차원 변수 X가 주어져 있을 때, 분산이 가장 큰 선형변환을 첫 번째 주성분으로 함

           - 첫 번째 주성분과 상관계수가 0 이고, 분산이 가장 큰 선형변환을 두 번째 주성분으로 함

           - 마찬가지 방법으로 p 번째 주성분까지 정의

           - 정의에 따라 주성분들은 서로 상관계수가 0으로 상관관계가 없으며, 주성분들의 분산의 합은 전체 X의 분산의 합과 같다.

 

 

           > fit <- princomp (데이터명,  cor=TRUE)             # 상관계수 행렬(cor)을 사용한 주성분분석

           > summary(fit)             # 각 주성분의 표준편차, 분산의 비율 등을 보여줌

           > loadings(fit)               # 각 주성분들의 로딩 벡터를 보여줌

           > plot(fit)                       

              # 주성분의 분산크기를 그래프로 표시(=스크리 그림, Scree plot)

              # 분산의 크기가 급격하게 줄어드는 지점이나 분산비율이 70~90%가 되는 지점에서 주성분의 개수를 선택

 

           > fit$scores     |     predict(fit)         # 각 관측치를 주성분들로 표현

           > bioplot(fit)       # 첫 번째와 두 번째 주성분을 축으로 하여 관측치를 좌표에 그린 그림

 

2. 시계열 예측

     가. 정상성

           - 시간의 흐름에 따라 관측된 시계열 자료를 분석하기 위해서는 정상성을 만족해야 함

           - 정상성이란, 시점에 관계없이 시계열의 특성이 일정함을 의미

              조건 1) 평균이 일정

              조건 2) 분산이 시점에 의존하지 않음

              조건 3) 공분산은 시차에만 의존하고, 시점 자체에는 의존하지 않음

 

           - 위의 3가지 정상성 조건을 만족하지 못하는 경우 비정상 시계열로 부르며, 대부분의 자료가 비정상 시계열

           - 때문에 시계열 자료의 분석을 위해서는 이를 판단하고, 분석 가능한 형태로 바꾸는 작업이 필요함

           1) 정상성 만족 여부 판단

                 ㄱ. 이상점과 개입을 살핌

                 ㄴ. 개략적인 추세 유무를 관찰(상승 또는 하락 추세가 있다면 평균이 일정하지 않음)

 

            2) 비정상 시계열을 정상성을 만족하도록 수정

                 ㄱ. 이상점 존재 -> 이상값 제거

                 ㄴ. 개입 -> 회귀분석 수행

                 ㄷ. 추세 -> 차분(현 시점의 자료값에서 전 시점의 자료값을 빼는 것)

                 ㄹ. 분산이 일정하지 않음 -> 변환

 

 

     나. 시계열 모형

           1) AR (자기회귀모형)

                - 현 시점의 자료가 p시점 전까지 유한개의 과거 자료로 설명될 수 있다. (p차 자기회귀모형)

                - AR 모형인지 판단하기 위해 자기상관함수(ACF)와 부분자기상관함수(PACF)를 이용

                - AR(p) 모형은 부분자기상관함수(PACF)가 p+1 시점 이후 절단

 

 

           2) MA (이동평균모형)

                - 현 시점의 자료를 p시점 전까지 유한개 백색잡음들의 선형결합으로 표현

                - 항상 정상성을 만족하는 모형으로 정상성 가정이 필요없음

                - MA 모형인지 판단하기 위해 자기상관함수(ACF)와 부분자기상관함수(PACF)를 이용

                - MA(q) 모형은 자기상관함수(ACF)가 p+1 시점 이후 절단

 

 

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

                - 기본적으로 비정상 시계열 모형

                - 차분, 변환을 통해 AR모형이나 MA모형, ARMA 모형으로 정상화

 

                - ARIMA(p, d, q)

                   * p = 0 : IMA(d, q) 모형 => d번 차분 => MA(q) 모형

                   * d = 0 : ARMA(p, q) 모형 (0번 차분 = 정상성 만족)

                   * q = 0 : ARI(p, d) 모형 => d번 차분 => AR(p) 모형

 

 

                > data.diff1 <- diff( data,  differences=1 )        # diff 함수를 사용해 비정상 자료를 1번 차분

                > acf( data.diff1,  lag.max=20 )         # 자기상관함수 그래프

                > pacf( data.diff1,  lag.max=20 )    # 부분자기상관함수 그래프

 

                - acf 함수와 pacf 함수의 그래프를 종합해 적절한 모형을 선택하는 것은 쉽지 않다.

                         → forecast 패키지의 auto.arima 함수를 사용해 적절한 ARIMA모형을 결정

                > auto.arima(data)

                   ARIMA( 1, 1, 1 )         # ARIMA( 1, 1, 1 )로 결정되었음을 알려줌

 

 

                - 적절한 ARIMA 모형을 결정한 후 이를 통해 미래의 수치 값을 예측한다.

                > data.arima   <-  arima( data, order=c(1,1,1))

                > data.forcast  <-  forcast(data.arima,  h=10)     # 10개 년도만 예측

                > plot(data.forcast)           # 미래 예측 그래프 확인

 

 

           4) 분해 시계열

                - 시계열에 영향을 주는 일반적인 요인을 분리해 분석하는 방법

                - 회귀분석적인 방법을 주로 사용

                - 이론적 약점이 있음에도 널리 사용됨

 

                - 시계열 구성 요소

                  ㄱ. 추세 요인 : 상승, 하락, 이차식, 지수식 형태

                  ㄴ. 계절 요인 : 요일, 월, 분기 등 고정된 주기에 따른 변화

                  ㄷ. 순환 요인 : 명백한 이유없이 알려지지 않은 주기를 가지고 변화

                  ㄹ. 불규칙 요인 : 위 세 가지 요인으로 설명할 수 없는 회귀분석의 오차에 해당하는 요인

 

                > decompose(data)              # decompose 함수를 통해 시계열자료(ts클래스)를 4가지 요인으로 분해할 수 있다.

                > plot(data - data.decompose$seasonal)            # 자료에서 계열요인을 제거한 후 그림을 그릴 수 있다.

 


Comments