robustfith函数-最小二乘估计-M估计-Robust regression

转载自https://blog.csdn.net/meng4411yu/article/details/8851187,仅用作个人学习,如需删除请见谅并联系本人。

robustfit
Robust regression(稳健回归)

语法
b=robustfit(X,y)
b=robustfit(X,y,wfun,tune)
b=robustfit(X,y,wfun,tune,const)
[b,stats]=robustfit(...)

描述
b=robustfit(X,y)通过执行稳健回归来估计线性模型y=Xb,并返回一个由回归系数组成的向量b。X是一个n*p预测变量矩阵,y是一个n*1观测向量。计算使用的方法是加上bisquare加权函数的迭代重加权最小二乘法。默认的情况下,robustfit函数把全1的一个列向量添加进X中,此列向量与b中第一个元素的常数项对应。注意不能直接对X添加一个全1的列向量。可以在下面的第三个描述中通过改变变量“const”来更改robustfit函数的操作。robustfit函数把X或y中的NaNs作为一个缺省值,接着把它删除。
b=robustfit(X,y,wfun,tune)增加了一个加权函数“wfun”和常数“tune”。“tune”是一个调节常数,其在计算权重之前被分成残差向量,如果“wfun”被指定为一个函数,那么“tune”是必不可少的。权重函数“wfun”可以为下表中的任何一个权重函数:

如果“tune”未被指定,那么其默认值为表中对应值。“wfun”也可以是一个把残差向量作为输入,并产生一个权重向量作为输出的函数。通过标准误差估计和调节参数来调整残差。“wfun”可以用@(@wyfun)。
b=robustfit(X,y,wfun,tune,const)增加一个“const”控制模式内是否包含一个常数项,默认为包含(on)。
[b,stats]=robustfit(...)返回一个包含一下域的STATS结构。
'ols_s'    sigma estimate (rmse) from least squares fit
        'robust_s'   robust estimate of sigma
        'mad_s'     MAD estimate of sigma; used for scaling
                    residuals during the iterative fitting
        's'         final estimate of sigma, the larger of robust_s
                    and a weighted average of ols_s and robust_s
        'se'         standard error of coefficient estimates
        't'         ratio of b to stats.se
        'p'         p-values for stats.t
        'covb'       estimated covariance matrix for coefficient estimates
        'coeffcorr' estimated correlation of coefficient estimates
        'w'         vector of weights for robust fit
        'h'         vector of leverage values for least squares fit
        'dfe'       degrees of freedom for error
        'R'         R factor in QR decomposition of X matrix
The ROBUSTFIT function estimates the variance-covariance matrix of the coefficient estimates as V=inv(X'*X)*STATS.S^2.  The standard errors and correlations are derived from V.

matlab例子:
x = (1:10)';
        y = 10 - 2*x + randn(10,1); y(10) = 0;
        
使用原始最小二乘估计和稳健回归估计结果如下:
bls = regress(y,[ones(10,1) x])
bls =
  7.2481
 -1.3208
brob = robustfit(x,y)
brob =
  9.1063
  -1.8231
显示结果如下:
scatter(x,y,'filled'); grid on; hold on
plot(x,bls(1)+bls(2)*x,'r','LineWidth',2);
plot(x,brob(1)+brob(2)*x,'g','LineWidth',2)
legend('Data','Ordinary Least Squares','Robust Regression')

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值