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.youkuaiyun.com/zephyr_wang/article/details/128589032
2)正交最小二乘法求解NARMAX:
https://blog.youkuaiyun.com/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,

本文详细介绍了多种系统辨识方法,包括ARMAX模型、增广最小二乘法、总体最小二乘法、递推最小二乘法、限定记忆的最小二乘法、加权最小二乘法等,并提供了每种方法的原理及Python实现代码。
最低0.47元/天 解锁文章
1301

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



