1

我正在使用 statsmodelARMA()来估计模拟MA(1)过程:

import statsmodels.tsa.api as smt
import numpy as np
import matplotlib.pyplot as plt

# Simulate an MA(1) process
n = int(1000)
alphas = np.array([0.])
betas = np.array([0.6])
ar = np.r_[1, -alphas]
ma = np.r_[1, betas]
ma1 = smt.arma_generate_sample(ar=ar, ma=ma, nsample=n) #input

# Fit the MA(1) model to our simulated time series
max_lag = 30
mdl = smt.ARMA(ma1, order=(0, 1)).fit(maxlag=max_lag, method='mle', trend='nc')


# in sample predict
pred = mdl.predict()

#plotting
plt.style.use('bmh')
fig = plt.figure(figsize=(9,7))
ax = plt.gca()
plt.plot(ma1, label='Actual')        
plt.plot(pred, 'r-', label = "In-sample predict")
plt.legend(loc='upper left')

我得到以下信息:

样本内预测似乎是按比例缩放的。这是为什么?

我还绘制了实际值和预测值的累积和,因为通常我们会使用一阶差分来整合数据。

fig = plt.figure(figsize=(9,7))
ax = plt.gca()
plt.plot(ma1.cumsum(), label='Actual')
plt.plot(pred.cumsum(), 'r-', label='Predict')
plt.legend(loc='upper left')

我得到了这样的东西:

在此处输入图像描述

我做错什么了吗?天秤怎么这么差?

4

1 回答 1

1

这不是一个真正有意义的情节或练习。

您正在累积一个超前预测,这些预测都始于该观察或该时间点的历史给出的不同水平。

可以将具有一阶差分的模型估计和预测为 ARIMA(0,1,1)。在这种情况下,水平的预测,`typ="level"),是基于在前一个时间点添加到观察中的预测变化。

于 2018-01-14T20:06:27.983 回答