내가 까먹을까봐 만든 블로그

전체 글

Data Science/Statistics

[Python] AR, MA, ARMA, ARIMA 모델을 이용한 시계열(Time Series) 예측

이제까지 정상성에 대한 판단 방식과 비정상성 데이터를 정상성 데이터로 바꾸는 방법들에 대해 포스팅했다. 기초적인 내용들이지만 이를 토대로 정상성 데이터를 이용한 시계열 데이터(Time Series) 예측(Forecasting)을 수행할 수 있다. 한번 더 시계열의 특성을 짚고 넘어가자면,$$ 시계열 데이터 = 규칙적인 패턴+불규칙적인 패턴 $$으로 볼 수 있다. 이중 규칙적인 패턴은 이전 결과 사이 발생하는 자기상관성과(Autocorrelativeness)과 이후 결과에 편향성을 초래하는 이동평균(Moving Average) 현상으로 구분할 수 있다. 반대로 불규칙적인 패턴은 white noise라 칭하고 평균이 0이며 일정한 분산을 지닌  정규분포에서 추출된 임의의 수치로 정의하고 있는데, 이런 정규분..

Data Science/Statistics

[Python] ADF(Augmented Dickey-Fuller Test)를 이용한 정상성 확인

주요 개념 Augmented Dickey-Fuller Test (ADF Test) AR, MA, ARMA, ARIMA 모델을 적용하기 전, 우선 시계열 데이터를 정상성 데이터로 바꾼 후 사용하는 것이 바람직하다. 정상성을 띄기 위해선 시계열 데이터의 평균, 분산이 시간에 따라 일정해야 하고 lag에 따른 공분산이 일정해야 한다. 이를 위해 로그 변환을 해주거나 n차 차분을 적용해줄 수 있다. 시계열에 대한 자세한 사항은 여기를 참고하면 된다. 정상성에 대한 검증은 시각화를 하거나 상황에 대해 직관적인 판단을 통해 알 수 있지만 통계적인 정량적 방법으로 검증할 수 있는 방법을 사용하는 것이 데이터를 분석할 때 더 납득할 수 있는 방법이 될 것이다. 이를 위해 사용하는 방법 중 하나가 Augmented Di..

Data Science/Statistics

[Python] ACF(Autocorrelation function), PACF(Partial Autocorrelation function)의 이해

상관도표(Correlogram)는 시계열 데이터를 분석에서 자주 활용되는데 자기상관함수(Autocorrelation Function, ACF) 또는 편자기상관함수(Partial Autocorrelation Function, PACF)를 그래프로 표현한 것을 뜻한다. 우리가 자주 말하는 Correlation은 두 변수 간의 관계를 -1~1 사이로 정규화한 값으로 표현하는 척도인데, Autocorrelation은 time shifted된 자기 자신의 데이터와의 상관성을 의미한다. 이 ACF와 PACF는 ARIMA 모델의 파라미터가 되는 p, d, q의 최적 차수를 탐색할 때 유용하게 사용된다. p는 AR, d는 차분 횟수, q는 MA와 관련이 있는 파라미터이다. ACF와 PACF 설명 이전에 자기회귀 모형(..

Languages/Python

[Python Error] Json 데이터 파싱(parsing) 에러 - JSONDecodeError

Error: json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 366 (char 365) Json으로 데이터를 load하여 parsing할 때 발생할 수 있는 에러이다. api의 결과값을 잘 가져와 값을 수신한 것처럼 보이는데 막상 json.loads로 파싱해보면 에러가 나는 경우가 많다. 위의 에러 또한 json 데이터를 파싱할 때 나온 에러이다. 직관적으로 해당 string 데이터의 해당 위치의 +- 5 이내로 print하여 보면 어떠한 문자가 빠졌는지 알 수 있다. 하지만 나는 json 데이터 사용에 익숙하지 않아서인지 이 방식만으로는 아래와 같이 출력되어 발견하기 힘들었다. pr..

etc

티스토리 수학기호 입력하는 방법 (with MathJax)

1. script코드 입력하기- 블로그 관리 - 왼쪽 바에서 꾸미기 -> 스킨 편집 - html - script 코드 삽입 위 스크립트 코드는 html의 head 태그 안에 작성하면 된다. MathJax는 수학기호 입력을 위한 LaTex를 사용하게 해주는 JavaScript 라이브러리이다. 2. 수식 입력하기$$ math(\displaystyle F\left(s\right) = \mathcal{L}\left\{ f\right\} \left(s\right) \equiv \int_{0}^{\infty}e^{-st}f\left(t\right)dt) $$ 위와 같이 $$ 기호 사이에 수식을 적으면 된다.여러 기호가 많이 들어가 있는 라플라스 변환을 표현해 보았다.$$ math(\displaystyle F\lef..

Data Science/Statistics

[Python] 정상성(Stationarity) 데이터를 얻기 위한 로그 변환(Log transformation)과 차분(Differencing)

정상성(Stationarity)정상성(Stationarity)이란 언제 관측되는지에 관계없이 어떤 시점에 관찰하더라도 예측할 수 있는 패턴을 발견할 수 없는 것을 뜻한다.정상성에 대한 자세한 사항은 여기를 참조하면 된다. 로그 변환(Log Transform)비정상성 시계열을 정상성으로 변환하는 방법은 로그 변환(Log Transformation)과 차분(Differencing) 2가지가 있다.우선 로그 변환(Log Transformation)이란 변동폭이 일정하지 않은 경우 사용할 수 있는데 일반적인 수학의 x를 log(x)로 바꾸는 변환 방식이다. 로그 변환은 원본 데이터의 왜곡을 줄이거나 제거하는데 여기서 주의할 점은 원 데이터가 로그 정규 분포를 따르거나 대략 따라줘야 한다. 그렇지 않으면 로그 변..

loading