Test for constant variance. It assumes that the error terms are normally distributed.
Usage
ols_test_breusch_pagan(
model,
fitted.values = TRUE,
rhs = FALSE,
multiple = FALSE,
p.adj = c("none", "bonferroni", "sidak", "holm"),
vars = NA
)
Arguments
- model
An object of class
lm
.- fitted.values
Logical; if TRUE, use fitted values of regression model.
- rhs
Logical; if TRUE, specifies that tests for heteroskedasticity be performed for the right-hand-side (explanatory) variables of the fitted regression model.
- multiple
Logical; if TRUE, specifies that multiple testing be performed.
- p.adj
Adjustment for p value, the following options are available: bonferroni, holm, sidak and none.
- vars
Variables to be used for heteroskedasticity test.
Value
ols_test_breusch_pagan
returns an object of class "ols_test_breusch_pagan"
.
An object of class "ols_test_breusch_pagan"
is a list containing the
following components:
- bp
breusch pagan statistic
- p
p-value of
bp
- fv
fitted values of the regression model
- rhs
names of explanatory variables of fitted regression model
- multiple
logical value indicating if multiple tests should be performed
- padj
adjusted p values
- vars
variables to be used for heteroskedasticity test
- resp
response variable
- preds
predictors
Details
Breusch Pagan Test was introduced by Trevor Breusch and Adrian Pagan in 1979. It is used to test for heteroskedasticity in a linear regression model. It test whether variance of errors from a regression is dependent on the values of a independent variable.
Null Hypothesis: Equal/constant variances
Alternative Hypothesis: Unequal/non-constant variances
Computation
Fit a regression model
Regress the squared residuals from the above model on the independent variables
Compute \(nR^2\). It follows a chi square distribution with p -1 degrees of freedom, where p is the number of independent variables, n is the sample size and \(R^2\) is the coefficient of determination from the regression in step 2.
References
T.S. Breusch & A.R. Pagan (1979), A Simple Test for Heteroscedasticity and Random Coefficient Variation. Econometrica 47, 1287–1294
Cook, R. D.; Weisberg, S. (1983). "Diagnostics for Heteroskedasticity in Regression". Biometrika. 70 (1): 1–10.
See also
Other heteroskedasticity tests:
ols_test_bartlett()
,
ols_test_f()
,
ols_test_score()
Examples
# model
model <- lm(mpg ~ disp + hp + wt + drat, data = mtcars)
# use fitted values of the model
ols_test_breusch_pagan(model)
#>
#> Breusch Pagan Test for Heteroskedasticity
#> -----------------------------------------
#> Ho: the variance is constant
#> Ha: the variance is not constant
#>
#> Data
#> -------------------------------
#> Response : mpg
#> Variables: fitted values of mpg
#>
#> Test Summary
#> ---------------------------
#> DF = 1
#> Chi2 = 1.429672
#> Prob > Chi2 = 0.231818
# use independent variables of the model
ols_test_breusch_pagan(model, rhs = TRUE)
#>
#> Breusch Pagan Test for Heteroskedasticity
#> -----------------------------------------
#> Ho: the variance is constant
#> Ha: the variance is not constant
#>
#> Data
#> --------------------------
#> Response : mpg
#> Variables: disp hp wt drat
#>
#> Test Summary
#> ----------------------------
#> DF = 4
#> Chi2 = 1.513808
#> Prob > Chi2 = 0.8241927
# use independent variables of the model and perform multiple tests
ols_test_breusch_pagan(model, rhs = TRUE, multiple = TRUE)
#>
#> Breusch Pagan Test for Heteroskedasticity
#> -----------------------------------------
#> Ho: the variance is constant
#> Ha: the variance is not constant
#>
#> Data
#> --------------------------
#> Response : mpg
#> Variables: disp hp wt drat
#>
#> Test Summary (Unadjusted p values)
#> ----------------------------------------------
#> Variable chi2 df p
#> ----------------------------------------------
#> disp 1.2355345 1 0.2663334
#> hp 0.9209878 1 0.3372157
#> wt 1.2529988 1 0.2629805
#> drat 1.1668486 1 0.2800497
#> ----------------------------------------------
#> simultaneous 1.5138083 4 0.8241927
#> ----------------------------------------------
# bonferroni p value adjustment
ols_test_breusch_pagan(model, rhs = TRUE, multiple = TRUE, p.adj = 'bonferroni')
#>
#> Breusch Pagan Test for Heteroskedasticity
#> -----------------------------------------
#> Ho: the variance is constant
#> Ha: the variance is not constant
#>
#> Data
#> --------------------------
#> Response : mpg
#> Variables: disp hp wt drat
#>
#> Test Summary (Bonferroni p values)
#> ----------------------------------------------
#> Variable chi2 df p
#> ----------------------------------------------
#> disp 1.2355345 1 1.0000000
#> hp 0.9209878 1 1.0000000
#> wt 1.2529988 1 1.0000000
#> drat 1.1668486 1 1.0000000
#> ----------------------------------------------
#> simultaneous 1.5138083 4 0.8241927
#> ----------------------------------------------
# sidak p value adjustment
ols_test_breusch_pagan(model, rhs = TRUE, multiple = TRUE, p.adj = 'sidak')
#>
#> Breusch Pagan Test for Heteroskedasticity
#> -----------------------------------------
#> Ho: the variance is constant
#> Ha: the variance is not constant
#>
#> Data
#> --------------------------
#> Response : mpg
#> Variables: disp hp wt drat
#>
#> Test Summary (Sidak p values)
#> ----------------------------------------------
#> Variable chi2 df p
#> ----------------------------------------------
#> disp 1.2355345 1 0.7102690
#> hp 0.9209878 1 0.8070305
#> wt 1.2529988 1 0.7049362
#> drat 1.1668486 1 0.7313356
#> ----------------------------------------------
#> simultaneous 1.5138083 4 0.8241927
#> ----------------------------------------------
# holm's p value adjustment
ols_test_breusch_pagan(model, rhs = TRUE, multiple = TRUE, p.adj = 'holm')
#>
#> Breusch Pagan Test for Heteroskedasticity
#> -----------------------------------------
#> Ho: the variance is constant
#> Ha: the variance is not constant
#>
#> Data
#> --------------------------
#> Response : mpg
#> Variables: disp hp wt drat
#>
#> Test Summary (Holm's p values)
#> ----------------------------------------------
#> Variable chi2 df p
#> ----------------------------------------------
#> disp 1.2355345 1 0.7990002
#> hp 0.9209878 1 0.3372157
#> wt 1.2529988 1 1.0000000
#> drat 1.1668486 1 0.5600994
#> ----------------------------------------------
#> simultaneous 1.5138083 4 0.8241927
#> ----------------------------------------------