이미이 질문에 대한 답변은 here이지만, rpy2를 사용하여이 작업을 수행하는 방법에 대한 빠른 기능은 아래에 나와 있습니다. 이것은 황토로 R의 강력한 통계적 분해를 사용할 수있게하지만, 파이썬에서는 가능합니다!
from rpy2.robjects import r
def decompose(series, frequency, s_window, **kwargs):
df = pd.DataFrame()
df['date'] = series.index
s = [x for x in series.values]
length = len(series)
s = r.ts(s, frequency=frequency)
decomposed = [x for x in r.stl(s, s_window, **kwargs).rx2('time.series')]
df['observed'] = series.values
df['trend'] = decomposed[length:2*length]
df['seasonal'] = decomposed[0:length]
df['residual'] = decomposed[2*length:3*length]
return df
위 함수는 계열에 datetime 인덱스가 있다고 가정합니다. 개별 구성 요소가있는 데이터 프레임을 반환하며,이를 사용자가 선호하는 그래프 라이브러리로 그래프로 나타낼 수 있습니다.
here으로 표시된 stl에 대한 매개 변수를 전달할 수 있지만 모든 기간을 밑줄로 변경하십시오. 예를 들어 위 함수의 위치 인수는 s_window이지만 위 링크에서는 s.window입니다. 또한 위 코드 중 일부는 this repository에 있습니다.
예 현재 저는 statsmodel, pandas 및 numpy를 포함한 Scipy를 사용하고 있습니다. 내가 찾을 수있는 가장 가까운 것은 팬더의'resample'을 사용하는 것이지만 그것은 당신이 timeseries를 deseason하는 것을 허락하지 않습니다. – user3084006