Utilizando los datos del dataframe hprice1: disponible en el paquete wooldridge use el siguiente código para generar el dataframe:

options(scipen = 9999)
library(wooldridge)
data(hprice1)
head(force(hprice1),n=5)
##   price assess bdrms lotsize sqrft colonial   lprice  lassess llotsize   lsqrft
## 1   300  349.1     4    6126  2438        1 5.703783 5.855359 8.720297 7.798934
## 2   370  351.5     3    9903  2076        1 5.913503 5.862210 9.200593 7.638198
## 3   191  217.7     3    5200  1374        0 5.252274 5.383118 8.556414 7.225482
## 4   195  231.8     3    4600  1448        1 5.273000 5.445875 8.433811 7.277938
## 5   373  319.1     4    6095  2514        1 5.921578 5.765504 8.715224 7.829630

1. Estimación del modelo

options(scipen = 9999)
library(stargazer)
modelo_precio <- lm(formula = price ~ lotsize + sqrft + bdrms, data = hprice1)
stargazer(modelo_precio, title = "Modelo precio",type = "html")
Modelo precio
Dependent variable:
price
lotsize 0.002***
(0.001)
sqrft 0.123***
(0.013)
bdrms 13.853
(9.010)
Constant -21.770
(29.475)
Observations 88
R2 0.672
Adjusted R2 0.661
Residual Std. Error 59.833 (df = 84)
F Statistic 57.460*** (df = 3; 84)
Note: p<0.1; p<0.05; p<0.01

a) Use la libreria lmtest para verificar si su varianza residual es homocedástica a través de la prueba de White (incluya los términos cruzados).

#Prueba de White
library(lmtest)
prueba_white<-bptest(modelo_precio, ~I(lotsize^2)+I(sqrft^2)+I(bdrms^2)+lotsize*sqrft+lotsize*bdrms+sqrft*bdrms, data = hprice1)
print(prueba_white)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_precio
## BP = 33.732, df = 9, p-value = 0.00009953

Interpretación: Debido a que el p-value es menor que el nivel de significancia, se rechaza la Ho, por lo tanto, hay evidencia de que la varianza de los residuos es heterocedástica.

b) Presente sus resultados de forma gráfica a través de la librería fastGraph

library(fastGraph)
library(magrittr)
options(scipen = 9999)
VC <- qchisq(0.05,prueba_white$parameter, lower.tail = FALSE)
shadeDist(xshade = prueba_white$statistic,
          ddist = "dchisq",
          parm1 = prueba_white$parameter,
          lower.tail = FALSE,
          sub= paste("VC:" ,VC%>%round(digits = 5), "BP:" ,prueba_white$statistic%>%round(digits = 5), "P-Value:" , prueba_white$p.value%>%round(digits = 5)))