稳健回归的反复加权最小二乘迭代解法及其应用 下载本文

内容发布更新时间 : 2024/5/9 10:25:02星期一 下面是文章的全部内容请认真阅读。

调用robustfit函数作稳健回归

regress函数和regstats函数利用普通最小二乘法估计模型中的参数,参数的估计值受异常值的影响比较大。robustfit函数采用加权最小二乘法估计模型中的参数,受异常值的影响就比较小。robustfit函数用来作稳健的多重线性或广义线性回归分析,下面介绍robustfit函 数的用法。

1.4.1.robustfit函数的用法

robustfit函数有以下几种调用方式: b = robustfit(X,y)

b = robustfit(X,y,wfun,tune)

b = robustfit(X,y,wfun,tune,const) *b,stats+ = robustfit(…)

(1)b = robustfit(X,y)

返回多重线性回归方程中系数向量β的估计值b,这里的b为一个1p×的向量。输入参数X为自变量观测值矩阵(或设计矩阵),它是的矩阵。与regress函

数不同的是,默认情况下,robustfit函数自动在X第1列元素的左边加入一列1,不需要用户自己添加。输入参数y为因变量的观测值向量,是的列向

量。robustfit函数把y或X中不确定数据NaN作为缺失数据而忽略它们。np×1n× (2)b = robustfit(X,y,wfun,tune)

用参数wfun指定加权函数,用参数tune 指定调节常数。wfun为字符串,其可能的取值如表1-3所示。

表1-3 robustfit函数支持的加权函数 加权函数(wfun) 函数表达式 默认调节常数值

'andrews' sin(||)rwIrrπ=?< 1.339

'bisquare'(默认值) 22(1)(||1)wrIr=??< 4.685

'cauchy' 21(1)wr=+ 2.385

'fair' 1(1||)wr=+ 1.400

'huber' 1max(1, ||)wr= 1.345

'logistic' tanh()wr= 1.205 'ols'

普通最小二乘,无加权函数 无 'talwar' (||1)wIr=<

2.795 'welsch' 2rwe?= 2.985

若调用时没有指定调节常数tune,则用表1-3中列出的默认调节常数值进行计算。表1-3中加权函数中的r通过下式计算residr =tunes1-h×× 其

中resid为上一步迭代的残差向量,tune为调节常数,h是由最小二乘拟合得到的中心化杠杆值向量,s为误差项的标准差的估计。s的计算公式为:s =

MAD/0.6745,其中MAD为残差绝对值的中位数,在正态分布下,这个估计是无偏的。若X中有p列,计算MAD时,将残差绝对值向量的前p个最小值 舍去。

用户可以定义自己的权重函数,函数的输入必须是残差向量,输出是权重向量。在调用robustfit函数时,把自定义权重函数的句柄(形如@myfun)作为wfun参数传递给robustfit函数,此时必须指定tune参数。 (3)b = robustfit(X,y,wfun,tune,const)

用参数const来控制模型中是否包含常数项。若const取值为 'on' 或1,则模型中包含常数项,此时自动在X第1列的左边加入一列1,若const取值为 'off' 或0,则模型中不包含常数项,此时不改变X的值。 (4)[b,stats] = robustfit(…)

返回一个结构体变量stats,它的字段包含了用于模型诊断的统计量。stats有以下字段: ? stats.ols_s — 普通最小二乘法得出的σ的估计(RMSE); ? stats.robust_s — σ的稳健估计;

? stats.mad_s — 用残差绝对值的中位数计算σ的估计;

? stats.s — σ的最终估计,是ols_s 和robust_s的加权平均与robust_s中的最大值; ? stats.se — 系数估计的标准误差; ? stats.t — b与stats.se的比值; ? stats.p — t检验的p值;

? stats.covb — 系数向量的协方差矩阵的估计;

? stats.coeffcorr — 系数向量的相关系数矩阵的估计; ? stats.w — 稳健拟合的权重向量;

? stats.h — 最小二乘拟合的中心化杠杆值向量; ? stats.R — 矩阵X的QR分解中的R因子