statduck
Detecting Seasonality With Fourier 본문
Data: https://data.seoul.go.kr/dataList/OA-2218/S/1/datasetView.do
2020, 2021년도 데이터 이용
from scipy import fft
from scipy import signal as sig
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import math
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
import warnings
warnings.simplefilter('ignore')
p2020 = pd.read_csv('data/pollution_2020.csv', encoding='cp949')
p2021 = pd.read_csv('data/pollution_2021.csv', encoding='cp949')
p = pd.concat([p2020,p2021], axis=0)
p = p[p['측정소명']=='강남구'][['측정일시','초미세먼지농도(㎍/㎥)']].reset_index(drop=True)
p.columns = ['ds','y']
p['y'] = p['y'].fillna(0)
plt.figure( figsize=(10, 4) )
ax1 = plt.subplot( 1, 2, 1 )
ax1.plot(freq, power, label='signal')
ax1.set_title('All Frequencies')
ax1.set_ylabel( 'Amplitude' )
ax1.set_xlabel( 'Frequency [1 / Hour]' )
plt.xticks(rotation=90)
ax2 = plt.subplot( 1, 2, 2 )
mask = (freq > 0) & (freq <= 0.25)
ax2.plot(freq[mask], power[mask])
ax2.set_title('Frequencies in (0, 0.25]')
ax2.set_ylabel( 'Amplitude' )
ax2.set_xlabel( 'Frequency [1 / Hour]' )
peaks = sig.find_peaks(power[freq >=0], prominence=1000)[0]
peak_freq = freq[peaks]
peak_power = power[peaks]
plt.plot(peak_freq, peak_power, 'ro')
plt.tight_layout()
plt.xticks(rotation=90)
output = pd.DataFrame()
output['index'] = peaks
output['freq (1/hour)'] = peak_freq
output['amplitude'] = peak_power
output['period (days)'] = 1 / peak_freq # days
output['fft'] = fft_value[peaks]
output = output.sort_values('amplitude', ascending=False)
output
결론: 365일, 15일(보름), 28일(한달) 주기로 패턴이 반복된다.
-> 상위 Amplitude는 어떻게 판별?
Trend 제거(detrending) 후에 확인한다면?
https://www.stat.cmu.edu/~cshalizi/dst/18/lectures/02/lecture-02.html
Hodrick-Prescott filtering을 이용하여 detrending을 진행할 것이다. 이 때 해당 기법이 smoothing parameter(람다가 1600으로 고정된 경우)와 동일하다. 이 때 smoothing parameter도 조정 가능
파이썬 statsmodels 라이브러리 설명
https://www.statsmodels.org/dev/generated/statsmodels.tsa.filters.hp_filter.hpfilter.html
삼성증권에서 소개하는 디트렌딩
https://smallake.kr/wp-content/uploads/2021/06/2021033012293348K_01_19.pdf
가법이냐 승법이냐?
- 가법은 분해 요소들간의 독립을 가정하고 승법은 독립이 아니라고 가정
'Machine Learning' 카테고리의 다른 글
이진분류 (0) | 2023.01.01 |
---|---|
왜 요약통계량인가? (0) | 2022.12.28 |
크롤링 & 워드클라우드 (0) | 2022.12.18 |
Time Series Forecasting (0) | 2022.11.26 |
Kernel Smoothing (0) | 2022.06.09 |
Comments