如何在 r 中执行 goldfeld-quandt 检验


Goldfeld-Quandt 检验用于确定回归模型中是否存在异方差

异方差是指回归模型中响应变量不同水平的残差分布不均匀。

如果存在异方差性,则这违反了线性回归的关键假设之一,即残差在响应变量的每个水平上均匀分散。

本教程提供了如何在 R 中执行 Goldfeld-Quandt 检验以确定给定回归模型中是否存在异方差性的分步示例。

第 1 步:创建回归模型

首先,我们将使用 R 中内置的mtcars数据集创建一个多元线性回归模型

 #fit a regression model
model <- lm(mpg~disp+hp, data=mtcars)

#view model summary
summary(model)

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 30.735904 1.331566 23.083 < 2nd-16 ***
available -0.030346 0.007405 -4.098 0.000306 ***
hp -0.024840 0.013385 -1.856 0.073679 .  
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.127 on 29 degrees of freedom
Multiple R-squared: 0.7482, Adjusted R-squared: 0.7309 
F-statistic: 43.09 on 2 and 29 DF, p-value: 2.062e-09

步骤 2:执行 Goldfeld-Quandt 检验

接下来,我们将使用lmtest包中的gqtest()函数执行 Goldfeld-Quandt 检验以确定是否存在异方差。

该函数使用以下语法:

gqtest(模型,order.by,数据,分数)

金子:

  • model:由 lm() 命令创建的线性回归模型。
  • order.by:模型的预测变量。
  • data:数据集的名称。
  • fraction*:要从数据集中删除的中心观测值的数量。

*Goldfeld-Quandt 检验的工作原理是删除位于数据集中心的多个观测值,然后测试残差分布是否与位于数据集两侧的两个结果数据集不同。中心观察。

通常,我们选择删除总观测值的大约 20%。在这种情况下,mtcars总共有32个观测值,因此我们可以选择删除中心7个观测值:

 #load lmtest library
library(lmtest)

#perform the Goldfeld Quandt test
gqtest(model, order.by = ~disp+hp, data = mtcars, fraction = 7)

	Goldfeld-Quandt test

data: model
GQ = 1.0316, df1 = 10, df2 = 9, p-value = 0.486
alternative hypothesis: variance increases from segment 1 to 2

以下是如何解释结果:

  • 检验统计量为1.0316
  • 相应的 p 值为0.486

Goldfeld-Quandt 检验使用以下原假设和备择假设:

  • 空(H 0 ) :存在同方差。
  • 替代方案 ( HA ):存在异方差。

由于 p 值不小于 0.05,因此我们无法拒绝原假设。我们没有足够的证据表明回归模型中存在异方差。

接下来做什么

如果您未能拒绝 Goldfeld-Quandt 检验的原假设,则不存在异方差,您可以继续解释原始回归的结果。

但是,如果拒绝零假设,则意味着数据中存在异方差性。在这种情况下,回归输出表中显示的标准误差可能不可靠。

有几种常见的方法可以解决此问题,包括:

1. 变换响应变量。

您可以尝试对响应变量执行转换,例如取响应变量的对数、平方根或立方根。一般来说,这可以导致异方差消失。

2. 使用加权回归。

加权回归根据拟合值的方差为每个数据点分配权重。本质上,这为具有较高方差的数据点赋予了较低的权重,从而减少了它们的残差平方。

当使用适当的权重时,加权回归可以消除异方差问题。

其他资源

如何在 R 中执行多元线性回归
如何在 R 中执行怀特检验
如何在 R 中执行 Breusch-Pagan 测试

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注