失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 最小二乘 加权最小二乘 matlab实现

最小二乘 加权最小二乘 matlab实现

时间:2021-11-16 22:24:26

相关推荐

最小二乘 加权最小二乘 matlab实现

1. 定义

最小二乘:

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

最小二乘法还可用于曲线拟合,其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。

加权最小二乘法:

一般最小二乘法将时间序列中的各项数据的重要性同等看待,而事实上时间序列各项数据对未来的影响作用应是不同的。一般来说,近期数据比起远期数据对未来的影响更大。因此比较合理的方法就是使用加权的方法,对近期数据赋以较大的权数,对远期数据则赋以较小的权数。加权最小二乘法采用指数权数W。

此处不做推导,网上一大堆,可自行查阅。

2.Matlab-Code

此处权重设置为:W(i,i) = 0.95^i;

若权重设置为W(i,i) = 1;,那么它就是普通的最小二乘 T.T!。

function [fitY] = weightedLeastSquares(X, Y, order, fitX)% X/Y: data of coordinate-x/y, (需要处理的坐标数据)% Polynomial of (order_num) order,(拟合多项式-阶数)% return fitY (返回值为拟合后的Y坐标)k = size(X, 2);% Construct the matrix X0X0 = zeros(order + 1, k);for k0 = 1:k for n0 = 1 : order+1X0(n0, k0) = X(k0)^(order + 1 - n0);endendX = X0';% Construction weight matrix (这里就是最重要的权重系数)% W : i/k or (i/k)^2 or (i/k)^3W = zeros(k);for i = 1:k% W(i,i) = 1;% W(i,i) = i/k;W(i,i) = 0.95^i;end% Coefficients of eigenvalues Coeff = (X'*W*X) \ X'*W*Y';% Coefficient initialization && Constructing polynomial equationfitY = Coeff(1) * fitX.^order; for i = 2:1:order+1fitY = fitY + Coeff(i)*fitX.^(order+1-i);end end

3. 测试

输入一组坐标,计算一二阶对应拟合结果。

dataX = [1 2 3 5 7 9 10 11 13 ]';dataY = [1 3 4 5 6 7 10 14 16 ]';plot(dataX,dataY,'*k')hold on, plot(1:14, weightedLeastSquares(dataX', dataY', 1, 1:14),'-.r')hold on, plot(1:14, weightedLeastSquares(dataX', dataY', 2, 1:14),'-.b')

如果觉得《最小二乘 加权最小二乘 matlab实现》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。