调用robustfit函数作稳健回归
调用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因子
调用robustfit函数作稳健回归的更多相关文章
- 深入理解javascript系列(4):立即调用的函数表达式
本文来自汤姆大叔 前言 大家学JavaScript的时候,经常遇到自执行匿名函数的代码,今天我们主要就来想想说一下自执行. 在详细了解这个之前,我们来谈了解一下“自执行”这个叫法,本文对这个功能的叫法 ...
- [JS]深入理解JavaScript系列(4):立即调用的函数表达式
转自:汤姆大叔的博客 前言 大家学JavaScript的时候,经常遇到自执行匿名函数的代码,今天我们主要就来想想说一下自执行.在详细了解这个之前,我们来谈了解一下"自执行"这个叫法 ...
- 动态调用DLL函数有时正常,有时报Access violation的异常
动态调用DLL函数有时正常,有时报Access violation的异常 typedef int (add *)(int a,int b); void test() { hInst=LoadL ...
- Python基础(函数,函数的定义,函数的调用,函数的参数,递归函数)
1.函数 我们知道圆的面积计算公式为: S = πr2 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需要计算3个不同大小的圆的面积: r1 = 12.34 r2 = 9.08 r3 = ...
- cocos2d-x 3.0 在C++中调用lua函数
代码用的是<cocos2d-x 3.0 在lua中调用自定义类>中的代码. 在上篇的基础上进行扩充. 写lua函数 local function process_packet(user_d ...
- (转)platform_driver_register,什么时候调用PROBE函数 注册后如何找到驱动匹配的设备
platform_driver_register,什么时候调用PROBE函数 注册后如何找到驱动匹配的设备 2011-10-24 19:47:07 分类: LINUX kernel_init中d ...
- cocos2dx中使用tolua++使lua调用c++函数
一直想学学cocos2dx中如何使用tolua++工具使得lua脚本调用C++函数,今天就来搞一下,顺便记录下来: 首先,我们打开cocos2dx-2.2.4中projects下的test的VS工程, ...
- <深入理解JavaScript>学习笔记(4)_立即调用的函数表达式
前言 大家学JavaScript的时候,经常遇到自执行匿名函数的代码,今天我们主要就来想想说一下自执行.(小菜理解:的确看到好多,之前都不知道这是自执行匿名函数) 在详细了解这个之前,我们来谈了解一下 ...
- c++与js脚本交互,C++调用JS函数/JS调用C++函数
<!DOCTYPE html> <html> <body> <h1>我的第一段 JavaScript</h1> <p> Java ...
随机推荐
- "aa".equals(name)这种写法为什么就可以避免空指针
public static void main(String[] args) { String name=null; if("aa".equals(name))//这种情形,不出现 ...
- asp.net中Respons.Write()的用法
很多时候,我们为了是页面的传输速率更高.很自然回去选择脚本和ajax结合进行传值,在传值如要向页面回传数据时,可能只有一次也会是多次.一次的情况下我们可以很好的用Respons.End()方法来截取我 ...
- [cmd]linux 常用命令
1. 磁盘/文件大小中占用情况 df -h: 磁盘大小占用情况 du -h file: 文件夹大小,du -ah file文件夹内所有文件占用情况 du -sh dir: 可以查看文件夹大小,而不列出 ...
- [linux basic]--线程
/************************************************************************* > File Name: thread1.c ...
- 深度优化LNMP
优化前准备工作 Centos准备及配置 准备安装包及软件:http://pan.baidu.com/s/1chHQF 下载解压到U盘即可安装http://pan.baidu.com/s/15TUWf ...
- python实现字体闪图
!/usr/bin/env python from future import print_function import os.path import sys from optparse impor ...
- 防篡改php文件校验程序
<?php /** * 校验线上源文件是否和本地的一致 * User: Administrator * Date: 2015/11/26 * Time: 9:30 */ include_once ...
- sax,Dom,等解析方式地址 ?
Android中使用SAX对XMl文件进行解析 http://blog.csdn.net/developer_jiangqq/article/details/7197045 使用SAX技术对XML文档 ...
- Eclipse中构建Fluent风格到Formatter
The place to set this is on the "Line Wrapping" tab of the code formatting preferences pag ...
- Fatal error: Class 'GearmanClient' not found解决方法
产生原因: 没有安装PHP的gearman扩展 解决方法:1. 打开:http://pecl.php.net/package/gearman2. wget http://pecl.php.net ...