如何在 r 中执行怀特检验(附示例)
怀特检验用于确定回归模型中是否存在异方差性。
异方差是指回归模型中响应变量不同水平上残差的离散程度不均匀,这违反了线性回归的关键假设之一,即残差在响应变量的各个水平上均匀分散。
本教程介绍如何在 R 中执行怀特检验以确定异方差性是否是给定回归模型中的问题。
示例:R 中的白色测试
在此示例中,我们将使用 mtcars 内置 R 数据集拟合多元线性回归模型。
一旦我们拟合了模型,我们将使用lmtest库中的bptest函数来执行 White 测试,以确定是否存在异方差。
步骤 1:拟合回归模型。
首先,我们将使用mpg作为响应变量,使用disp和hp作为两个解释变量来拟合回归模型。
#load the dataset data(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:执行怀特测试。
接下来,我们将使用以下语法执行怀特检验以确定是否存在异方差:
#load lmtest library library(lmtest) #perform White's test bptest(model, ~ disp*hp + I(disp^2) + I(hp^2), data = mtcars) studentized Breusch-Pagan test data: model BP = 7.0766, df = 5, p-value = 0.215
以下是如何解释结果:
- 检验统计量为X2 = 7.0766 。
- 自由度为5 。
- 相应的 p 值为0.215 。
怀特检验使用以下原假设和备择假设:
- 空(H 0 ) :存在同方差。
- 替代方案 ( HA ):存在异方差。
由于 p 值不小于 0.05,因此我们无法拒绝原假设。我们没有足够的证据表明回归模型中存在异方差。
接下来做什么
如果您未能拒绝怀特检验的原假设,则不存在异方差,您可以继续解释原始回归的结果。
但是,如果拒绝零假设,则意味着数据中存在异方差性。在这种情况下,回归输出表中显示的标准误差可能不可靠。
有几种常见的方法可以解决此问题,包括:
1. 变换响应变量。
您可以尝试对响应变量执行转换,例如取响应变量的对数、平方根或立方根。一般来说,这可以导致异方差消失。
2. 使用加权回归。
加权回归根据拟合值的方差为每个数据点分配权重。本质上,这为具有较高方差的数据点赋予了较低的权重,从而减少了它们的残差平方。当使用适当的权重时,可以消除异方差问题。