1.ARMAX模型

下面各章节,我就是使用上面公式的符号,其中y是输出,u是输入,e是噪声。有m个输出y,r个输入u。
进一步精简为:
Y=Pθ+E
其中:Y为要预测的部分,P为已知数据(包括y的t-1前数据,u的t-1前数据等),E是噪声。
参见:
1)线性模型:AR、MA、ARMA、ARMAX、ARX、ARARMAX、OE、BJ等:
https://blog.csdn.net/zephyr_wang/article/details/128589032
2)正交最小二乘法求解NARMAX:
https://blog.csdn.net/zephyr_wang/article/details/128667425
2.增广最小二乘法Extended Least Squares method
当噪声均值为0时,最小二乘法参数估计算法为无偏估计,为了解决最小二乘法参数估计的有偏性,将噪声模型的辨识同时考虑进去,就是增广最小二乘法。
所以ELSM方法主要关注ARMAX噪声E的影响,方法如下:
1)首先用普通二乘法求解ARMAX模型(不考虑噪声E)参数θ;
2)然后用θ和输入P计算出预测y_hat;
3)然后求残差,y_hat减实际y。这个残差有点等于噪声E。
4)然后将残差和P拼接在一起,继续求解ARMAX(有了残差,即考虑噪声e)参数θ。循环执行第2-4步。
迭代的停止条件可以有两种:
1)参数θ不再变化或者变化微小
2)残差(噪音E)不再变化或者变化微小
python代码如下:
#psi : The information matrix of the model.
e = y[max_lag:, ] - np.dot(psi, theta)#支持多输出
#e = y[max_lag:, 0].reshape(-1, 1) - np.dot(psi, theta)
for i in range(30):#为什么循环30次呢?
#e = np.concatenate([np.zeros([max_lag, 1]), e], axis=0)
e = np.concatenate([np.zeros([max_lag, y.shape[1]]), e], axis=0)#支持多输出
lagged_data = self.build_output_matrix(e, elag)
e_regressors = self.basis_function.fit(
lagged_data, max_lag, predefined_regressors=None
)
psi_extended = np.concatenate([psi,
3万+




被折叠的 条评论
为什么被折叠?



