library(kableExtra)
library(tidyverse)
library(haven)
library(foreign)
library(lmtest)
library(car)
library(estimatr)
library(knitr)
library(olsrr) # tools for bulding OLS regression models
options(scipen=999)
#cargamos base de datos
gpa3 <- read_dta("http://fmwww.bc.edu/ec-p/data/wooldridge/gpa3.dta")
hprice1 <- read_dta("http://fmwww.bc.edu/ec-p/data/wooldridge/hprice1.dta")
d401k <- read_dta("http://fmwww.bc.edu/ec-p/data/wooldridge/401ksubs.dta")
table2_1 <- read_dta("Copia de Copia de table2.1.dta")
Table_2_8 <- read_dta("Copia de Copia de Table 2.8.dta")
#Estimamos modelos
reg <- lm(cumgpa ~ sat + hsperc + tothrs + female + black + white, data=gpa3, subset=(spring==1))
reg2 <- lm(price ~ lotsize + sqrft + bdrms, data=hprice1 )
reg3 <- lm(nettfa ~ inc + I((age - 25)^2) + male + e401k, data= d401k, subset = (fsize==1))
#Nombramos nuevas variables
table2_1$rent_per <- (table2_1$rent)/(table2_1$no) #nombramos rentper
table2_1$room_per <- (table2_1$rm)/(table2_1$no) #nombramos room per
#Submuestra: Mujeres
reg_ret_y_female = lm(rent_per~sex +room_per + dist, data = subset(table2_1, sex==1))
reg_resumen_female <- summary(reg_ret_y_female)
#Submuestra: Hombres
reg_ret_y_male = lm(rent_per~sex +room_per + dist, data = subset(table2_1, sex == 0))
reg_resumen_male <- summary(reg_ret_y_male)
Residuales VS valores ajustados es un gráfico para detectar no linealidad, varianzas de error desiguales y valores atípicos.
Revisar el util paquete olsrr* https://olsrr.rsquaredacademy.com/articles/intro.html
En econometría, los valores ajustados (también conocidos como valores estimados o valores predichos) se refieren a las estimaciones de la variable dependiente en un modelo estadístico, dadas ciertas valores de las variables independientes. En otras palabras, son los valores de la variable dependiente que el modelo estima que se producirán para los valores específicos de las variables independientes.
En un modelo de regresión lineal, por ejemplo, los valores ajustados son la línea recta que mejor se ajusta a los datos y que se utiliza para predecir el valor de la variable dependiente para cualquier valor dado de las variables independientes. Estos valores son importantes para evaluar la calidad del modelo y para hacer predicciones sobre el comportamiento futuro de la variable dependiente.
Los valores ajustados se calculan utilizando los coeficientes estimados del modelo y los valores observados de las variables independientes. Estos valores ajustados se pueden utilizar para evaluar la precisión del modelo y para hacer predicciones sobre los valores de la variable dependiente para diferentes valores de las variables independientes: \(ŷ = B_0*X_0 + ...B_n*X_n + û\)
#regresion 1
ols_plot_resid_fit(reg)
bptest(reg)
##
## studentized Breusch-Pagan test
##
## data: reg
## BP = 44.557, df = 6, p-value = 0.00000005732
#regresion 2
ols_plot_resid_fit(reg2)
bptest(reg2)
##
## studentized Breusch-Pagan test
##
## data: reg2
## BP = 14.092, df = 3, p-value = 0.002782
#regresion 3
ols_plot_resid_fit(reg3)
bptest(reg3)
##
## studentized Breusch-Pagan test
##
## data: reg3
## BP = 15.711, df = 4, p-value = 0.003433
ols_test_score(reg2) #Usando los valores ajustados del modelo
##
## Score Test for Heteroskedasticity
## ---------------------------------
## Ho: Variance is homogenous
## Ha: Variance is not homogenous
##
## Variables: fitted values of price
##
## Test Summary
## ------------------------------
## DF = 1
## Chi2 = 9.647331
## Prob > Chi2 = 0.001896269
ols_test_score(reg2, rhs = TRUE) # usando las variables independientes del modelo
##
## Score Test for Heteroskedasticity
## ---------------------------------
## Ho: Variance is homogenous
## Ha: Variance is not homogenous
##
## Variables: lotsize sqrft bdrms
##
## Test Summary
## -----------------------------
## DF = 3
## Chi2 = 14.09239
## Prob > Chi2 = 0.00278206
ols_test_score(reg2, vars = c('lotsize', 'sqrft')) # especificando las varibles
##
## Score Test for Heteroskedasticity
## ---------------------------------
## Ho: Variance is homogenous
## Ha: Variance is not homogenous
##
## Variables: lotsize sqrft
##
## Test Summary
## ------------------------------
## DF = 2
## Chi2 = 13.13056
## Prob > Chi2 = 0.001408427
La prueba de Breusch Pagan fue presentada por Trevor Breusch y Adrian Pagan en 1979. Se usa para probar la heteroscedasticidad en un modelo de regresión lineal y asume que los términos de error se distribuyen normalmente. Comprueba si la varianza de los errores de una regresión depende de los valores de las variables independientes con un \(X^2\) de prueba.
Puede realizar la prueba usando los valores ajustados del modelo, los predictores en el modelo y un subconjunto de las variables independientes. Incluye opciones para realizar múltiples pruebas y ajustes de valor p. Las opciones para los ajustes del valor de p incluyen el método de Bonferroni, Sidak y Holm.
La prueba de “Breusch-Pagan” consiste en obtener los residuales \(û_i\) para todas las observaciones \(i=1,...,n\), donde se regresiona su valor al cuadrado con todas las variables independientes del la ecuacion inicial \(û_i^2 = B_1 X_k+... +B_k X_k\). Posteriormente, multiplicamos el \(R^2\) de la regresion auxiliar, con el numero de observaciones \(N\)
La estadística de prueba de Breusch-Pagan (BP) es una medida de la discrepancia entre el modelo original y el modelo ajustado para tener en cuenta la posible heteroscedasticidad en los errores. Este se calcula de la misma froma que el estadistico LM, ya que la fromula es \(BP = N*R^2\), donde donde n es el número de observaciones del modelo, y \(R²\) es el coeficiente de determinación del modelo ajustado para la heteroscedasticidad.
El comando “bptest” tiene como salida: La estadística de prueba de Breusch-Pagan BP, los grados de libertad df y el una medida de la evidencia en contra de la hipótesis nula de un test estadístico p-value. Donde \(H_0= homocedasticidad\) y \(H_a= heterocedasticidad\)
#PAQUETE "LMTEST"
# breausch-pagan test (bptest)
bptest(reg2) # prueba estudentizada de Breusch-Pagan
##
## studentized Breusch-Pagan test
##
## data: reg2
## BP = 14.092, df = 3, p-value = 0.002782
#PAQUETE "OLSRR"
ols_test_breusch_pagan(reg2) #utilizando los valores ajustados
##
## Breusch Pagan Test for Heteroskedasticity
## -----------------------------------------
## Ho: the variance is constant
## Ha: the variance is not constant
##
## Data
## ---------------------------------
## Response : price
## Variables: fitted values of price
##
## Test Summary
## ---------------------------------
## DF = 1
## Chi2 = 20.55289
## Prob > Chi2 = 0.000005800624
ols_test_breusch_pagan(reg2,rhs = TRUE) #utilizando las variables independientes del modelo
##
## Breusch Pagan Test for Heteroskedasticity
## -----------------------------------------
## Ho: the variance is constant
## Ha: the variance is not constant
##
## Data
## ------------------------------
## Response : price
## Variables: lotsize sqrft bdrms
##
## Test Summary
## ---------------------------------
## DF = 3
## Chi2 = 30.02273
## Prob > Chi2 = 0.000001364947
En econometría, el valor p es una medida de la probabilidad de obtener resultados iguales o más extremos que los observados en un modelo estadístico, bajo la hipótesis nula de que no hay relación entre las variables explicativas y la variable dependiente. En otras palabras, el valor p indica la probabilidad de que los resultados obtenidos en un análisis estadístico sean debidos al azar y no a una relación causal entre las variables.
El valor p no ajustado es el valor p que se obtiene directamente de la prueba de hipótesis para una variable en particular, sin tomar en cuenta el efecto de otras variables explicativas en el modelo. Es decir, se calcula sin tener en cuenta la posible influencia de otras variables en el modelo, por lo que se considera una medida “bruta” de la significancia estadística de una variable en particular.Sin embargo, el valor p no ajustado puede llevar a interpretaciones erróneas si no se tiene en cuenta el efecto de otras variables en el modelo. Por lo tanto, es común ajustar el valor p para controlar la posible influencia de otras variables en el modelo, mediante el uso de técnicas estadísticas como el análisis de varianza (ANOVA) o la corrección de Bonferroni.
El ajuste de Bonferroni es una técnica estadística utilizada para controlar el error tipo I en las pruebas de hipótesis múltiples. Consiste en ajustar el valor de significancia de cada prueba individual mediante la división del nivel de significancia global (por lo general, 0.05) por el número de pruebas realizadas. En el contexto de la econometría, el ajuste de Bonferroni se utiliza para ajustar el valor p de cada variable en un modelo de regresión múltiple para controlar el error tipo I, que se produce cuando se rechaza la hipótesis nula a pesar de que es verdadera. Para hacer esto, se divide el nivel de significancia global por el número de variables en el modelo y se utiliza este valor ajustado como umbral para determinar la significancia estadística de cada variable.
El ajuste del valor p de Sidak es una técnica estadística utilizada para controlar el error tipo I en las pruebas de hipótesis múltiples. Al igual que el ajuste de Bonferroni, el ajuste de Sidak ajusta el valor de significancia de cada prueba individual mediante la división del nivel de significancia global por una función del número de pruebas realizadas. En el ajuste de Sidak, el valor ajustado de cada prueba individual se calcula utilizando la fórmula \((1 - (1 - α)^(1/n))\), donde α es el nivel de significancia global y n es el número de pruebas realizadas. Esta fórmula es más efectiva que la fórmula del ajuste de Bonferroni en la reducción del error tipo I, especialmente cuando el número de pruebas es grande.
En el contexto de la econometría, el ajuste del valor p de Sidak se utiliza para ajustar el valor p de cada variable en un modelo de regresión múltiple para controlar el error tipo I. Si el valor p ajustado para una variable es menor que el umbral de significancia ajustado utilizando el ajuste de Sidak, se considera estadísticamente significativo. El ajuste de Sidak es una técnica más potente que el ajuste de Bonferroni para controlar el error tipo I, ya que tiene en cuenta el número de pruebas realizadas en el análisis. Sin embargo, como el ajuste de Bonferroni, puede ser demasiado conservador en algunos casos, lo que puede aumentar el error tipo II. Por lo tanto, se recomienda su uso junto con otras técnicas de ajuste de valor p, como la corrección de Holm-Bonferroni.
El ajuste del valor p de Holm, también conocido como corrección de Holm-Bonferroni, es una técnica estadística utilizada para controlar el error tipo I en las pruebas de hipótesis múltiples. Esta técnica ajusta el valor de significancia de cada prueba individual en función del número de pruebas realizadas y de la significancia de cada prueba. El ajuste del valor p de Holm, también conocido como corrección de Holm-Bonferroni, es una técnica estadística utilizada para controlar el error tipo I en las pruebas de hipótesis múltiples. Esta técnica ajusta el valor de significancia de cada prueba individual en función del número de pruebas realizadas y de la significancia de cada prueba.
ols_test_breusch_pagan(reg2, rhs = TRUE, multiple = TRUE) #Utilizando variables independientes del modelo y múltiples pruebas
##
## Breusch Pagan Test for Heteroskedasticity
## -----------------------------------------
## Ho: the variance is constant
## Ha: the variance is not constant
##
## Data
## ------------------------------
## Response : price
## Variables: lotsize sqrft bdrms
##
## Test Summary (Unadjusted p values)
## --------------------------------------------------
## Variable chi2 df p
## --------------------------------------------------
## lotsize 20.55762 1 0.000005786313
## sqrft 12.32272 1 0.000447478265
## bdrms 10.44809 1 0.001227765106
## --------------------------------------------------
## simultaneous 30.02273 3 0.000001364947
## --------------------------------------------------
ols_test_breusch_pagan(reg2, rhs = TRUE, multiple = TRUE, p.adj = 'bonferroni')#Bonferroni valor p Ajuste
##
## Breusch Pagan Test for Heteroskedasticity
## -----------------------------------------
## Ho: the variance is constant
## Ha: the variance is not constant
##
## Data
## ------------------------------
## Response : price
## Variables: lotsize sqrft bdrms
##
## Test Summary (Bonferroni p values)
## --------------------------------------------------
## Variable chi2 df p
## --------------------------------------------------
## lotsize 20.55762 1 0.000017358940
## sqrft 12.32272 1 0.001342434796
## bdrms 10.44809 1 0.003683295319
## --------------------------------------------------
## simultaneous 30.02273 3 0.000001364947
## --------------------------------------------------
ols_test_breusch_pagan(reg2, rhs = TRUE, multiple = TRUE, p.adj = 'sidak')#Ajuste del valor p de Sidak
##
## Breusch Pagan Test for Heteroskedasticity
## -----------------------------------------
## Ho: the variance is constant
## Ha: the variance is not constant
##
## Data
## ------------------------------
## Response : price
## Variables: lotsize sqrft bdrms
##
## Test Summary (Sidak p values)
## --------------------------------------------------
## Variable chi2 df p
## --------------------------------------------------
## lotsize 20.55762 1 0.000017358840
## sqrft 12.32272 1 0.001341834176
## bdrms 10.44809 1 0.003678774949
## --------------------------------------------------
## simultaneous 30.02273 3 0.000001364947
## --------------------------------------------------
ols_test_breusch_pagan(reg2, rhs = TRUE, multiple = TRUE, p.adj = 'holm') # Valor p de Holm Ajuste
##
## Breusch Pagan Test for Heteroskedasticity
## -----------------------------------------
## Ho: the variance is constant
## Ha: the variance is not constant
##
## Data
## ------------------------------
## Response : price
## Variables: lotsize sqrft bdrms
##
## Test Summary (Holm's p values)
## --------------------------------------------------
## Variable chi2 df p
## --------------------------------------------------
## lotsize 20.55762 1 0.000017358940
## sqrft 12.32272 1 0.000894956531
## bdrms 10.44809 1 0.001227765106
## --------------------------------------------------
## simultaneous 30.02273 3 0.000001364947
## --------------------------------------------------
#renombramos base de datos
hprice2 <- hprice1
alpha <- 0.05
hprice2$ressq <- residuals(reg2)^2
#Regresion auxiliar:
modres <- lm(ressq ~ lotsize + sqrft + bdrms, data=hprice2) #nombramos regresion
summary(modres)
##
## Call:
## lm(formula = ressq ~ lotsize + sqrft + bdrms, data = hprice2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9044 -2212 -1256 -97 42582
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -5522.79474 3259.47826 -1.694 0.09390 .
## lotsize 0.20152 0.07101 2.838 0.00569 **
## sqrft 1.69104 1.46385 1.155 0.25128
## bdrms 1041.76020 996.38105 1.046 0.29877
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6617 on 84 degrees of freedom
## Multiple R-squared: 0.1601, Adjusted R-squared: 0.1301
## F-statistic: 5.339 on 3 and 84 DF, p-value: 0.002048
#nombrar las observaciones
N <- nobs(modres) #nombras la "n"
N
## [1] 88
#otra opcion de resumen estadistico
gmodres <- glance(modres) #summary en dataframe
gmodres
## # A tibble: 1 × 12
## r.squ…¹ adj.r…² sigma stati…³ p.value df logLik AIC BIC devia…⁴ df.re…⁵
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
## 1 0.160 0.130 6617. 5.34 0.00205 3 -897. 1804. 1816. 3.68e9 84
## # … with 1 more variable: nobs <int>, and abbreviated variable names
## # ¹r.squared, ²adj.r.squared, ³statistic, ⁴deviance, ⁵df.residual
# nombramos el numero de betas
S <- gmodres$df #Number of Betas in model
S
## numdf
## 3
#nombramos el chi-cuadrado con un alpha especificado
#Chi-square is always a right-tail test
chisqcr <- qchisq(1-alpha,S) #prueba chi
chisqcr
## [1] 7.814728
#nombramos el r cuadrado
Rsqres <- gmodres$r.squared #nombra R^2
Rsqres
## [1] 0.1601407
chisq <- N*Rsqres # otra prueba chi
chisq
## [1] 14.09239
pval <- pchisq(chisq,S,lower.tail = FALSE) # p-value
chisq
## [1] 14.09239
pval
## [1] 0.00278206
El test de White es una variante del tests “BP” , en el que en la segunda etapa no se calculcan los errores al cuadrado como regresores y solo sino tambien en los valores esperados
Prueba de forma manual del caso especial del test de White
#OPCION 1
bptest(reg2, ~ fitted(reg2)+ I(fitted(reg2)^2)) # forma especial del test de White con los regresores ajustados y sus valores al cuadrado
##
## studentized Breusch-Pagan test
##
## data: reg2
## BP = 16.268, df = 2, p-value = 0.0002933
#OPCION 2
#nombro variables para la regresion auxiliar
hprice1$u2 <- residuals(reg2)^2 # nombrar residuales
hprice1$ajust <- fitted.values(reg2) # nombrar valores estimados
hprice1$ajust2 <- hprice1$ajust^2 # nobrar valores estimados al cuadrado
#creo regresion auxiliar de white
aux <- lm(u2 ~ ajust + ajust2, data=hprice1)
#Prueba Chiciadrado en White
N <- nobs(aux)
gmodres2 <- glance(aux)
Rsq2 <- gmodres2$r.squared #valor R^2
S2 <- gmodres2$df #Number of Betas in model
chisq2 <- N*Rsq2 #estadistico "LM"
pval2 <- 1-pchisq(chisq2, S-1) #valo p (con distribucion chi)
Rsq2
## [1] 0.1848684
N
## [1] 88
chisq2
## [1] 16.26842
pval2
## [1] 0.0002933311
#solucion punto 2 (con submuestras de hombre y mujer)
#nombramos "k" y "n"
K <-3 # K= todos los parametros menos el intercepto
#n mujeres
NM <- nobs(reg_ret_y_female)
NM
## [1] 10
#n hombres
NH <- nobs(reg_ret_y_male)
NH
## [1] 22
#hallamos residuales
#residuales mujeres
y_gorro_m <- fitted.values(reg_ret_y_female)
u_gorro_m <- residuals(reg_ret_y_female)
u_gorro_m_2 <- u_gorro_m^2
sum(u_gorro_m_2)
## [1] 7350.306
#residuales hombres
y_gorro_h <- fitted.values(reg_ret_y_male)
u_gorro_h <- residuals(reg_ret_y_male)
u_gorro_h_2 <- u_gorro_h^2
sum(u_gorro_h_2)
## [1] 29357.05
#Hallamos varinzas
#varinzas hombres
Var_H <- sum(u_gorro_h_2)/(NH-K)
Var_H
## [1] 1545.108
#varinzas mujeres
Var_M <- sum(u_gorro_m_2)/(NM-K)
Var_M
## [1] 1050.044
#Hallar Goldfeld-Quandt
#nos habian dado Var(H)>Var(M)
GQ <- Var_H/Var_M #recordar que el orden importa
GQ
## [1] 1.47147
#qf(1-alpha, grados_libertad_en_el_numerado,grados_libertad_en_el_denominador , lower.tail=F)
F <- qf(0.05, 19, 7, lower.tail=F)
F
## [1] 3.45514
La prueba de Bartlett se usa para probar si las varianzas entre muestras que son iguales. Es sensible a las desviaciones de la normalidad. La prueba de Levene es una prueba alternativa que es menos sensible a las desviaciones de la normalidad.
Puede realizar la prueba utilizando 2 variables continuas, una variable continua y una variable de agrupación, una fórmula o un modelo lineal.
ols_test_bartlett(table2_1, 'rent_per', group_var = 'sex') #usando varible de agrupacion
## Warning in pchisq(fstat, df, lower.tail = FALSE): NaNs produced
##
## Bartlett's Test of Homogenity of Variances
## ------------------------------------------------
## Ho: Variances are equal across groups
## Ha: Variances are unequal for atleast two groups
##
## Test Summary
## ----------------------------
## DF = -1
## Chi2 = -1.132939
## Prob > Chi2 = NaN
ols_test_bartlett(table2_1, 'dist', 'rent_per') # usando varibales
##
## Bartlett's Test of Homogenity of Variances
## ------------------------------------------------
## Ho: Variances are equal across groups
## Ha: Variances are unequal for atleast two groups
##
## Data
## ------------------------
## Variables: dist rent_per
##
## Test Summary
## -------------------------------------
## DF = 1
## Chi2 = 39.86943
## Prob > Chi2 = 0.0000000002715192
ols_test_f(reg2) #usando valores ajustados del modelo
##
## F Test for Heteroskedasticity
## -----------------------------
## Ho: Variance is homogenous
## Ha: Variance is not homogenous
##
## Variables: fitted values of price
##
## Test Summary
## -------------------------
## Num DF = 1
## Den DF = 86
## F = 10.58892
## Prob > F = 0.0016272
ols_test_f(reg2, rhs = TRUE) #usando las variables independientes del modelo
##
## F Test for Heteroskedasticity
## -----------------------------
## Ho: Variance is homogenous
## Ha: Variance is not homogenous
##
## Variables: lotsize sqrft bdrms
##
## Test Summary
## ---------------------------
## Num DF = 3
## Den DF = 84
## F = 5.338919
## Prob > F = 0.002047744
ols_test_f(reg2, vars = c('lotsize', 'sqrft')) #especificando las variables
##
## F Test for Heteroskedasticity
## -----------------------------
## Ho: Variance is homogenous
## Ha: Variance is not homogenous
##
## Variables: lotsize sqrft
##
## Test Summary
## ---------------------------
## Num DF = 2
## Den DF = 85
## F = 7.453629
## Prob > F = 0.001040951
*Los errores robustos en una regresión se utilizan para estimar los errores estándar de los coeficientes de la regresión en presencia de heterocedasticidad, es decir, cuando la varianza de los errores de la regresión no es constante en toda la población. En tales casos, los errores estándar estimados por el método estándar de mínimos cuadrados ordinarios (MCO) pueden ser sesgados y, por lo tanto, pueden conducir a intervalos de confianza y pruebas de hipótesis incorrectas.
Los errores robustos se calculan utilizando un método conocido como “estimadores robustos de varianza-covarianza”. Estos estimadores utilizan una matriz de pesos que tiene en cuenta la heterocedasticidad en los errores y ajustan los errores estándar de los coeficientes de la regresión para tener en cuenta esta heterocedasticidad. Los errores robustos son útiles porque proporcionan una estimación más precisa de los errores estándar de los coeficientes de la regresión y, por lo tanto, permiten una inferencia estadística más precisa.
En resumen, los errores robustos son útiles en una regresión porque permiten estimar los errores estándar de los coeficientes de la regresión en presencia de heterocedasticidad. Esto ayuda a evitar errores de inferencia estadística y a proporcionar resultados más precisos.
# Opcion (hc2)
robustos <- lm_robust(foodexp ~ totalexp ,data=Table_2_8)
robustos_summ <- summary(robustos)
La matriz de varianza-covarianza es una matriz cuadrada que proporciona información sobre la varianza de cada variable en un conjunto de datos y la covarianza entre cada par de variables. La diagonal principal de la matriz contiene las varianzas de cada variable, mientras que las entradas fuera de la diagonal principal contienen las covarianzas entre cada par de variables.
La matriz de varianza-covarianza es una herramienta importante en estadística multivariada y se utiliza para analizar la relación entre múltiples variables. La matriz puede ser simétrica (si las covarianzas son iguales en ambas direcciones) o asimétrica (si las covarianzas son diferentes en ambas direcciones). La matriz de varianza-covarianza se puede calcular a partir de una muestra de datos utilizando la siguiente fórmula: \(S = 1/(n-1) * (X - X̄)ᵀ (X - X̄)\) donde: S es la matriz de varianza-covarianza n es el número de observaciones en la muestra X es una matriz n x k de datos, donde n es el número de observaciones y k es el número de variables X̄ es un vector k x 1 de medias muestrales de cada variable
*La diagonal de la matriz de varianza-covarianza proporciona información sobre la variabilidad de cada variable en la muestra de datos. Si la diagonal contiene varianzas pequeñas, esto indica que los valores de cada variable están cercanos a su media y no son muy diferentes entre sí. Si la diagonal contiene varianzas grandes, esto indica que los valores de cada variable están más dispersos y pueden ser muy diferentes entre sí.
#OPCIO 1
reg_coef <- coef(reg) # nombramos coefiientes
#hccm (heteroscedasticity-corrected covariance matrices)
matiz_1 <- hccm(reg) # test de White por defecto
se_robustos_white <- sqrt(diag(matiz_1))
se_robustos_white
## (Intercept) sat hsperc tothrs female black
## 0.2293803619 0.0001953242 0.0014435899 0.0007493037 0.0600396394 0.1281882805
## white
## 0.1204352235
t_valor <- reg_coef/se_robustos_white
t_valor
## (Intercept) sat hsperc tothrs female black
## 6.4088519 5.8401749 -5.9340657 3.3417669 5.0538827 -1.0007443
## white
## -0.4875794
p_valor <-2*pt(abs(t_valor), df= Inf, lower.tail = FALSE)
p_valor
## (Intercept) sat hsperc tothrs
## 0.0000000001466195 0.0000000052146036 0.0000000029552354 0.0008324695329912
## female black white
## 0.0000004329175830 0.3169504628097529 0.6258478195655313
matriz_2 <- hccm(reg, type = "hc0") # test de White presentada clasico (Wooldridge,2016)
se_robustos_white_wooldridge <- sqrt(diag(matriz_2))
se_robustos_white_wooldridge
## (Intercept) sat hsperc tothrs female black
## 0.2185596945 0.0001896913 0.0014043026 0.0007335259 0.0585695875 0.1180954899
## white
## 0.1103216380
#OPCION 2
# Regresion con errores estandar robustos
matriz_3 <- hccm(reg, type ="hc2")
se_robustos_cov_rhc2 <- sqrt(diag(matriz_3))
se_robustos_cov_rhc2#correccion hccmr
## (Intercept) sat hsperc tothrs female black
## 0.2238293200 0.0001924686 0.0014236525 0.0007413439 0.0592945232 0.1230101316
## white
## 0.1152461973
reg.hc2 <- coeftest(reg, vcov. = matriz_3)
reg.hc2 # mostrar matriz de varinzas corregidos
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.47006477 0.22382932 6.5678 0.0000000001794 ***
## sat 0.00114073 0.00019247 5.9268 0.0000000072487 ***
## hsperc -0.00856636 0.00142365 -6.0172 0.0000000043800 ***
## tothrs 0.00250400 0.00074134 3.3776 0.0008112 ***
## female 0.30343329 0.05929452 5.1174 0.0000005057872 ***
## black -0.12828369 0.12301013 -1.0429 0.2977098
## white -0.05872173 0.11524620 -0.5095 0.6106918
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Otro ajuste de matriz de var-cov (hccm = forma de correcion de matriz de varinzas y covarinzas)
cov_rhc1 <- hccm(reg, type = "hc1")
reg.hc1 <- coeftest(reg, vcov= cov_rhc1)
reg.hc1
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.47006477 0.22068021 6.6615 0.000000000102 ***
## sat 0.00114073 0.00019153 5.9558 0.000000006171 ***
## hsperc -0.00856636 0.00141793 -6.0415 0.000000003821 ***
## tothrs 0.00250400 0.00074064 3.3808 0.0008021 ***
## female 0.30343329 0.05913784 5.1309 0.000000472994 ***
## black -0.12828369 0.11924128 -1.0758 0.2827245
## white -0.05872173 0.11139200 -0.5272 0.5984061
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Analisis con el estadistico "t"
coeftest(reg) #: errores estándar predeterminados basados en homocedasticidad
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.47006477 0.22980308 6.3971 0.00000000049422 ***
## sat 0.00114073 0.00017856 6.3885 0.00000000051970 ***
## hsperc -0.00856636 0.00124042 -6.9060 0.00000000002275 ***
## tothrs 0.00250400 0.00073099 3.4255 0.0006847 ***
## female 0.30343329 0.05902033 5.1412 0.00000044965430 ***
## black -0.12828369 0.14737012 -0.8705 0.3846163
## white -0.05872173 0.14098956 -0.4165 0.6772953
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coeftest(reg, vcov=hccm) #: errores estándar refinidos con la heterocedasticidad-robusto de White
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.47006477 0.22938036 6.4089 0.0000000004611 ***
## sat 0.00114073 0.00019532 5.8402 0.0000000116871 ***
## hsperc -0.00856636 0.00144359 -5.9341 0.0000000069634 ***
## tothrs 0.00250400 0.00074930 3.3418 0.00092 ***
## female 0.30343329 0.06003964 5.0539 0.0000006910602 ***
## black -0.12828369 0.12818828 -1.0007 0.31762
## white -0.05872173 0.12043522 -0.4876 0.62615
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coeftest(reg, vcov=hccm(reg, type = "hc0")) #: errores estándar refinidos clasicamente con White (Wooldridge,2016)
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.47006477 0.21855969 6.7261 0.00000000006888 ***
## sat 0.00114073 0.00018969 6.0136 0.00000000446846 ***
## hsperc -0.00856636 0.00140430 -6.1001 0.00000000274438 ***
## tothrs 0.00250400 0.00073353 3.4136 0.0007142 ***
## female 0.30343329 0.05856959 5.1807 0.00000036934728 ***
## black -0.12828369 0.11809549 -1.0863 0.2780880
## white -0.05872173 0.11032164 -0.5323 0.5948631
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Analisis con el estadistico "F" con especificacio de hipotesis
myHO <- c("black","white") # definimos la hipotesis
linearHypothesis(reg, myHO) #: matriz de covarinza predeterminada basados en homocedasticidad
## Linear hypothesis test
##
## Hypothesis:
## black = 0
## white = 0
##
## Model 1: restricted model
## Model 2: cumgpa ~ sat + hsperc + tothrs + female + black + white
##
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 361 79.362
## 2 359 79.062 2 0.29934 0.6796 0.5075
linearHypothesis(reg, myHO, vcov=hccm ) #: matriz de covarinza refinidos con la heterocedasticidad-robusto de White
## Linear hypothesis test
##
## Hypothesis:
## black = 0
## white = 0
##
## Model 1: restricted model
## Model 2: cumgpa ~ sat + hsperc + tothrs + female + black + white
##
## Note: Coefficient covariance matrix supplied.
##
## Res.Df Df F Pr(>F)
## 1 361
## 2 359 2 0.6725 0.5111
linearHypothesis(reg, myHO, vcov=hccm(reg, type = "hc0")) #: matriz de covarinza refinidos clasicamente con White (Wooldridge,2016)
## Linear hypothesis test
##
## Hypothesis:
## black = 0
## white = 0
##
## Model 1: restricted model
## Model 2: cumgpa ~ sat + hsperc + tothrs + female + black + white
##
## Note: Coefficient covariance matrix supplied.
##
## Res.Df Df F Pr(>F)
## 1 361
## 2 359 2 0.7478 0.4741
#hacemos regresion wls (weighted least squares)
wls <- lm(nettfa ~ inc + I((age-25)^2) + male + e401k, weights = 1/inc, data = d401k, subset = (fsize==1))
summary(wls)
##
## Call:
## lm(formula = nettfa ~ inc + I((age - 25)^2) + male + e401k, data = d401k,
## subset = (fsize == 1), weights = 1/inc)
##
## Weighted Residuals:
## Min 1Q Median 3Q Max
## -26.613 -2.491 -0.803 0.934 178.052
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -16.702521 1.957995 -8.530 < 0.0000000000000002 ***
## inc 0.740384 0.064303 11.514 < 0.0000000000000002 ***
## I((age - 25)^2) 0.017537 0.001931 9.080 < 0.0000000000000002 ***
## male 1.840529 1.563587 1.177 0.23929
## e401k 5.188281 1.703426 3.046 0.00235 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.065 on 2012 degrees of freedom
## Multiple R-squared: 0.1115, Adjusted R-squared: 0.1097
## F-statistic: 63.13 on 4 and 2012 DF, p-value: < 0.00000000000000022
#resultados no robustos de los errores estandar
coeftest(wls)
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -16.7025205 1.9579947 -8.5304 < 0.00000000000000022 ***
## inc 0.7403843 0.0643029 11.5140 < 0.00000000000000022 ***
## I((age - 25)^2) 0.0175373 0.0019315 9.0796 < 0.00000000000000022 ***
## male 1.8405293 1.5635872 1.1771 0.239287
## e401k 5.1882807 1.7034258 3.0458 0.002351 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#resultados robustos de los errores estandar
coeftest(wls, hccm)
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -16.7025205 2.2482355 -7.4292 0.0000000000001606 ***
## inc 0.7403843 0.0752396 9.8403 < 0.00000000000000022 ***
## I((age - 25)^2) 0.0175373 0.0025924 6.7650 0.0000000000174229 ***
## male 1.8405293 1.3132477 1.4015 0.1612159
## e401k 5.1882807 1.5743329 3.2955 0.0009994 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
ols_plot_resid_fit(wls)
bptest(wls)
##
## studentized Breusch-Pagan test
##
## data: wls
## BP = 0.39519, df = 4, p-value = 0.9829