簡體   English   中英

使用不帶DatetimeIndex但具有已知頻率的statsmodels.seasonal_decompose()

[英]Using statsmodels.seasonal_decompose() without DatetimeIndex but with Known Frequency

我有一個時間序列信號,我想在Python中分解,所以我轉向statsmodels.seasonal_decompose()。 我的數據頻率為48(半小時)。 我得到了與此提問者相同的錯誤,其中解決方案是從Int索引更改為DatetimeIndex。 但我不知道我的數據的實際日期/時間。

這個github線程中 ,其中一個statsmodels貢獻者說

“在0.8中,你應該能夠指定freq作為關鍵字參數來覆蓋索引。”

但對我來說似乎並非如此。 這是一個說明我的問題的最小代碼示例:

import statsmodels.api as sm
dta = pd.Series([x%3 for x in range(100)])
decomposed = sm.tsa.seasonal_decompose(dta, freq=3)

AttributeError: 'RangeIndex' object has no attribute 'inferred_freq'

版本信息:

import statsmodels
print(statsmodels.__version__)
0.8.0

有沒有辦法在具有指定頻率但沒有DatetimeIndex的statsmodel中分解時間序列?

如果沒有,是否有一個在Python中執行此操作的首選替代方法? 我檢查了Seasonal包,但是它的github列出了0個月/月,一個貢獻者,以及9個月前的最后一次提交,所以我不確定我是否想依賴它來完成我的項目。

感謝josef-pkt在github上回答這個問題。 statsmodels 0.8.0中存在一個錯誤,如果傳遞了Pandas對象,它總是會嘗試根據DatetimeIndex計算推斷頻率。

使用Pandas系列時的解決方法是將numpy數組中的值傳遞給seasonal_decompose() 例如:

import statsmodels.api as sm

my_pandas_series = pd.Series([x%3 for x in range(100)])
decomposed = sm.tsa.seasonal_decompose(my_pandas_series.values, freq=3)

(沒有錯誤)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM