在 Python 中 findfrequency spec.ar 等效

ror*_*ory 6 signals time-series statsmodels forecast

R 中有一个非常有用的函数在包上调用findfrequencyforecast它返回时间序列的主频率周期。可以在此处找到有关作者功能的更多信息:https : //robjhyndman.com/hyndsight/tscharacteristics/

我想在 Python 中实现一些等效的东西,但我在处理应该等于spec.arfindfrequency 内的R 函数的函数时遇到了问题。

该函数从去趋势序列开始,这很容易用x = statsmodels.tsa.tsatools.detrend(myTs, order=1, axis=0). 现在我有了残差,我想在 Python 中做相当于spec.arR中的函数,它首先将 AR 模型拟合到 x(或使用现有拟合)并计算(并默认绘制)拟合模型的谱密度.

我没有发现任何类似的东西,所以我一次做每一步,首先是 AR,然后是规格估计。我正在使用Airpassengers时间序列,但对于 AR 顺序或系数,我无法在 R 和 Python 上获得相同的结果。

我的R代码:

x <- AirPassengers
x <- residuals(tslm(x ~ trend))
ARmodel <- ar(x)
ARmodel
Run Code Online (Sandbox Code Playgroud)

我知道 15 是我的自回归模型的选定顺序。

我的 Python 代码:

import statsmodels.api as sm
dataPeriodic = pd.read_csv('AirPassengers.csv')
tsPeriodic = dataPeriodic.iloc[:,1]
x = statsmodels.tsa.tsatools.detrend(tsPeriodic, order=1, axis=0)
n = x.shape[0]
est_order = sm.tsa.AR(x).select_order(maxlag=20, ic='aic', trend='nc')
print(est_order)
Run Code Online (Sandbox Code Playgroud)

在这里,我得到了一个非常不同的结果,选择的订单等于 10 而不是 15,我必须使用 maxlag 参数指定滞后搜索的上限。

我试过tsa.AutoReg没有成功,我得到了另一个不同的结果。

那么,有没有办法以与 R 相同的方式拟合 AR 模型?类似的东西来spec.ar或类似甚至一些findfrequency功能?我对“相同”方法可以在两种语言中输出的巨大差异感到困惑。

gsa*_*ras 0

我在Python中能找到的最接近的findfrequencyRforecast包是使用pandas.infer_freq,如下所示:

>>> import pandas as pd
>>> ts_data = pd.read_csv("ts_data.csv")
>>> pd.infer_freq(ts_data.index.values)
4
Run Code Online (Sandbox Code Playgroud)