语法

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”可以为下表中的任何一个权重函数:

权重函数(WeightFunction)

等式(Equation)

Default Tuning Constant

'andrews'

w = (abs(r)<pi) .* sin(r) ./ r

1.339

'bisquare' (default)

w = (abs(r)<1) .* (1 - r.^2).^2

4.685

'cauchy'

w = 1 ./ (1 + r.^2)

2.385

'fair'

w = 1 ./ (1 + abs(r))

1.400

'huber'

w = 1 ./ max(1, abs(r))

1.345

'logistic'

w = tanh(r) ./ r

1.205

'ols'

传统最小二乘估计 (无权重函数)

'talwar'

w = 1 * (abs(r)<1)

2.795

'welsch'

w = exp(-(r.^2))

2.985

如果“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')

一个来自网的例子的matlab实现:

估计: (K>0)

matlab实现代码:

function wf=robust(x,y,k)  
% find starting values using Ordinary Least Squares  
w = x\y;  
r = y - x*w;  
scale=1;  
%optional I can compute the scale using MED  
% scale = median(abs(r - median(r)))/0.6745;  
  
cvg = 1;%convergence   
while (cvg > 1e-5)  
r = r/scale;  
wf = w; %save w   
WH=wfun(r,k);%diff(rho(xc)/x)  
% do weighted least-squares  
yst = y.*sqrt(WH);  
xst = matmul(x,sqrt(WH));  
w = xst\yst;  
%the new residual  
r = y - x*w;  
% compute the convergence     
cvg = max(abs(w-wf)./abs(wf));  
end;   
  
function W=wfun(r,k)  
W=zeros(length(r),1);  
for i=1:length(r)  
if (r(i)>=-(k-1)) &&  (r(i)<=k)   
   W(i)=1;  
elseif r(i)<-(k-1)  
   W(i)=(k-1)^4/(r(i)^4);  
else  
  W(i)=k^4/(r(i)^4);  
end  
end

"wfun"函数为 ,其中 。并且 。

另外,http://blog.csdn.net/abcjennifer/article/details/7449435#(M-estimator M估计法 用于几何模型建立)

博客中对M估计法有蛮好的解释。

Robust regression(稳健回归)相关推荐

  1. R构建鲁棒回归模型(Robust Regression)

    R构建鲁棒回归模型(Robust Regression) 目录 R构建鲁棒回归模型(Robust Regression) 普通最小二乘回归 鲁棒回归模型

  2. 非线性回归模型(part2)--支持向量机

    学习笔记,仅供参考,有错必纠 PS : 本BLOG采用中英混合模式 非线性回归模型 支持向量机 SVMs are a class of powerful, highly flexible modelin ...

  3. R语言实战应用精讲50篇(二)-多重线性回归系列之稳健回归

    前言 线性回归的参数估计主要采用的是最小二乘法(又称最小平方法),该法是将使观测值与模型预测值之差的平方达到最小的值作为参数估计值.如果数据存在异常点或者异方差,最小二乘法估计会存在偏差,常用的处理策 ...

  4. 直线回归数据 离群值_处理离群值:OLS与稳健回归

    直线回归数据 离群值 When it comes to regression analysis - outliers (or values that are well outside of the m ...

  5. Python手册(Machine Learning)--statsmodels(Regression)

    本站已停止更新,查看最新内容请移至本人博客 Wilen's Blog Regression Linear Regression(线性回归) Generalized Linear(广义线性回归) Gen ...

  6. MK趋势检验+Kendalls taub等级相关+稳健回归(Sens slope estimator等)

    python中的Mann-Kendall单调趋势检验--及原理说明_liucheng_zimozigreat的博客-CSDN博客_mann-kendall python 前提假设: 当没有趋势时,随时 ...

  7. Stata:面板数据的稳健回归-xtrobreg和robreg

    全文阅读:Stata:面板数据的稳健回归-xtrobreg和robreg| 连享会主页 目录 1. 引言 2. 理论背景 2.1 一阶差分估计 2.2 成对差别估计 3. 命令介绍 3.1 命令安装 ...

  8. (含Python源码)Python实现K阶多项式的5种回归算法(regression)

    0.文章结构 为了方便客官根据需要取阅,节约时间,文章目录结构如下: 问题描述 理论部分:五种回归算法 两种Python读取文件的方法 Python实现五种回归算法 使用的工具箱 总结 1.问题描述 ...

  9. statsmodels︱python常规统计模型库

    之前看sklearn线性模型没有R方,F检验,回归系数T检验等指标,于是看到了statsmodels这个库,看着该库输出的结果真是够怀念的.. 文章目录 1 安装 2 相关模型介绍 2.1 线性模型 ...

  10. (R语言)R的统计模型

    1定义统计模型的公式 下面统计模型的模板是一个基于独立的方差齐性数据的线性模型 用矩阵术语表示,它可以写成 其中y是响应向量,X是模型矩阵(model matrix)或者设计矩阵(design ma- ...

最新文章

  1. opengl多重纹理映射
  2. DB2中admin_cmd执行load
  3. JAVA中文件指针复位到文件开头
  4. 修改保留注释_Kraken2:宏基因组快速物种注释神器
  5. 网络安全学习第14篇 - 游戏(仙剑奇侠传95)外挂之修改游戏资源文件(修改人物属性)
  6. zipentry java_ZipEntry getNextEntry()
  7. C语言程序中数字字符是什么,C语言中如何识别字符与数字
  8. 腾格尔发新歌《遥远的地方》,成都邓秀菊自发红包朋友圈寻歌词
  9. 动态yumbo的gif制作
  10. ubuntu卡在无限循环登录界面,进不去桌面的问题#不重装是我们最后的倔强!#
  11. 【Unity 框架】QFramework v1.0 使用指南 工具篇:06. UIKit 界面管理快速开发解决方案 | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏
  12. LCD2864 T 串行通信 STM32 MSP430 单片机 显示屏 显示测试程序
  13. 实现高德地图签到签退(uniapp)
  14. 如何不写代码通过爬虫软件采集表格数据
  15. JavaScript 反调试技巧
  16. gearman 实例一枚
  17. 【Python】面向对象,封装
  18. R语言将数据导出到csv时出现科学计数表示
  19. 手机模拟器自带root_手机没root权限,用这款软件轻松让手机有root权限
  20. 关于使用JavaPOI 导出Excel多级联动的一些方法

热门文章

  1. 第八届北京国际电影节开幕 首次发布中国电影大数据
  2. 记一次失败的项目经历
  3. 初学者该掌握的计算机知识,初学者该如何学习电脑知识
  4. 概率论与数理统计浙江大学笔记和课后答案
  5. 嗅探服务器系统,嗅探服务器
  6. Tony.SerialPorts.RS232串口模块(三)
  7. craig gentry_为Craig投票!
  8. 备战Java后端【Day6】
  9. 【Python笔记】pyspark.sql库
  10. 视频边框背景如何虚化,简单操作几步实现