【发布时间】:2015-04-20 01:49:18
【问题描述】:
我正在做这个任务,我试图运行这个程序 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 无法在某些迭代中收敛时,我也遇到了拟合错误。
谢谢
【问题讨论】:
-
您使用的是哪个版本的 statsmodels?
-
您可能希望遵循答案中的建议,但如果您真的需要故障安全 ARMA 估计,您可以查看我的解决方案here
-
你好 jseabold 先生。谢谢,我一直在关注你的帖子。我完全错过了那个功能。我会立即尝试,看看是否有帮助。不过,我仍然需要加快迭代速度……因为运行两种拟合算法大约需要 15-20 分钟。但是,如果我将进程拆分为不同的单元格并一个一个地执行,那么每个单元格大约需要 6 分钟。我将尝试遵循答案中的建议
标签: python for-loop time-series statsmodels autoregressive-models