gpt4 book ai didi

python arma fitting 运行太慢?

转载 作者:太空宇宙 更新时间:2023-11-03 11:50:43 24 4
gpt4 key购买 nike

我正在做这个作业,我试图运行这个程序 5000 次,并对模型进行 AR(1) 和 AR(2) 拟合。首先,我定义了一个生成时间序列的函数,如下所示:

def ts_gen_ar1(size,sigma,alpha1):
wt = np.random.normal(0,sigma**2,size=size)
x = np.zeros(size)
for i in np.arange(1,size):
x[i] = 0.2 + alpha1*x[i-1] + wt[i]
return x

然后我执行了以下需要很长时间才能工作的语句

sample_ar1 = []
sample_ar2 = []
for i in range(0,5000):
rt = ts_gen_ar1(2500,1,0.8)
coeff_ar1 = sm.tsa.ARMA(rt,order=(1,0)).fit().params[1]
coeff_ar2 = sm.tsa.ARMA(rt,order=(2,0)).fit().params[1:]
sample_ar1.append(coeff_ar1)
sample_ar2.append(coeff_ar2)

有人可以建议如何加快速度吗?我也遇到拟合错误,我的程序说 MLE 未能在某些迭代中收敛。

谢谢

最佳答案

在普通 Python 中用于时间序列分析的递归循环很慢。

在这种情况下,生成样本的最简单解决方案是使用 scipy.signal.lfilter 或 statsmodels arma_generate_sample 中的包装器 http://statsmodels.sourceforge.net/devel/generated/statsmodels.tsa.arima_process.arma_generate_sample.html

另一种加速随机数生成的可能性是对许多样本进行矢量化运行,例如在 100 个进程的 block 上运行它。你仍然有时间循环,但你可以以使用更多内存为代价减少复制循环的数量。

sm.tsa.ARMA 使用用 cython 编写的 Kalman Filter 并且运行速度很快,但它用于一般的 ARMA 过程,它所做的工作比估计 AR 模型所需的更多。sm.ts.AR 在平稳性假设下(默认情况下)通过最大似然估计 AR 过程的参数。

最简单最快的是用OLS估计AR过程,不需要非线性优化,或者用Yule-Walker statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.yule_walker.html

后两者可以根据初始观察估计参数,但不具备 AR 和 ARMA 模型所具有的完整后估计功能,例如预测。

关于python arma fitting 运行太慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28594147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com