异方差的Stata操作(计量114)

news2024/11/16 5:34:29
以数据集 nerlove.dta 为例,演示如何在 Stata 中处理异方差。
此数据集包括以下变量:
tc ( 总成本 )
q ( 总产量 )
pl ( 工资率 )
pk ( 资本的使用成本 )
pf ( 燃料价格 )
相应的对数值 lntc lnq lnpl lnpk lnpf

1.画残差图

  • 通过观察残差图,如果残差随着拟合值或某个解释变量的变化而呈现系统性的变化趋势(如增大或减小),则可能表明存在异方差性。异方差性意味着误差项的方差不是常数,而是随着某些变量的变化而变化。
首先,以 OLS 估计对数形式的成本函数:
use nerlove.dta,clear
reg lntc lnq lnpl lnpk lnpf
完成回归后,可使用以下命令得到残差图:
rvfplot                                         (residual-versus-fitted plot)
rvpplot varname                        (residual-versus-predictor plot)
varname :是变量的名字,把它代称自己数据的名字。
  • 初步考察异方差,画残差与拟合值的散点图:        rvfplot

               当总成本 (lntc 的拟合值 ) 较小时,扰动项的方差较大。
  • 考察残差与解释变量 lnq 的散点图:                     rvpplot lnq

               当产量 (lnq) 越小时,扰动项的方差越大。
    初步判断是复杂性的异方差

2.BP检验

  • BP检验的基本思想是通过检验残差的平方与自变量之间是否存在显著的相关关系来判断模型的异方差性。在标准的线性回归模型中,假设误差项(即残差)的方差是恒定的。然而,在实际应用中,这一假设可能不成立,即存在异方差性。BP检验通过构建一个辅助回归模型来检验这种异方差性。
Stata 中完成回归后,可使用以下命令进行 BP检验:
hettest // 对所有变量进行 BP 检验         
或:estat hettest,iid rhs
其中,“ estat ”指 post-estimation statistics( 估计后统计量 ),即在完成估计后所计算的后续统计量。
“hettest” 表示 heteroskedasticity test
选择项 ”iid” 表示仅假定数据为 iid (独立同分布),而无须正态假定。
选择项”rhs”表示使用方程右边的全部解释变量进行辅助回归,默认使用拟合值 \hat{y} 进行辅助回归。
如想指定使用某些解释变量进行辅助回归,可使用命令:
hettest variable // 对指定变量进行 BP 检验
或: estat hettest [varlist],iid
其中, ”[varlist]” 为指定的变量清单;而 ”[ ]”表示其中的内容可出现在命令中,也可不出现。
  • 回到 Nerlove(1963)的例子:
  • quietly reg lntc lnq lnpl lnpk lnpf       //其中,前缀(prefix) ”quietly”表示执行此命令,但不在Stata的结果窗口显示运行结果
  • 首先,使用拟合值 \hat{y} 进行 BP 检验        estat hettest, iid

  • 其次,使用所有解释变量进行 BP 检验:  estat hettest, iid rhs

  • 最后,使用变量 lnq 进行 BP 检验:          estat hettest lnq,iid

各种形式 BP 检验的 𝑝 值都等于 0.0000,故强烈拒绝同方差的原假设,认为存在异方差。

3.怀特检验

  • 基本思想是如果模型存在异方差性,那么残差的平方应该与模型的解释变量有关。
  • 构造一个辅助回归模型,以残差的平方作为因变量,将原始回归模型中的解释变量及其平方项和交叉项作为自变量。如果辅助回归模型的解释变量对残差平方没有影响,即原假设成立,那么辅助回归模型的R平方应该很小。
在 Stata 完成回归后,可使用如下命令进行怀特检验:  
whitetst
或: estat imtest,white
其中, ”imtest” information matrix test( 信息矩阵检验 )
  • 继续以Nerlove(1963)为例:
  • estat imtest,white

 4.稳健标准误

稳健标准误在 Stata 中十分简单,在命令 reg之后加选择项加“ robust ”即可
reg lntc lnq lnpl lnpk lnpf, robust          // 截面数据
reg lntc lnq lnpl lnpk lnpf, vce(hc2)      // 小样本下,更稳健
reg lntc lnq lnpl lnpk lnpf, vce(hc3)      // 小样本下,更稳健
混合截面数据或面板数据,应使用 vce (cluster clustvar) 选项。

5.FGLS (可行的GLS估计量)

纠正异方差的 FGLS 程序:
① 利用估计模型  𝑦 = 𝛽 0 + 𝛽 1 𝑥 1 + 𝛽 2 𝑥 2 + ⋯ + 𝛽 𝑘 𝑥 𝑘 + 𝜇 得到 OLS 的残差 \hat{\mu }
② 对残差 \hat{\mu } 进行平方,然后再取自然对数得到 log(\hat{\mu }^{2})
③ 利用log(\hat{\mu }^{2})对 𝑥 1 , 𝑥2, … . , 𝑥𝑘进行回归,得到拟合值  \hat{g}
④ 获得拟合值的指数:\hat{h}=exp (\hat{g})
⑤ 以 1/\hat{h} 为权数,用 WLS 估计方程 𝑦 = 𝛽 0 + 𝛽 1 𝑥 1 + 𝛽 2 𝑥 2 + ⋯ + 𝛽 𝑘 𝑥 𝑘 + 𝜇
得到扰动项方差的估计值 \hat{\sigma} _{i}^{2} 后,可作为权重进行 WLS 估计。
假设 \hat{\sigma} _{i}^{2} 存储在变量 var 上,可通过如下 Stata 命令来实现 WLS
reg y x1 x2 x3 [aw=1/var]
其中,“ aw” 表示 analytical weight ,为扰动项方差 (不是标准差 ) 的倒数。
  • 继续以 Nerlove(1963)为例。
  • 首先计算残差,并记为 e1
    quietly reg lntc lnq lnpl lnpk lnpf
    predict e1,residual
  • 其次,生成残差的平方,并记为 e2:
    gen e2=e1^2
  • 将残差平方取对数,
    gen lne2=log(e2)
  • 假设 ln\hat{\sigma} _{i}^{2}  为变量 lnq 的线性函数,进行辅助回归:
    reg lne2 lnq lnpl lnpk lnpf
  • 计算辅助回归的拟合值,并记为 lne2f:
    predict lne2f
  • 去掉对数后,即得到方差的估计值,并记为 e2f
    gen e2f=exp(lne2f)
  • 使用方差估计值的倒数作为权重,进行 WLS 回归:
    reg lntc lnq lnpl lnpk lnpf [aw=1/e2f]

使用 OLS 时,变量 lnpl 𝑝 值为 0.13 ,在 10%的水平上也不显著;使用 WLS 后,该变量的 𝑝值变为 0.002 ,在 1% 的水平上显著不为 0
由于 Nerlove(1963)数据存在明显的异方差,使用WLS 后提高了估计效率。
  • 如担心条件方差函数的设定不准确,导致加权后的新扰动项仍有异方差,可使用稳健标准误进行 WLS 估计: reg lntc lnq lnpl lnpk lnpf [aw=1/e2f],r

无论是否使用稳健标准误, WLS 的回归系数都相同,但标准误有所不同。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1698986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

H3CNE-7-TCP和UDP协议

TCP和UDP协议 TCP:可靠传输,面向连接 -------- 速度慢,准确性高 UDP:不可靠传输,非面向连接 -------- 速度快,但准确性差 面向连接:如果某应用层协议的四层使用TCP端口,那么正式的…

【代码随想录训练营】【Day 27 and 28】【回溯1-2】| Leetcode 77, 216, 17

【代码随想录训练营】【Day 27 and 28】【回溯1-2】| Leetcode 77, 216, 17 需强化知识点 组合问题:感受遍历的横向和纵向 题目 77. 组合 注意path要深拷贝 class Solution:def combine(self, n: int, k: int) -> List[List[int]]:result []def backtrac…

Thymeleaf 搭建家居网首页

文章目录 1.引入Thymeleaf sunliving-commodity模块1.在resources目录下引入Thymeleaf 所需资源2.pom.xml引入Thymeleaf依赖3.application.yml 关闭缓存,使页面实时刷新4.在application-prod.yml开启缓存5.编写com/sun/sunliving/commodity/web/IndexController.jav…

VLAN高级特性

1.VLAN聚合 (1)VLAN聚合产生的技术背景 (2)VLAN聚合概述 (3)VLAN聚合的原理 多个Sub-VLAN共享一个网关地址,节约了子网网络地址、子网定向广播地址、子网缺省网关地址,且各Sub-VLAN…

基于51单片机的超声波液位测量与控制系统

基于51单片机液位控制器 (仿真+程序+原理图PCB+设计报告) 功能介绍 具体功能: 1.使用HC-SR04测量液位,LCD1602显示; 2.当水位高于设定上限的时候,对应声光报警报警&am…

【同构字符串】python

思路: 先记录同一个值出现的次数,再将字典中的值取出,比较2个列表即可 代码: class Solution:def isIsomorphic(self, s: str, t: str) -> bool:dit1dict()dit2dict()for i in range(len(s)):if s[i] not in dit1:dit1[s[i…

SQL Server2019安装步骤教程(图文)_最新教程

一、下载SQL Server2019 1.到微软官网下载SQL Server Developer版本,官网当前的2019版本下载需要注册账号。 不想注册的朋友,可以选择从网盘下载:点击此处直接下载 2.下载之后先解压,解压后执行exe安装程序。打开之后的界面如下…

下载 Hugging Face 中的模型文件

下载 Hugging Face 中的模型文件 1. Hugging Face Hub2. ggerganov/whisper.cpp3. 点击图标下载文件4. Clone this model repository5. Using the Hugging Face Client Library6. Using GitReferences 1. Hugging Face Hub The Hugging Face Hub is a platform with over 350k…

linux 常用命令:find grep ps netstat sudo df du rm

rm 命令 删除 -r 是递归参数(recursive),用于删除目录及其内容。如果不加这个参数,rm 命令无法删除非空目录。-f 是强制参数(force),用于强制删除文件或目录,不会进行任何确认提示…

【fastapi+mongodb】使用motor操作mongodb

上一篇文章,我们在电脑上安装了mongodb数据库。这篇文章,我们在fastapi后端使用motor操作mongodb 如果你还没看过上一篇文章,链接在这里:【MongoDB】安装与使用 安装 motor motor 是一个用于操作 mongodb 数据库的 python 库&a…

【ai】pycharm安装langchain 相关module

pycharm module install 【Python学习 】一篇文章教你PyCharm如何快速安装module 【python】pycharm如何安装python的模块包版本 2024.1.2 RC2 找到当前的虚拟项目 找到解释器 我现在配置为专门为openai-start 准备的3.10 版本+ 号可以找到模块

C++标准库中string的底层实现方式

对于C中 std::string 的一些基本功能和用法,我们应该都很熟悉。但它底层到底是如何实现的呢? 其实在 std::string 的历史中,出现过几种不同的方式。下面我们来一一揭晓。 我们可以从一个简单的问题来探索,一个 std::string 对象占据的内存空…

JavaSE 学习记录

1. Java 内存 2. this VS super this和super是两个关键字,用于引用当前对象和其父类对象 this 关键字: this 关键字用于引用当前对象,即调用该关键字的方法所属的对象。 主要用途包括: 在类的实例方法中,通过 this …

鸿蒙ArkTS声明式开发:跨平台支持列表【触摸事件】

触摸事件 当手指在组件上按下、滑动、抬起时触发。 说明: 开发前请熟悉鸿蒙开发指导文档: gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独…

Spring从零开始学使用系列(四)之@PostConstruct和@PreDestroy注解的使用

如果各位老爷觉得可以,请点赞收藏评论,谢谢啦!! 文章中涉及到的图片均由AI生成 公众号在最下方!!! 目录 1. 介绍 1.1 PostConstruct概述 1.2 PreDestroy概述 2. 基本用法 2.1 注册CommonAnn…

Docker进入容器查看内容并从容器里拷贝文件到宿主机

工作中需要从docker正在运行的镜像中复制文件到宿主机,于是便将这个过程记录了下来。 (1)查看正在运行的容器 通过以下命令,可以查看正在运行的容器: docker ps (2)进入某个容器执行脚本 我…

Pytest对协程异步函数进行单元测试

安装 安装基础包 pytest,pytest-asyncio pip install pytest pytest-asyncio测试: pytest -s -v ./python-code/do-async/aiohttp_session_pytest.py书写规范 类名必须以 Test 开头方法和函数名必须以test开头 class TestAddFunc(object): # 测试…

【mysql】in和exists的区别,not in、not exists、left join的相互转换

【mysql】in和exists的区别,not in、not exists、left join的相互转换 【一】in介绍【1】in中数据量的限制【2】null值不参与in或not in,也就是说in and not in 并不是全量值,排除了null值【3】in的执行逻辑 【二】exists介绍【1】exists no…

学 Go 具体能干什么?

学习 Go (Golang) 后,你可以从事许多不同的工作和项目,Go 语言以其高性能、并发处理和简洁的语法而闻名,特别适合以下几个领域: 1. 后端开发 Go 在后端开发中非常流行,特别适合构建高性能的 Web 服务和 API。 Web 框…

前端开发-添加公用的ts文件,并在Vue文件中引用

一般我们把页面要用的公用函数写在一个ts文件中 通过调用这个ts文件让我们可以在vue文件中使用函数 Eg:我们现在创建一个formRules.ts文件 然后在我们需要调用该函数体的vue文件中 import { required } from "/utils/formRules";有可能语法一开始会提示…