stata具有异方差误差的区间回归
原文链接:http://tecdat.cn/?p=6283
在Stata的实现中,可以使用鲁棒选项,当残差方差不恒定时,可以使用常规线性回归。使用稳健选项不会更改参数估计值,但使用三明治方差估计器计算标准误差(SE)。在这篇文章中,我将简要介绍使用稳健的区间回归的基本原理,并强调如果残差方差不是常数,与常规线性回归不同,则区间回归估计是有偏差的。
用于常规线性回归的稳健SE
在常规线性回归中,如果残差方差不是常数,则回归参数估计值仍然是无偏的,但SE则不然。处理SE中偏差的一种途径是使用Huber / White三明治SE。为了说明这一点,我们生成了一些简单的(X,Y)数据,其中Y遵循给定X的线性回归,但是残差方差是X的函数,因此违反了常数方差假设:
clear
set seed 1234
set obs 100000
gen x = 3 * runiform()
gen res_sd = exp(x)
gen y = x + res_sd * rnormal()
如果我们然后运行线性回归,首先没有robust选项,然后使用,我们获得:
. reg y x
Source | SS df MS Number of obs = 100000
-------------+------------------------------ F( 1, 99998) = 1188.55
Model | 78897.8401 1 78897.8401 Prob > F = 0.0000
Residual | 6638041.59 99998 66.3817435 R-squared = 0.0117
-------------+------------------------------ Adj R-squared = 0.0117
Total | 6716939.43 99999 67.170066 Root MSE = 8.1475
------------------------------------------------------------------------------
y | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
x | 1.027518 .0298045 34.48 0.000 .9691014 1.085934
_cons | -.0177612 .0514732 -0.35 0.730 -.1186481 .0831258
------------------------------------------------------------------------------
. reg y x, robust
Linear regression Number of obs = 100000
F( 1, 99998) = 713.39
Prob > F = 0.0000
R-squared = 0.0117
Root MSE = 8.1475
------------------------------------------------------------------------------
| Robust
y | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
x | 1.027518 .0384705 26.71 0.000 .9521162 1.102919
_cons | -.0177612 .0359651 -0.49 0.621 -.0882524 .0527301
------------------------------------------------------------------------------
用于生成数据的Y和X之间的真实回归系数是1,并且我们看到out估计是无偏的(接近1),尽管非恒定的残差方差。基于模型和鲁棒SE之间的差异是由于鲁棒SE松弛恒定方差假设的事实,该假设违反了这个(大)数据集。
区间回归
如上所述,区间回归允许我们处理这样的情况:对于某些记录,结果的值未被精确观察,但受到间隔,左或右删失的影响。区间回归通过计算结果值位于已知范围内的相应概率来包括来自删失记录的似然贡献来适应这一点。例如,如果我们只知道特定记录/个体的结果值大于2,则Stata计算对应的可能性贡献。
Stata的intreg命令还允许使用鲁棒选项,这为我们提供了参数估计的抽样方差的有效估计。有人可能会合理地认为,即使错误具有非恒定方差,这样做也可以让我们获得有效的推论。然而,与常规线性回归的情况不同,事实证明,当误差具有非恒定方差时,参数估计通常是有偏差的。这是因为在似然计算中对删失观察的处理依赖于正态性的分布假设和残差的恒定方差。为了凭经验证明这一点,我们可以采用我们的模拟数据集,审查一些结果值,并使用intreg来拟合回归模型:
. replace =2 if y>2
(38110 real changes made)
. gen depvar2=y
(38110 real changes made, 38110 to missing)
.
Fitting constant-only model:
Iteration 0: log likelihood = -247972.92
Iteration 1: log likelihood = -236859.06
Iteration 2: log likelihood = -236635.97
Iteration 3: log likelihood = -236635.67
Iteration 4: log likelihood = -236635.67
Fitting full model:
Iteration 0: log likelihood = -248343.77
Iteration 1: log likelihood = -236509.35
Iteration 2: log likelihood = -236241.11
Iteration 3: log likelihood = -236240.65
Iteration 4: log likelihood = -236240.65
Interval regression Number of obs = 100000
LR chi2(1) = 790.03
Log likelihood = -236240.65 Prob > chi2 = 0.0000
------------------------------------------------------------------------------
| Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
x | -.7679952 .0268782 -28.57 0.000 -.8206754 -.715315
_cons | 2.222817 .0452328 49.14 0.000 2.134162 2.311471
-------------+----------------------------------------------------------------
/lnsigma | 1.929401 .0030675 628.97 0.000 1.923389 1.935414
-------------+----------------------------------------------------------------
sigma | 6.885387 .0211212 6.844114 6.926908
------------------------------------------------------------------------------
Observation summary: 0 left-censored observations
61890 uncensored observations
38110 right-censored observations
0 interval observations
X的截距和系数现在分别从它们的真实值0和1偏差(估计值为2.22和-0.77) - 这是非常数残差方差的结果。因此,对于标准线性回归,非常数残差方差不会偏差估计,对于区间回归则不然。我们现在可以继续使用强大的标准错误:
Fitting constant-only model:
Iteration 0: log pseudolikelihood = -247972.92
Iteration 1: log pseudolikelihood = -236859.06
Iteration 2: log pseudolikelihood = -236635.97
Iteration 3: log pseudolikelihood = -236635.67
Iteration 4: log pseudolikelihood = -236635.67
Fitting full model:
Iteration 0: log pseudolikelihood = -248343.77
Iteration 1: log pseudolikelihood = -236509.35
Iteration 2: log pseudolikelihood = -236241.11
Iteration 3: log pseudolikelihood = -236240.65
Iteration 4: log pseudolikelihood = -236240.65
Interval regression Number of obs = 100000
Wald chi2(1) = 751.14
Log pseudolikelihood = -236240.65 Prob > chi2 = 0.0000
------------------------------------------------------------------------------
| Robust
| Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
x | -.7679952 .028022 -27.41 0.000 -.8229173 -.7130731
_cons | 2.222817 .03622 61.37 0.000 2.151827 2.293807
-------------+----------------------------------------------------------------
/lnsigma | 1.929401 .0062859 306.94 0.000 1.917081 1.941722
-------------+----------------------------------------------------------------
sigma | 6.885387 .0432812 6.801078 6.970741
------------------------------------------------------------------------------
Observation summary: 0 left-censored observations
61890 uncensored observations
38110 right-censored observations
0 interval observations
在这里使用鲁棒确实在某种程度上改变了截距/常数的SE,但问题是使用鲁棒不会影响仍然存在偏差的参数估计。
结论
我们基于区间回归的估计(假设正态分布的常数方差误差)通常会有偏差。这不是区间回归本身的缺陷,而仅仅是处理审查的反映,对错误的分布假设比标准线性回归更重要。
- 晚绑定场景下对象属性赋值和取值可以不需要PropertyInfo
- 一个关于反序列化的小问题
- 两个简单的扩展方法:TrimPrefix和TrimSuffix
- 谈谈Nullable<T>的类型转换问题
- ASP.NET MVC是如何运行的(3): Controller的激活
- ASP.NET MVC是如何运行的[2]: URL路由
- 一个简单的小程序演示Unity的三种依赖注入方式
- 在Entity Framework中使用存储过程(三):逻辑删除的实现与自增长列值返回
- 在Entity Framework中使用存储过程(四):如何为Delete存储过程参数赋上Current值?
- ASP.NET MVC是如何运行的(4): Action的执行
- ASP.NET MVC是如何运行的[1]: 建立在“伪”MVC框架上的Web应用
- 在Entity Framework中使用存储过程(五):如何通过存储过程维护多对多关系?
- ASP.NET MVC下基于异常处理的完整解决方案
- 不到40行代码构建正则表达式引擎
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android Activity 活动的生命周期
- Android学习笔记,不断更新
- cJSON,c语言的JSON库!
- 自己动手实现4大免费聊天机器人:小冰、图灵、腾讯、青云客
- Android Spinner下拉框的基本使用
- hadoop本地运行的两个案例。官方Grep案例、官方WordCount案例。
- 腾讯智能闲聊机器人详细开发教程
- 用PyTorch实现MNIST手写数字识别(非常详细)
- 手把手教你从零开始用Java写爬虫
- STM32 cjson的GBK/UTF-8/UNICODE转换、显示中文、GBK字库
- 都说Linux很重要,你会几个Linux命令?来看看这道面试题目。
- 使用VisualGDB将Keil项目导入VisualStudio
- 小白学图像 | Group Normalization详解+PyTorch代码
- 使用VisualGDB开发Keil MDK-ARM项目
- 保姆级教程:还愁不会搭建伪分布式吗?(其实很简单)