如何在 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. 使用加权回归。
加权回归根据拟合值的方差为每个数据点分配权重。本质上,这为具有较高方差的数据点赋予了较低的权重,从而减少了它们的残差平方。
当使用适当的权重时,加权回归可以消除异方差问题。