stata学习笔记|异方差问题

article/2025/11/5 8:07:54

异方差无法用OLS进行估计的根源问题:方差较大的数据包含的信息量较小,但OLS是对所有数据进行相同的处理。异方差的问题并不会影响估计量的无偏性、一致性、渐近正态性,只是效率较低使得t检验和F检验失效。

说白了就是回归出来的系数不会改变,只是可能会导致显著性的结果不准确。

而选用GLS以及WLS进行回归可以对不同特征的数据进行不同的处理以提高估计效率。

理论知识

  • 异方差的检验

残差图、怀特检验、BP检验

  • 异方差的处理
  1. OLS+标准误(robust)的方式
  2. 广义最小二乘法(GLS)(相比于上一种方法更为有效):广义最小而成的中心思想就是将模型进行变量转换,进而使得扰动项满足假定。
  3. 加权最小二乘法(WLS):是GLS的特例
  4. 可行广义最小二乘法(FGLS):GLS和WLS的问题在于,在运算中是已知总体的扰动项的协方差矩阵的,但事实上这很难实现,故FGLS则可以根据样本数据估计协方差矩阵。
  • 如何选择处理方法

在实际运用中,主要是在OLS+标准误与FGLS之间选择,FGLS的最大前提就是对协方差矩阵的一致估计是准确的,但是如果并不准确,则从一开始就是错误的,进而导致不正确的统计推断。而OLS+标准误的方法对回归系数以及标准误的估计都是一致的,对协方差的估计是否准确并无要求。故在一般情况下,仍然选择更为稳健的OLS+标准误方法,而不是FGLS,但在协方差矩阵估计正确的条件下,显然是FGLS更为有效。

Stata操作

  • 异方差的检验(均需要先进行回归

1、残差图

观察时看是否出现残差值是否在一个数值附近,如下图能够明显看出残差在纵轴上的数值波动较大

///残差与拟合值

rvfplot 

///残差与某个变量

rvpplot varname

2、怀特检验

看表格上面的Prob>chi2的p值为0.000,故拒绝同方差的假设,即存在异方差问题。

 estat imtest,white

3、BP检验

观察p值如果小于0.01,则表示强烈拒绝原假设,即方差不同

 ///使用拟合值y进行检验

estat hettest

///使用所有解释变量

estat hettest,rhs

///使用个别指定解释变量

estat hettest [varlist]

///前面的BP检验自身是以扰动项服从正态分布为假定前提的,后可放宽至独立同分布(iid)

///(该方法较为常用

estat hettest,iid

estat hettest,rhs iid

estat hettest [varlist],iid

  • WLS(需要经过一系列的计算得到方差的估计值

可直接保留至do文件

///qui 表示不显示结果,因为我们并不需要这个回归结果

qui reg y x

///计算残差,res是residual的简称,即预测残差

predict e1,res

///因为残差是标准差,需要进行平方得到方差

g e2=e1^2

///取对数进行辅助回归,noc表示不显示常数项

///在此次回归中,可以通过R方的大小判断x解释方差变动的比例,进而进一步判断是否存在方差随着解释变量变动而变动的现象

g lne2=log(e2)

reg lne2 x,noc

///计算回归后拟合出来的方差项,此处predict 默认得到拟合值,并后面接的新变量名默认为你拟合值的变量名

predict lne2f

///去除对数化

g e2f=exp(lne2f)

///最终进行WLS回归

reg y x [aw=1/e2f]


http://chatgpt.dhexx.cn/article/MxEZToxZ.shtml

相关文章

计量经济学及Stata应用 陈强 第七章异方差习题7.3

7.3恩格尔曲线是否存在异方差?数据集food.dta包含有关每周食物开支(food_exp)与每周收入(income)的40个观测值。 (1)将food_exp与income的散点图与线性拟合图画在一起。根据此图,是…

R费希尔精确检验(Fisher‘s exact test)

R费希尔精确检验(Fishers exact test) Fisher精确检验是一种显著性检验(significance想),当样本量较小时,用它来代替22表的卡方检验。 # 如何在R中进行Fisher精确测试。 # 为了在R中进行Fisher检验,我们只需要一个22的数据集。使用下面的代码,我生成一个仿真的22数据…

超几何分布检验(hypergeometric test)与费歇尔精确检验(fisher‘s exact test)

1,超几何分布检验常用来对venn图两个圈overlap的显著性进行检验,费歇尔精确检验常用来对2x2的列联表进行检验。 2,假设有如下的统计数据: smokenon-smokelung cancer106normal112 现在对其进行费歇尔精确检验,有两种…

【Python计量】异方差性的检验

目录 一、画残差图 二、BP检验 (一)手动编制函数进行BP检验 (二)调用statsmodels的函数进行BP检验 三、怀特检验 (一)手动编制函数进行White检验 (二)调用statsmodels的函数进…

stata 异方差专题【计量经济系列(四)】

stata 异方差专题【计量经济系列(四)】 文章目录 1. 异方差检验方法2. 散点图法3. BP检验4. 怀特检验5. FWLS 可行权的最小二乘法6. 小练习 ʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯…

Python的strip()函数

在python API中这样解释strip()函数: 声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符 s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符 …

.strip().split('t')和.strip().split()

.strip().split(t) line nihao, zhenhao,dajiahao print(line).strip().split(t) .strip().split() line nihao, zhenhao,dajiahao print(line.strip().split())

Python Strip()使用详解

一、函数定义 可使用快捷键ctrlb,查看函数的定义。 函数功能:默认删除字符前后的空格,如果有指定字符删除自定字符前后指定字符。 注意,该函数只能删除字符前后的字符,不能删除字符中间的字符。 二、默认情况下删除…

python中的strip()和split()

一.strip() strip()简单来说就是: 返回删除前导和尾随空格的字符串副本。如果给定了chars而不是None,则删除chars中的字符。 下面来举几个例子: 1.strip()括号内无任何字符 2.strip()括号内存在字符 二.split() split()函数通常是对字符…

python中strip的使用

今天聊聊python去除字符串空格的函数:strip()和replace() 1.strip(): 函数功能描述:Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 注意&#…

Python 中strip()方法怎么用?

Python strip() 方法用于去除字符串开头和结尾处指定的字符(默认为空格或换行符)或字符序列,不会去除字符串中间对应的字符。 相关函数有lstrip()和rstrip() 。用法与strip()相同。 lstrip()方法用于去除左边(开始)的空白字符; rstrip()方法用于去除右边(末尾)的…

Linux中source filename .(点)filename ./filename sh filename的区别

在shell中source filename 和 . filename是一样的,但source和 ./filename.sh的执行结果有很大区别,借用一张网上的图。如下 可以看到通过./filename.sh执行shell脚本,脚本内执行的命令和设置的环境变量不影响执行shell脚本的shell环境变量…

is not valid as filename in directory

svn在checkout/update动作时报错:is not valid as filename in directory 进入版本库浏览器查看发现有文件或文件夹名称带空格导致的。 解决方案: 在svn服务器中将文件名按要求命名规范,再本地执行update

git报错Filename too long

描述 碰见一个小小问题,Git在拉代码的时候提示Filename too long,具体如图 刚开始,一开始我是使用git自带的那个工具有问题了,然后我就下载了一个tortoisegit,结果还是有问题,这可是22G文件,我…

__dirname与__filename

(1) __filename变量 node.js中,在任何模块文件内部,可以使用__filename变量获取当前模块文件的带有完整绝对路径的文件名。 在应用程序根目录下新建app.js文件,其中代码如下所示。 var testModule1require(‘./tes…

with open()as filename

使用文件用with的好处 1.会在运行完后自动关闭文件 2.很简单 打开文件并读取 with open(c.xls,r) as t1:content t1.read()print(content) with open(c.xls,r) as t1:content t1.read()con t1.readlines()print(content)print(con) open参数的解释: &#…

__dirname和__filename

1. 概念 __dirname 可以用来动态获取当前文件所属目录的绝对路径__filename 可以用来动态获取当前文件的绝对路径,包含当前文件__dirname 和 __filename 是不受执行node命令所属路径影响的 2. 代码演示 目录结构 app.js文件,使用node app.js 命令执行…

Linux利用filename=${fileuser:-filename}设置文档名

该语句的意思是:如果输入fileuser的有值的话,将该值付给filename 如果在读入变量fileuser的时候直接回车,意思是fileuser里面没有值,那么将”filename”赋予给filename。 以《鸟哥的linux私房菜》chap13中为例,创建的…

Already included file name .......

vue项目修改.vue的文件名之后会发生引入文件时报错 类似于这样 解决办法: 快捷键:Ctrl shift P,打开:“命令面板”,输入:重新加载 详情请见:Already included file name。。。。。Root file…

source 命令的用法(与 sh Filename、./Filename的区别)

source 命令简单来说,就是读取脚本里的语句,并在当前Shell中执行,脚本里面所有新建、改变变量的语句都会保存在当前shell里。 目录 1、source 命令的使用方法 2、source命令的妙用 3、source Filename 和 ./Filename的区别 1、source 命令…