El Test de Chow es una prueba estadística que nos permite estudiar la existencia de una ruptura estructural dentro de los modelos de regresión. O dicho de otra forma, permite ver si hay estabilidad permanente en los parámetros de dicho modelo.En el siguiente tutorial explico esta prueba usando R studio.

También abajo puedes copiar el código usado en el vídeo.

Codigo R

## PRUEBA PARA ESTABILIDAD DE PARAMETROS EN MODELOS DE REGRESION LINEAL
## PRUEBA DE CHOW ###

 

#install.packages(«quantmod»)
library(quantmod)
#install.packages(«tseries»)
library(tseries)
#install.packages(«fImport»)
library(fImport)

library(ggplot2)

## PASOS PARA EL TEST DE CHOW

# 1 HACEMOS LA REGRESIÓN con todos los datos y obtenemos la SCR

# 2 Hacemos la regresiones por cada subdivisón de la muestra y obtenemos los SCR de cada una
# Si tenemos 2 pues los llamamos SCR1 y SCR2

# 3 Sumamos los SCR1 y SCR2. A esta suma le llamamos SCRnr( SUma de cuadrados residual no restringida)

# 4 Creamos la razon F a partir de los datos anteriores

# 5 Interpretamos : No hay cambio estructural si el valor F calculado no excede el
# el valor critico F obtenido en la tabla F en el el nivel elegido de significancia o valor p

 

Ahorro <- c(61,68.6,63.6,89.6, 97.6,104.4,96.4,92.5,112.6,130.1,161.8,199.1,205.5,
167,235.7,206.2,196.5,168.4,189.1,187.8,208.7,246.4,272.6,214.4,189.4,249.3)

Ingreso <- c( 727.1,790.2,855.3,965, 1054.2,1159.2,1273,1401.4,1580.1,1769.5,1973.3,2200.2,2347.3,
2522.4,2810,3002,3187.6,3363.1,3640.8,3894.5,4166.8,4343.7,4613.7,4790.2,
5021.7,5320.8)

 

s <- as.Date(«1970-12-31»)
e <- as.Date(«1995-12-31»)

seq(from=s, to=e, by=»year»)

Año <- seq(from=s, to=e, by=»year»)

tabla_ahorro_ingres <- data.frame(Año,Ahorro,Ingreso)
ggplot(tabla_ahorro_ingres, aes(x = Ingreso, y = Ahorro)) + geom_point(col=’steelblue’, size=3)+labs(title = «RUPTURA ESTRUCTURAL»)

## Periodos que analizaremos- 1970 a 1981
## 1982 a 1995

plot(tabla_ahorro_ingres$Ahorro,type=»l»)
abline(v=12)

plot(tabla_ahorro_ingres$Ingreso,type=»l»)
abline(v=12)


#######

ML_1 <- lm(tabla_ahorro_ingres$Ahorro[1:12]~tabla_ahorro_ingres$Ingreso[1:12])
summary(ML_1)
SCR_1<-sum(residuals(ML_1)^2)

ML_2 <- lm(tabla_ahorro_ingres$Ahorro[13:26]~tabla_ahorro_ingres$Ingreso[13:26])
summary(ML_2)

SCR_2<-sum(residuals(ML_2)^2)

ML_3 <- lm(tabla_ahorro_ingres$Ahorro~tabla_ahorro_ingres$Ingreso)
summary(ML_3)
SCR_3<-sum(residuals(ML_3)^2)

# vemos claramente que la realción entre ahorro y el IPD no es la misma
# en los dos subperiodos


#sumamos SCR1 y SCR2

SCRrn <- SCR_1 + SCR_2

SCRrn

## CREACIÓN DEL ESTADISTICO F

num_F <- ((SCR_3 – SCRrn)/2)
den_F <- SCRrn/(12+14-4) #SCRrn/n1 + n2 – 2*k

Valor_F<- num_F/den_F
#2 Y 22 GL DENOMINADOR
F_al_0.99 <- 5.72 # 2 gl en numerador y 22 denominador

## código para directo desde R sin mirar la tabla

ft<- qf(0.99,2,(12+14)-2*2)
ft
#qf(0.99,2,22)

p <- df(Valor_F,2,22)*2
p


Valor_F
#95.75 valor tabla
# distirbucion F (2 y 22)

#Si valor F calculado < valor critico tabla F = NO hay cambio estructural
#si valor F calculado > valor critico tabla F = Hay cambio estructural

 

# TEST DE SHOW CON LOS PAQUETES EN R

install.packages(«strucchange»)
#install.packages(«Rtools»)
library(strucchange)

sctest (Ahorro~Ingreso, type = «Chow», point = 12 )

?sctest


#Dado que el valor p es menor que .05, podemos rechazar la hipótesis nula de la prueba. Esto significa que tenemos suficiente evidencia
#para decir que existe un punto de ruptura estructural en los datos.

Por Victor A.Rico

Diplomado en Ciencias Empresariales y Operador del Mercado Español de Futuros y Opciones

Deja una respuesta

Tu dirección de correo electrónico no será publicada.