Paso 1: Importar las bases de datos y verificar las
variables disponibles
library(wooldridge)
library(stargazer)
data("wage1")
attach(wage1)
str(wage1)
attach(wage1)
str(wage1)
## 'data.frame': 526 obs. of
24 variables:
## $ wage : num 3.1 3.24 3 6 5.3 ...
## $ educ : int 11 12 11 8 12 16 18 12 12 17 ...
## $ exper : int 2 22 2 44 7 9 15 5 26 22 ...
...
## $ wage : num 3.1 3.24 3 6 5.3 ...
## $ educ : int 11 12 11 8 12 16 18 12 12 17 ...
## $ exper : int 2 22 2 44 7 9 15 5 26 22 ...
...
Paso 2: Estimar los modelos para la muestra completa y
para las muestras entre las cuales se desea testear el quiebre estructural.
En esta paso necesitamos estimar tres modelos, el
primero corresponde al modelo no restringido (para la muestra completa, modelNR);
posteriormente, se estima el modelo para hombres y para mujeres, utilizando indexación
de nuestra base de datos, wage1[female==1,]. Los
resultados de estos modelos se muestran en una tabla de regresión utilizando la
librería stargazer.
modelNR <- lm(lwage~1+educ+exper+tenure )
modeln1 <- lm(lwage~1+educ+exper+tenure, data=wage1[female==1,] )
modeln2 <- lm(lwage~1+educ+exper+tenure, data=wage1[female==0,] )
# Resultados
stargazer(modelNR, modeln1, modeln2, type="text", title="Results", align=TRUE)
modeln1 <- lm(lwage~1+educ+exper+tenure, data=wage1[female==1,] )
modeln2 <- lm(lwage~1+educ+exper+tenure, data=wage1[female==0,] )
# Resultados
stargazer(modelNR, modeln1, modeln2, type="text", title="Results", align=TRUE)
##
## Results
## =====================================================
## Dependent variable:
## -----------------------------------------------------------------------
## lwage
## (1) (2) (3)
## -------------------------------------------------------------------------------------------
## educ 0.092*** 0.080*** 0.096***
## (0.007) (0.010) (0.009)
##
## exper 0.004** 0.002 0.008***
## (0.002) (0.002) (0.002)
##
## tenure 0.022*** 0.010* 0.018***
## (0.003) (0.005) (0.004)
##
## Constant 0.284*** 0.356** 0.322**
## (0.104) (0.141) (0.139)
##
## -------------------------------------------------------------------------------------------
## Observations 526 252 274
## R2 0.316 0.212 0.365
## Adjusted R2 0.312 0.202 0.358
## Residual Std. Error 0.441 (df = 522) 0.397 (df = 248) 0.428 (df = 270)
## F Statistic 80.391*** (df = 3; 522) 22.233*** (df = 3; 248) 51.836*** (df = 3; 270)
## =======================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
## Results
## =====================================================
## Dependent variable:
## -----------------------------------------------------------------------
## lwage
## (1) (2) (3)
## -------------------------------------------------------------------------------------------
## educ 0.092*** 0.080*** 0.096***
## (0.007) (0.010) (0.009)
##
## exper 0.004** 0.002 0.008***
## (0.002) (0.002) (0.002)
##
## tenure 0.022*** 0.010* 0.018***
## (0.003) (0.005) (0.004)
##
## Constant 0.284*** 0.356** 0.322**
## (0.104) (0.141) (0.139)
##
## -------------------------------------------------------------------------------------------
## Observations 526 252 274
## R2 0.316 0.212 0.365
## Adjusted R2 0.312 0.202 0.358
## Residual Std. Error 0.441 (df = 522) 0.397 (df = 248) 0.428 (df = 270)
## F Statistic 80.391*** (df = 3; 522) 22.233*** (df = 3; 248) 51.836*** (df = 3; 270)
## =======================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
Paso 3: Obtener el estadístico F del test y el estadístico
de tabla
A partir de las suma del
cuadrado de los residuos obtenidos en los modelos anteriores sum(residuals(modelNR)^2),
y la obtención de los grados de libertad del test k
y n1n2k, se
puede obtener el estadístico calculado asociado al test, para finalmente
compararlo con el valor del estadístico de tabla a un determinado nivel de significancia.
SRCnr<-sum(residuals(modelNR)^2)
SRCn1<-sum(residuals(modeln1)^2)
SRCn2<-sum(residuals(modeln2)^2)
# H0 b1=b2=b
k<-length(coefficients(modeln1))
n1n2k <- sum(female==1) + sum(female==0) - k
Fc<-((SRCnr- (SRCn1+SRCn2))*n1n2k)/((SRCn1+SRCn2)*k)
Ft<-qf(0.05, k, n1n2k, lower.tail=FALSE)
SRCn1<-sum(residuals(modeln1)^2)
SRCn2<-sum(residuals(modeln2)^2)
# H0 b1=b2=b
k<-length(coefficients(modeln1))
n1n2k <- sum(female==1) + sum(female==0) - k
Fc<-((SRCnr- (SRCn1+SRCn2))*n1n2k)/((SRCn1+SRCn2)*k)
Ft<-qf(0.05, k, n1n2k, lower.tail=FALSE)
> Fc
[1] 18.96467
> Ft
[1] 2.389012