几种最小二乘法及python代码:ELS、TLS、RLS

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

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,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI强仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值