En primer lugar hay que cargar las librerías que se utilizarán en este markdown.
#install.packages( "WDI")
#install.packages( "DT")
#install.packages( "ggplot2")
#install.packages( "ggfortify")
#install.packages( "urca")
#install.packages( "fUnitRoots")
#install.packages( "lmtest")
#install.packages("car")
#install.packages("strucchange")
#install.packages("dynlm")
library("WDI")
library("DT")
library("ggplot2")
library("ggfortify")
library("urca")
library("fUnitRoots")
library("lmtest")
library("car")
library("strucchange")
library("dynlm")
1. Búsqueda de datos: Descargar los datos del Banco Mundial (World Development Indicators) directamente desde Rstudio. Vamos a buscar indicadores de inflación y desempleo:
indicadores_desempleo<-WDIsearch("unemployment")
indicadores_desempleo<-WDIsearch("unemployment.*total")# para refinar la búsqueda
datatable(indicadores_desempleo)
indicadores_inflacion<-WDIsearch("inflation")
datatable (indicadores_inflacion)
Estamos interesados en las series:
vamos a obtener datos de inflación y desempleo para Austria, para el periodo 1969-2023.
datos_Phillips<-WDI(indicator=c("desempleo"="SL.UEM.TOTL.NE.ZS", "inflacion"="FP.CPI.TOTL.ZG"), country=c("AUT"), start=1969, end=2023)
#Para ver las primeras filas de los datos
head(datos_Phillips)
El data.frame datos_Phillips contiene datos de la tasa de desempleo e inflación para Austria.
2. Los datos de inflación y desempleo en Austria.
Vamos a utilizar los datos de Austria (1969-2023) para estimar la curva de Phillips.
#Para extraer los datos de Austria
datos_AUT <- subset(datos_Phillips, country == "Austria")
#Para ver las primeras filas de los datos
head(datos_AUT)
Los datos de inflación y desempleo de Austria están ahora en un dataframe llamado datos_AUT.
# Para convertir los datos en formato de datos de serie temporal
data_AUT <- ts(datos_AUT[,c("desempleo", "inflacion")], start = c(1969), end=c(2023), frequency = 1)
#Para ver las primeras filas de los datos
head(data_AUT)
## desempleo inflacion
## [1,] 2.8 3.080404
## [2,] 2.4 4.372824
## [3,] 1.5 4.704258
## [4,] 1.3 6.355146
## [5,] 1.2 7.531078
## [6,] 1.3 9.521788
Los gráficos de las series con distintas funciones.
#un gráfico muy fácil con la función "plot"
plot(data_AUT,col=4, xlab="Year", main="Austria. Tasa de desempleo e inflacion")
#un gráfico con la función "autoplot" (requiere cargar el paquete "ggfortify")
autoplot(data_AUT, facets=TRUE)+ xlab("Year")+ ylab("") +
ggtitle("Austria. Tasa de desempleo e inflacion")
Como las dos series tienen una escala similar se pueden representar en un mismo gráfico con la función “plot” y también con la función “ts.plot”
plot(data_AUT[, c("desempleo", "inflacion")], col=c(2,4), lty = c(3,1),
plot.type = "single", xlab="Year", ylab ="", main="Austria. Tasas de desempleo e inflacion")
legend("topleft", legend = c("Desempleo","Inflacion"),col=c(2,4),
lty = c(3,1),bty = "n")
ts.plot(data_AUT[, 1], data_AUT[, 2], col=c(2,4),gpars=list(xlab="Year", ylab=""), main="Austria. Tasas de desempleo e inflacion")
legend("topleft", legend = c("Desempleo","Inflacion"),col=c(2,4),
lty = c(3,1),bty = "n")
Hay múltiples formas de hacer gráficos con R. Pregunta a la IA
por la diferencia entre los gráficos plot, plot.ts, ts.plot y
autoplot.
1.plot() Función genérica para graficar.
Detecta el tipo de objeto que se le pasa y llama a la función de graficado adecuada (plot.ts, plot.default, etc.).
Si le pasas una serie temporal (ts), usará internamente plot.ts.
2.plot.ts() Específica para objetos de clase ts (series temporales).
Es la versión que llama plot() cuando el argumento es un ts.
Tiene parámetros específicos para series temporales: xlab, ylab, main, type, etc.
3.ts.plot() Alternativa más antigua a plot.ts.
Permite graficar varias series temporales juntas, especialmente si tienen la misma frecuencia y longitud.
Menos personalizable que plot.ts pero útil para múltiples series.
4.autoplot() Viene del paquete ggplot2 o forecast/ggfortify.
Crea gráficos con estilo ggplot2, más estéticos y personalizables.
Necesitas cargar la librería correspondiente para que funcione con objetos ts.
Fuente ChatGPT (OpenAI)
El periodo de análisis incluye el periodo de la crisis del petroleo
comprendido entre 1969 y 1985, en el que la inflación en Austria aumento
debido entre otros motivos por la crisis del petróleo.
Para ver gráficamente la relación entre inflación y desempleo representamos el diagrama de dispersión.
# Diagrama de dispersion Inflacion-Desempleo (1960-2023)
y<-as.vector(data_AUT[, 2])
x<-as.vector(data_AUT[, 1])
p<-plot(x,y, main="Austria. 1969-2023",col=2,xlab="Desempleo", ylab= "Inflacion")+
abline(h=0, col="black")+
abline(lm(y~ x),col="4")
# En el gráfico se verifica la curva de Phillips, presenta pendiente negativa.
El gráfico sugiere la existencia de una disyuntiva (tradeoff) entre inflación y desempleo debido a que muestra una relación negativa entre ambas variables.
Para examinar si la relación entre inflación y desempleo es la misma antes y después del periodo de “la crisis del petroleo” vamos a analizar las submuestras (1969-1985) y (1986-2023) separadamente.
#Para obtener la submuestra 1969-1985
data_AUT.1<-window(data_AUT,frequency = 1, start = c(1969), end=c(1985))
#Para obtener la submuestra 1986-2023
data_AUT.2<-window(data_AUT,frequency = 1, start = c(1986), end=c(2023))
Para ver el diagrama de dispersión por submuestras.
# Diagrama de dispersion Inflacion-Desempleo (1969-1985)
y<-as.vector(data_AUT.1[, 2])
x<-as.vector(data_AUT.1[, 1])
p<-plot(x,y, main="Austria. 1969-1985",col=2,xlab="Desempleo",
ylab= "Inflacion")+
abline(h=0, col="black")+
abline(lm(y~ x),col=4)
# Diagrama de dispersion Inflacion-Desempleo (1986-2023)
y<-as.vector(data_AUT.2[, 2])
x<-as.vector(data_AUT.2[, 1])
p<-plot(x,y, main="Austria. 1986-2023",col=2,xlab="Desempleo",
ylab= "Inflacion")+
abline(h=0, col="black")+
abline(lm(y~ x),col=4)
#Ambos gráficos cumplen la curva de Phillips presentando en ambos gráficos pendientes negativas
Los gráficos muestran diferencias en el periodo analizado en la relación entre inflación y desempleo. El gráfico correspondiente al periodo (1969-1985) muestra un tradeoff entre inflación y desempleo mayor que en el primer periodo (1986-2023).
El objetivo es contrastar si existe tradeoff entre inflación (\(inf_t\)) y desempleo (\(des_t\)). Si las variables no son estacionarias la estimación MCO es sesgada e inconsistente y los estadísticos de contraste no son válidos.
Para contrastar estacionariedad se aplica el contraste de raíz
unitaria de Dickey Fuller Aumentado (ADF). Antes de llevar a cabo el
contraste de DFA hay que escoger la ecuación de contraste. Los gráficos
de las series indican que el desempleo no tiene tendencia por lo que se
lleva a cabo el contraste de DFA en la ecuación con constante.
La inflación sí muestra una tendencia decreciente por lo que se escoge
la ecuación con constante y con tendencia.
Para llevar a cabo el contraste de raíz unitaria se puede utilizar la
función ur.df del paquete urca. Esta función
permite seleccionar el número de retardos a incluir en la ecuación de
Dickey Fuller partiendo de un número máximo de retardos que hay que
establecer previamente. En este ejercicio consideramos 10 retardos como
máximo. La función ur.df da el valor del estadístico de
contraste y los valores críticos del contraste, pero no da el
p-valor.
Comenzamos contrastando la estacionariedad de la tasa de desempleo.
#Desempleo (1969-2023)
ur.df(y=data_AUT[,1],lags=10, type='drift', selectlags=c("BIC"))
##
## ###############################################################
## # Augmented Dickey-Fuller Test Unit Root / Cointegration Test #
## ###############################################################
##
## The value of the test statistic is: -2.4752 3.5152
#Con summary da la información completa
summary(ur.df(y=data_AUT[,1],lags=10, type='drift', selectlags=c("BIC")))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.0101 -0.4238 -0.1145 0.4616 1.3936
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.00856 0.38364 2.629 0.0120 *
## z.lag.1 -0.20808 0.08407 -2.475 0.0175 *
## z.diff.lag -0.09658 0.14660 -0.659 0.5137
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5919 on 41 degrees of freedom
## Multiple R-squared: 0.155, Adjusted R-squared: 0.1137
## F-statistic: 3.759 on 2 and 41 DF, p-value: 0.0317
##
##
## Value of test-statistic is: -2.4752 3.5152
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.51 -2.89 -2.58
## phi1 6.70 4.71 3.86
Resultados del contraste:
Para contrastar la estacionariedad de la inflación con la función ur.df.
#Inflación (1969-2023)
summary(ur.df(y=data_AUT[,2],lags=10, type='trend', selectlags=c("BIC")))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.7915 -0.7226 -0.3160 0.4422 5.4932
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.23470 1.04716 1.179 0.2453
## z.lag.1 -0.38846 0.18887 -2.057 0.0463 *
## tt -0.00412 0.02052 -0.201 0.8419
## z.diff.lag 0.24947 0.21478 1.161 0.2523
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.384 on 40 degrees of freedom
## Multiple R-squared: 0.1254, Adjusted R-squared: 0.05975
## F-statistic: 1.911 on 3 and 40 DF, p-value: 0.1433
##
##
## Value of test-statistic is: -2.0568 1.9694 2.8477
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -4.04 -3.45 -3.15
## phi2 6.50 4.88 4.16
## phi3 8.73 6.49 5.47
#donde "trend" indica que utilizamos la ecuación de DFA con constante y con tendencia
Resultados del contraste:
Se puede también llevar a cabo el contraste de raíz unitaria de DFA con las funciones unitrootTest y adfTest del paquete fUnitRoots. La diferencia entre ambas funciones es que unitrootTest utiliza los valores críticos de MacKinnon (1996) para calcular los p-valores (como Eviews), mientras que adfTest utiliza los valores críticos de Dickey Fuller para calcular los p-valores. Las dos funciones dan el valor del estadístico y p-valor, pero no permiten seleccionar el número de retardos a incluir en la ecuación. En este ejercicio consideramos 1 retardo (lags=1), que es el número de retardos seleccionado por la función ur.df tanto para la inflación como para el desempleo.
Para contrastar la estacionariedad del desempleo con el paquete fUnitRoots.
# Desempleo (1969-2023)
# Con la función "unitrootTest" (valores críticos de MacKinnon (1996))
unitrootTest(data_AUT[,1], lags = 1, type = c("c"))
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 1
## STATISTIC:
## DF: -1.444
## P VALUE:
## t: 0.554
## n: 0.8366
##
## Description:
## Fri May 2 00:07:59 2025 by user: User
# donde "lags" es el número de retardos a incluir en la ecuación, y "c" indica que se lleva a cabo el contraste en la ecuación de DFA con constante.
# Alternativamente, con la función "adfTest" (valores críticos de Dickey Fuller)
adfTest(data_AUT[,1], lags = 1, type = c("c"))
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 1
## STATISTIC:
## Dickey-Fuller: -1.444
## P VALUE:
## 0.5204
##
## Description:
## Fri May 2 00:07:59 2025 by user: User
# Le damos nombre y creamos un objeto con la información del contraste.
DF_des<-adfTest(data_AUT[,1], lags = 1, type = c("c"))
#Para comprobar que los residuos de la ecuación de DFA son un ruido blanco, vemos el correlograma de los residuos
acf(DF_des@test$lm$residuals, lag.max = 20, main = "Función de Autocorrelación (ACF)")
El resultado del contraste indica que el estadístico de DFA es igual a -1.444, con un p-valor=0.554 (valores críticos MacKinnon, 1996). No se rechaza la hipótesis nula de raíz unitaria al 5%.
El valor del estadístico de contraste (-1.444) difiere ligeramente del obtenido con la función ur.df (-2.4742). Esto se debe al periodo muestral considerado. ur.df considera la muestra ajustada por los 10 retardos que se han establecido como retardo máximo, mientras que las funciones del paquete fUnitRoots ajustan la muestra tomando en cuenta únicamente los retardos incluidos en la ecuación, en este caso 1 retardo.
Para contrastar la estacionariedad de la inflación con el paquete fUnitRoots.
# Inflación (1969-2023)
# Con "unitrootTest" (valores críticos de MacKinnon (1996))
unitrootTest(data_AUT[,2], lags = 1, type = c("ct"))
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 1
## STATISTIC:
## DF: -2.4501
## P VALUE:
## t: 0.3508
## n: 0.954
##
## Description:
## Fri May 2 00:07:59 2025 by user: User
# donde "ct" indica que se lleva a cabo el contraste en la ecuación de DFA con constante y con tendencia.
# Con "adfTest" (valores críticos de Dickey Fuller)
#CT POR QUE LLEVA CONSTRASTE Y TENDENCIA
adfTest(data_AUT[,2], lags = 1, type = c("ct"))
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 1
## STATISTIC:
## Dickey-Fuller: -2.4501
## P VALUE:
## 0.3932
##
## Description:
## Fri May 2 00:07:59 2025 by user: User
# Le damos nombre y creamos un objeto con la información del contraste.
DF_inf<-adfTest(data_AUT[,2], lags = 1, type = c("ct"))
#Para comprobar que los residuos son un ruido blanco, vemos el correlograma de los residuos
acf(DF_inf@test$lm$residuals, lag.max = 20, main = "Función de Autocorrelación (ACF)")
El resultado del contraste indica que el estadístico de DFA es igual a -2.4501, con un p-valor=0.3508 (valores críticos MacKinnon, 1996). No se rechaza la hipótesis nula de raíz unitaria al 10%.
Los resultados de los contrastes de raíz unitaria indican que las series de inflación y desempleo no son I(0), por lo que no se pueden incluir en niveles en una regresión MCO. No obstante la función de autocorrelación (gráfico) muestra que las series siguen un I(0).
La curva de Phillips estática viene dada por la siguiente ecuación: \[\ inf_t= \beta_0 + \beta_1 des_t + \epsilon_t \]
Esta forma de la curva de Phillips supone una tasa natural de desempleo constante y expectativas de inflación constantes, y se utiliza para estudiar la relación contemporánea entre la inflación y el desempleo. Si hay tradeoff entre inflación y desempleo entonces \(\beta_1<0\).
Los pasos a seguir en este apartado son:
1. Estimación de la curva de Phillips.
Para mayor comodidad renombramos a las variables, llamamos “des” al desempleo, e “inf” a la inflación en los tres conjuntos de datos.
# Cambiamos los nombres de las columnas de "data_AUT"
colnames(data_AUT)<-c("des", "inf")
head(data_AUT)
## des inf
## [1,] 2.8 3.080404
## [2,] 2.4 4.372824
## [3,] 1.5 4.704258
## [4,] 1.3 6.355146
## [5,] 1.2 7.531078
## [6,] 1.3 9.521788
# Cambiamos los nombres de las columnas de "data_AUT.1" y "data_AUT.2".
colnames(data_AUT.1)<-c("des", "inf")
colnames(data_AUT.2)<-c("des", "inf")
En primer lugar, estimamos el modelo \(\ inf_t= \beta_0 + \beta_1 des_t + \epsilon_t\) para la muestra completa (1969-2023). Para ello, se utiliza la función lm.
#Estimamos la curva de Phillips estática y la guardamos en un objeto llamado modelo1
modelo1<-lm(inf ~ des, data=data_AUT)
#Para ver los resultados se puede usar la función "summary".
summary( modelo1)
##
## Call:
## lm(formula = inf ~ des, data = data_AUT)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.5792 -0.8941 -0.3374 0.5483 6.2053
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.5229 0.6913 10.882 4.03e-15 ***
## des -1.0379 0.1629 -6.373 4.59e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.721 on 53 degrees of freedom
## Multiple R-squared: 0.4338, Adjusted R-squared: 0.4232
## F-statistic: 40.61 on 1 and 53 DF, p-value: 4.595e-08
El resultado no muestra tradeoff entre inflación y desempleo: \(\hat{\beta}_1 > 0\). El p-valor del estadístico t para \(\hat{\beta}_1\) es 4.59e-08 lo que indica que hay relación entre desempleo e inflación. existiría una relación negativa entre desempleo e inflación.
El periodo de análisis incluye la crisis del petróleo, lo que puede
afectar a los resultados del análisis. Para ver si la relación entre
inflación y desempleo cambia después de este periodo de fuerte
inflación, estimamos la ecuación por separado para cada una de las dos
submuestras: (1969-1985) y (1986-2023).
Estimamos la curva de Phillips estática para la primera submuestra (1969-1985).
# Estimamos la ecuación y la guardamos en un objeto llamado modelo1.1
modelo1.1<-lm(inf ~ des, data=data_AUT.1)
summary(modelo1.1)
##
## Call:
## lm(formula = inf ~ des, data = data_AUT.1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.25202 -1.09703 -0.09876 1.09502 2.74484
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 8.322 1.129 7.374 2.31e-06 ***
## des -1.188 0.457 -2.600 0.0201 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.661 on 15 degrees of freedom
## Multiple R-squared: 0.3107, Adjusted R-squared: 0.2648
## F-statistic: 6.762 on 1 and 15 DF, p-value: 0.02008
Estimamos la curva de Phillips estática para la segunda submuestra (1986-2023).
#Estimamos la ecuación y la guardamos en un objeto llamado modelo1.2
modelo1.2<-lm(inf ~ des, data=data_AUT.2)
summary(modelo1.2)
##
## Call:
## lm(formula = inf ~ des, data = data_AUT.2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.8332 -0.9022 -0.2816 0.2005 6.2320
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.8036 1.4802 2.570 0.0145 *
## des -0.2982 0.3063 -0.974 0.3368
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.624 on 36 degrees of freedom
## Multiple R-squared: 0.02565, Adjusted R-squared: -0.001413
## F-statistic: 0.9478 on 1 and 36 DF, p-value: 0.3368
Los resultados de las estimaciones por submuestras difieren. Para la primera submuestra \(\hat{\beta}_1\) es negativo y significativo al 10%, indicando una relación negativa entre inflación y desempleo, mostrando un tradeoff entre inflación y desempleo. En cambio, para el periodo (1986-2023) \(\hat{\beta}_1\) es negativo y no es significativo al 10%.
2. Contrastes de autocorrelación. El modelo de regresión estático suele presentar problemas de autocorrelación, lo que afectaría a la validez de los estadísticos de contraste habituales.
Para examinar autocorrelación, en primer lugar, miramos las funciones de autocorrelación de los residuos de los tres modelos estimados con la función acf.
# La función de autocorrelación de los residuos del modelo (1960-2023)
acf(modelo1$residuals, lag.max = 20, main = "Función de Autocorrelación (1960-2023)")
# La función de autocorrelación de los residuos del modelo (1960-1985)
acf(modelo1.1$residuals, lag.max = 20, main = "Función de Autocorrelación (1969-1985)")
# La función de autocorrelación de los residuos del modelo (1986-2023)
acf(modelo1.2$residuals, lag.max = 20, main = "Función de Autocorrelación (1986-2023)")
El correlograma de los residuos de las ecuaciones muestra autocorrelación positiva.
La función acf muestra por defecto la correlación desde el retardo 0. Si queremos que el correlograma comience en el retardo 1, se puede ajustar el eje de la gráfica o extraer los valores de la ACF y hacer el gráfico manualmente. Pregunta a la IA cómo hacerlo.
✅ Opción 1: Extraer los valores de la ACF y graficar manualmente (recomendado si deseas control total) r Copiar Editar # Calcular la ACF sin graficar acf_result <- acf(serie, plot = FALSE)
lags <- acf_result\(lag[-1] # Excluye el retardo 0 acf_values <- acf_result\)acf[-1]
plot(lags, acf_values, type = “h”, xlab = “Retardo”, ylab = “ACF”, main = “Correlograma desde retardo 1”) abline(h = 0) # Línea base
✅ Opción 2: Ajustar el eje del gráfico original para ocultar lag 0 (más limitado) Esto no elimina lag 0, pero puedes ajustar los límites del eje para que no se vea:
r Copiar Editar acf(serie, xlim = c(1, 20)) # Oculta visualmente el lag 0 ⚠️ Nota: Esta opción solo oculta el lag 0 visualmente, pero sigue siendo calculado e incluido en el objeto.
Fuente: ChatGPT (OpenAI)
En segundo lugar, aplicamos el contraste de Durbin-Watson (DW) con la función dwtest del paquete lmtest a los residuos de las tres ecuaciones estimadas.
#Contraste de Durbin-Watson (1960-2023)
dwtest(modelo1,alternative ="two.sided",iterations = 1000)
##
## Durbin-Watson test
##
## data: modelo1
## DW = 0.56108, p-value = 6.944e-11
## alternative hypothesis: true autocorrelation is not 0
#Contraste de Durbin-Watson (1960-1985)
dwtest(modelo1.1,alternative ="two.sided",iterations = 1000)
##
## Durbin-Watson test
##
## data: modelo1.1
## DW = 0.87363, p-value = 0.004095
## alternative hypothesis: true autocorrelation is not 0
#Contraste de Durbin-Watson (1986-2023)
dwtest(modelo1.2,alternative ="two.sided",iterations = 1000)
##
## Durbin-Watson test
##
## data: modelo1.2
## DW = 0.56763, p-value = 5.266e-08
## alternative hypothesis: true autocorrelation is not 0
En los tres casos se rechaza la hipótesis nula de no autocorrelación, por lo que hay evidencia de correlacción serial de primer orden.
En este ejemplo hemos aplicado el test de Durbin-Watson frente a la alternativa bilateral de “autocorrelación positiva o negativa”. Pregunta a la IA cómo aplicar el contraste frente a la alternativa unilateral de “autocorrelación positiva”.
📌 Valores válidos del argumento alternative en dwtest(): “two.sided”: autocorrelación positiva o negativa.
“greater”: autocorrelación positiva.
“less”: autocorrelación negativa.
Fuente: ChatGPT (OpenAI)
Por último, aplicamos el contraste de autocorrelacion de Breusch-Godfrey (BG) en las tres ecuaciones estimadas. Para ello se usa la función bgtest del paquete lmtest.
#Contraste de Breusch-Godfrey (1960-2023)
bgtest(modelo1,order = 1) # para contrastar autocorrelación de primer orden
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: modelo1
## LM test = 25.838, df = 1, p-value = 3.714e-07
bgtest(modelo1,order = 2) # para contrastar autocorrelación de segundo orden
##
## Breusch-Godfrey test for serial correlation of order up to 2
##
## data: modelo1
## LM test = 29.43, df = 2, p-value = 4.068e-07
#Contraste de Breusch-Godfrey (1960-1985)
bgtest(modelo1.1,order = 1) # para contrastar autocorrelación de primer orden
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: modelo1.1
## LM test = 4.9538, df = 1, p-value = 0.02603
bgtest(modelo1.1,order = 2) # para contrastar autocorrelación de hasta segundo orden
##
## Breusch-Godfrey test for serial correlation of order up to 2
##
## data: modelo1.1
## LM test = 5.8995, df = 2, p-value = 0.05235
bgtest(modelo1,order = 3) # para contrastar autocorrelación de hasta tercer orden
##
## Breusch-Godfrey test for serial correlation of order up to 3
##
## data: modelo1
## LM test = 29.82, df = 3, p-value = 1.506e-06
#Contraste de Breusch-Godfrey (1986-2023)
bgtest(modelo1.2,order = 1) # para contrastar autocorrelación de primer orden
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: modelo1.2
## LM test = 17.048, df = 1, p-value = 3.645e-05
bgtest(modelo1.2,order = 2) # para contrastar autocorrelación de hasta segundo orden
##
## Breusch-Godfrey test for serial correlation of order up to 2
##
## data: modelo1.2
## LM test = 19.561, df = 2, p-value = 5.655e-05
Los contrastes de autocorrelación de primer y segundo orden confirman que hay autocorrelación. En el primer y tercer caso se rechaza la hipótesis nula de no autocorrelación. No obsteante, el segundo caso no se rechaza, al 1% y al 5% en el primer y segundo orden respectivamente, la hipótesis nula de no autocorrelación. En el tercer orden se rechaza la hipotesis nula de no autocorrelación. Se puede repetir el test BG para contrastar autocorrelación de mayor orden sin que cambien los resultados.
Una consecuencia de la autocorrelación es que los errores estándar y los estadísticos de contraste habituales no son válidos. Para corregir las varianzas de los estimadores y obtener estadísticos de contraste adecuados hay que aplicar el método de Newey-West1. Para ello se utiliza la función NeweyWest del paquete sandwich. La función coeftest del paquete lmtest muestra los estadísticos t para el contraste de significatividad individual.
Estimación con errores estándar robustos a la autocorrelación (Newey-West) (1960-2023)
coeftest(modelo1,vcov=NeweyWest(modelo1)) # 1969-2023
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.5229 2.6450 2.8442 0.006314 **
## des -1.0379 0.9770 -1.0624 0.292888
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Estimación con errores estándar robustos a la autocorrelación (Newey-West) (1969-1985)
coeftest(modelo1.1,vcov=NeweyWest(modelo1.1)) # 1969-1985
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 8.32169 1.92338 4.3266 0.0005989 ***
## des -1.18826 0.51584 -2.3035 0.0359770 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Estimación con errores estándar robustos a la autocorrelación (Newey-West) (1983-2023)
coeftest(modelo1.2,vcov=NeweyWest(modelo1.2))# 1986-2023
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.80364 10.68544 0.3560 0.7239
## des -0.29823 3.27173 -0.0912 0.9279
Los resultados muestran que \(\hat{\beta}_1\) es significativo y negativo, pero no podemos confirmar la existencia de tradeoff entre inflación y desempleo porque no es significativo.
3. Contraste de cambio estructural y estimación del modelo con ficticias.
El análisis previo sugiere la existencia de un cambio estructural en la ecuación. Para confirmar este hecho llevamos a cabo el contraste de cambio estructural de Chow, fijando como fecha de cambio 1985. Podemos calcular el estadístico de contraste estimando el siguiente modelo con variables ficticias y contrastando la significatividad conjunta de las ficticias. El modelo con ficticias es:
\[\ inf_t= \beta_0 + \beta_1 des_t + \beta_2 f_t + \beta_3 fdes_t +\epsilon_t \]
donde \(f_t\) es una variable
ficticia aditiva que toma valor 0 hasta 1985 y valor 1 a partir de 1986,
y \(fdes_t\) es la variable ficticia
multiplicativa: \(fdes_t=f_t*des_t\).
El contraste de cambio estructural es:
\[ \left\{ \begin{array}{lll} H_0: \beta_2=\beta_3=0\\ H_1: no H_{0} \end{array} \right.\]
Para estimar el modelo y realizar el contraste hay que generar previamente las variables ficticias.
#para generar la ficticia aditiva (=0 hasta 1985, =1 desde 1986)
f <- ifelse(index(data_AUT) > 1985 , 1, 0)
#para generar la ficticia multiplicativa
fdes<-f*data_AUT[,1]
Estimamos el modelo con ficticias aditivas y multiplicativas y estimamos la función de autocorrelación de los residuos.
#Estimamos el modelo y lo guardamos en un objeto llamado modelo2
modelo2<-lm(inf ~des+f+fdes, data=data_AUT)
summary(modelo2)
##
## Call:
## lm(formula = inf ~ des + f + fdes, data = data_AUT)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.2520 -0.9373 -0.2644 0.5945 6.2320
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 8.3217 1.1111 7.490 9.19e-10 ***
## des -1.1883 0.4499 -2.641 0.0109 *
## f -4.5181 1.8587 -2.431 0.0186 *
## fdes 0.8900 0.5454 1.632 0.1089
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.635 on 51 degrees of freedom
## Multiple R-squared: 0.5085, Adjusted R-squared: 0.4796
## F-statistic: 17.59 on 3 and 51 DF, p-value: 5.716e-08
# La función de autocorrelación de los residuos del modelo con ficticias
acf(modelo2$residuals, lag.max = 20, main = "Función de Autocorrelación")
El correlograma de los residuos del modelo con ficticias muestra autocorrelación positiva. Para confirmar la existencia de autocorrelación aplicamos los contrastes de DW y BG.
#Contraste de Durbin-Watson. Modelo con ficticias
dwtest(modelo2,alternative ="two.sided",iterations = 1000)
##
## Durbin-Watson test
##
## data: modelo2
## DW = 0.66119, p-value = 8.775e-10
## alternative hypothesis: true autocorrelation is not 0
#Contraste de Breusch-Godfrey. Modelo con ficticias
bgtest(modelo2,order = 1) # para contrastar autocorrelación de primer orden
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: modelo2
## LM test = 21.921, df = 1, p-value = 2.841e-06
Los contrastes de autocorrelación rechazan la hipótesis nula y confirman la existencia de autocorrelación.Por tanto, debemos aplicar el test de Chow corrigiendo las varianzas con el método de Newey-West.Para hacer el contraste utilizamos la función linearHypothesis del paquete car. Como hay autocorrelación corregimos las varianzas utilizando el método de Newey_West.
# Especificamos el modelo en el que queremos hacer el contraste, la hipótesis nula y el estadístico de contraste
linearHypothesis(modelo2, c("f=0","fdes=0"), vcov = NeweyWest(modelo2))
El contraste no rechaza la hipótesis nula confirmando que no hay un cambio estructural en 1985.
Para modelizar el cambio estructural estimamos el modelo con ficticias. Dado que el modelo presenta autocorrelación hay que aplicar el método de Newey-West para corregir las varianzas y hacer inferencia de forma adecuada.
Estimación del modelo con ficticias con errores estándar robustos a la autocorrelación (Newey-West).
coeftest(modelo2,vcov=NeweyWest(modelo2))#
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 8.32169 1.94640 4.2754 8.366e-05 ***
## des -1.18826 0.52172 -2.2776 0.02697 *
## f -4.51805 10.95406 -0.4125 0.68173
## fdes 0.89003 3.32797 0.2674 0.79021
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Una vez corregidas las varianzas por el método de Newey-West, los
estadísticos t de significatividad individual indican que las dos
ficticias incluidas no son significativas. La estimación del modelo con
ficticias no replica los resultados de la estimación por submuestras,
por lo que se concluye que hay evidencia a favor de un efecto
sustitución entre inflación y desempleo.
Nota: El contraste de Chow se puede aplicar automaticamente en R con la función sctest del paquete strucchange. El contraste es válido en presencia de autocorrelación o heteroscedasticidad porque permite aplicar la corrección de Newey_West.
Para contrastar cambio estructural con la función sctest.
# Contrastamos cambio en 1985, corresponde a la observación 23 del fichero de datos
sctest(inf~ des, data=data_AUT, type = "Chow", point = 17)
##
## Chow test
##
## data: inf ~ des
## F = 3.8727, p-value = 0.02718
El valor del estadístico de contraste (3.8727) difiere del obtenido cuando hemos aplicado la corrección de Newey-West (0.9478). En este caso, el contraste rechaza la hipótesis nula indicando la existencia de un cambio estructural en 1985, pero utilizar la función sctest cuando el modelo presenta autocorrelación o heteroscedasticidad puede llevar a conclusiones erróneas.
Cuando no se sabe la fecha de ruptura se pueden utilizar tests de cambio estructural secuenciales con la función Fstats. Si hay picos significativos en la serie de F-stats, indican posibles cambios estructurales en esos puntos.
fs <- Fstats(inf~ des, data=data_AUT)
plot(fs)
El problema de esta función es que tampoco considera autocorrelación ni heteroscedasticidad, por lo que no es fiable en nuestro caso. A pesar de ello, el gráfico de los test secuenciales muestra un pico en 1985, justamente la fecha de cambio que hemos escogido.
La curva de Phillips estática no es el mejor modelo para determinar
si hay un efecto sustitución a corto plazo entre la inflación y el
desempleo. Los economistas prefieren la curva de Phillips aumentada por
las expectativas de inflación. Bajo el supuesto de expectativas
adaptativas, el valor esperado de la inflación actual depende de la
inflación pasada.
En este apartado se estima una versión de la curva de Phillips aumentada por expectativas para el intervalo temporal más reciente: 1986-2023 (data_AUT.2). Se queda fuera del análisis la crisis del petroleo que puede distorsionar los resultados. El modelo econométrico es:
\[\ inf_t= \beta_0 + \beta_1 \ inf_{t-1} + \beta_2 \ des_t +\beta_3 \ des_{t-1}+\epsilon_t \] Los pasos a seguir en este apartado son:
1. Contrastes de estacionariedad.
En primer lugar, hay que contrastar la estacionariedad de las series de inflación y desempleo para el periodo (1986-2023). Los gráficos de las series muestran que el desempleo y la inflación no presentan tendencia en este periodo, por lo que, en ambos casos, se lleva a cabo el contraste de DFA en la ecuación con constante.
Comenzamos contrastando estacionariedad con la función ur.df para seleccionar el número de retardos del modelo. Consideramos como máximo 6 retardos en la Ecuación de DFA.
El contraste de raíz unitaria para el desempleo.
#Desempleo (1986-2023)
summary(ur.df(y=data_AUT.2[,1],lags=6, type='drift', selectlags=c("BIC")))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.16243 -0.34610 -0.00962 0.35548 1.32777
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.78021 0.84284 3.299 0.00265 **
## z.lag.1 -0.54442 0.16781 -3.244 0.00304 **
## z.diff.lag -0.02875 0.17068 -0.168 0.86743
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5783 on 28 degrees of freedom
## Multiple R-squared: 0.3195, Adjusted R-squared: 0.2709
## F-statistic: 6.574 on 2 and 28 DF, p-value: 0.004565
##
##
## Value of test-statistic is: -3.2442 5.4682
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.58 -2.93 -2.60
## phi1 7.06 4.86 3.94
El contraste de raíz unitaria para la inflación.
#Inflación (1986-2023)
summary(ur.df(y=data_AUT.2[,2],lags=6, type='drift', selectlags=c("BIC")))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.6473 -0.6628 -0.2797 0.4254 5.3601
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.5007 0.6241 2.404 0.0231 *
## z.lag.1 -0.6639 0.2781 -2.387 0.0240 *
## z.diff.lag 0.5460 0.2909 1.877 0.0709 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.32 on 28 degrees of freedom
## Multiple R-squared: 0.1692, Adjusted R-squared: 0.1099
## F-statistic: 2.851 on 2 and 28 DF, p-value: 0.07464
##
##
## Value of test-statistic is: -2.3869 2.9843
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.58 -2.93 -2.60
## phi1 7.06 4.86 3.94
Resultados del contraste:
Si se contrasta estacionariedad con la función unitrootTest estableciendo lags=1, los resultados numéricos son ligeramente diferentes, pero conducen a la misma conclusión. Se rechaza la Hipótesis nula de raíz unitaria al 5% para la inflación, y al 10% para el desempleo
# Desempleo (1986-2023)
unitrootTest(data_AUT.2[,1], lags = 1, type = c("c"))
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 1
## STATISTIC:
## DF: -2.1254
## P VALUE:
## t: 0.2363
## n: 0.7541
##
## Description:
## Fri May 2 00:07:59 2025 by user: User
# Inflación (1986-2023)
unitrootTest(data_AUT.2[,2], lags = 1, type = c("c"))
##
## Title:
## Augmented Dickey-Fuller Test
##
## Test Results:
## PARAMETER:
## Lag Order: 1
## STATISTIC:
## DF: -2.4021
## P VALUE:
## t: 0.1481
## n: 0.7194
##
## Description:
## Fri May 2 00:07:59 2025 by user: User
Los contrastes de raíz unitaria indican que las series de inflación y desempleo son I(0) para el periodo (1986-2023), por lo que se pueden estimar la curva de Phillips por MCO.
2. Estimación de la curva de Phillips aumentada con expectativas.
La curva de Phillips aumentada con expectativas: \(\ inf_t= \beta_0 + \beta_1 \ inf_{t-1} + \beta_2 \
des_t +\beta_3 \ des_{t-1}+\epsilon_t\) es un modelo dinámico de
endógena retardada.
Para estimar modelos dinámicos se puede utilizar la función
dynlm del paquete dynlm. Este paquete permite
utilizar el operador retardos, L(), donde L(x, 1) indica el primer
retardo de la variable x.
Estimamos el modelo dinámico.
#Estimamos el modelo dinámico y guardamos los resultados en un objeto llamado modelo3
modelo3<-dynlm(inf~L(inf,1)+des+L(des,1), data=data_AUT.2)
summary(modelo3)
##
## Time series regression with "ts" data:
## Start = 1987, End = 2023
##
## Call:
## dynlm(formula = inf ~ L(inf, 1) + des + L(des, 1), data = data_AUT.2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.6762 -0.6018 0.0293 0.3218 4.1652
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.07212 1.30619 0.055 0.95630
## L(inf, 1) 0.84402 0.14521 5.812 1.68e-06 ***
## des -0.88747 0.33332 -2.662 0.01190 *
## L(des, 1) 0.99158 0.32413 3.059 0.00438 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.149 on 33 degrees of freedom
## Multiple R-squared: 0.5505, Adjusted R-squared: 0.5096
## F-statistic: 13.47 on 3 and 33 DF, p-value: 6.627e-06
Contrastamos autocorrelación.
# La función de autocorrelación de los residuos del modelo3
acf(modelo3$residuals, lag.max = 20, main = "Función de Autocorrelación (1986-2023)")
#Contrastes de autocorrelacion de Breusch-Godfrey en el modelo3
bgtest(modelo3,order = 1)
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: modelo3
## LM test = 4.7069, df = 1, p-value = 0.03004
bgtest(modelo3,order = 2)
##
## Breusch-Godfrey test for serial correlation of order up to 2
##
## data: modelo3
## LM test = 4.7421, df = 2, p-value = 0.09338
A diferencia de lo que ocurre en el modelo estático, en el modelo dinámico no hay evidencia de autocorrelación residual. Los contrastes de autocorrelación de BG con 1 y 2 retardos no rechazan la hipótesis nula de “no autocorrelación”. Se pueden repetir estos contrastes con más retardos y los resultados no cambian. El test de DW no es adecuado en este caso porque es un modelo de endógena retardada y no hay exogeneidad estricta.
Como no hay autocorrelación, podemos contrastar heteroscedasticidad. Utilizamos la función bptest para aplicar el test de Breusch-Pagan.
#Contraste de heteroscedasticidad de Breusch-Pagan en el modelo3
bptest(modelo3,data = data_AUT.2)
##
## studentized Breusch-Pagan test
##
## data: modelo3
## BP = 6.8596, df = 3, p-value = 0.07651
No se rechaza la hipótesis nula al 5% por lo que el modelo es homoscedástico. Podemos utilizar los estadísticos t y F habituales para hacer inferencia en el modelo.
Los resultados de los contrastes de significatividad en el modelo estimado muestran que todas las variables son estadísticamente significativas, y que el desempleo tiene un efecto contemporáneo negativo y significativo sobre la inflación. Además, el modelo cumple la condición de estabilidad porque \(\left| \hat{\beta}_1 \right|<1\).
Si representamos en un gráfico la serie de inflación, la serie estimada y los residuos del modelo observamos que el ajuste es relativamente bueno. Al final del periodo, coincidiendo con el repunte inflacionista ocasionado por la guerra en Ucrania los residuos toman valores más elevados y la serie estimada se ajusta peor a la serie observada.
residuos<-resid(modelo3)
inflacion<-data_AUT.2[,"inf"]
inflacion.estimada<-fitted(modelo3)
autoplot(cbind(residuos,inflacion,inflacion.estimada), facets=FALSE) +
xlab("Year") + ylab("") +geom_hline(yintercept = 0, linetype = "dashed", color = "black")+
ggtitle("Modelo dinámico. Residuos,valores observados y ajustados")
3. Cálculo de los multiplicadores.
El multiplicador de corto plazo (multiplicador de impacto) es \(\beta_2\). El valor estimado es: \(\hat{\beta}_2=-0.88747\). El multiplicador de corto plazo es estadísticamente significativo, lo que sugiere un tradeoff contemporáneo entre inflación y desempleo. Si la tasa de desempleo sube 1 punto porcentual, en promedio la tasa de inflación disminuye casí 0.89 puntos porcentuales ese mismo año.
El multiplicador de largo plazo es: \(\dfrac{\beta_2+\beta_3}{1- \beta_1}\). El valor estimado es 0.6675 Para contrastar si el multiplicador de largo plazo es significativo tenemos que llevar a cabo el siguiente contraste de hipótesis: \[ \left\{ \begin{array}{lll} H_{0}:& \beta_{2}+\beta_{3}=0\\ H_{1}: & no H_{0} \end{array} \right.\]
Para hacer el contraste utilizamos la función linearHypothesis del paquete car.
# Especificamos el modelo en el que queremos hacer el contraste, la hipótesis nula y el estadístico de contraste
linearHypothesis(modelo3,c("des+L(des, 1)=0"),test="F")
El estadístico F vale 0.1778 y tiene un p-valor=0.676, por lo que no se rechaza la hipótesis nula indicando que a la largo plazo no hay relación entre inflación y desempleo.
Una versión más simple de la curva de Phillips aumentada con expectativas adaptativas supone que la inflación esperada para este año es la inflación del último año. Partiendo de este supuesto se puede escribir la curva de Phillips aumentada con expectativas del apartado anterior así:
\[\ inf_t-\ inf_{t-1}= \beta_0 + \beta_1 \ des_t +\beta_2 \ des_{t-1}+\epsilon_t \] o bien
\[\Delta inf_t = \beta_0 + \beta_1 \ des_t +\beta_2 \ des_{t-1}+\epsilon_t \] donde \(\Delta inf_t= \ inf_t-\ inf_{t-1}\). Por tanto, está versión de la curva de Phillips relaciona la variación de la inflación con el desempleo.
Los pasos a seguir en este apartado son:
1. Cálculo de las primeras diferencias de la inflación y contraste de estacionariedad.
Para estimar este modelo hay que generar previamente las primeras diferencias de la inflación \(\Delta inf_t\).
#Para calcular las primeras diferencias de la inflación
dinf=diff(data_AUT.2[,"inf"])
#Para ver un gráfico
ts.plot(dinf, col=2, xlab="Year", ylab ="", main="Variación de la inflación en Estados Unidos (1984-2023)")
Comprobamos que las primeras diferencias de la inflación son I(0).
# Contraste de raíz unitaria sobre las primeras diferencias de la inflación (Ecuación con constante)
summary(ur.df(y=dinf,lags=6, type='drift', selectlags=c("BIC")))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.4905 -0.6733 -0.2706 0.1717 5.5361
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.1250 0.2542 0.492 0.6269
## z.lag.1 -1.4867 0.3126 -4.756 5.87e-05 ***
## z.diff.lag 0.5170 0.2745 1.884 0.0704 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.383 on 27 degrees of freedom
## Multiple R-squared: 0.5596, Adjusted R-squared: 0.5269
## F-statistic: 17.15 on 2 and 27 DF, p-value: 1.558e-05
##
##
## Value of test-statistic is: -4.7558 11.36
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.58 -2.93 -2.60
## phi1 7.06 4.86 3.94
2. Estimación del modelo.
Estimamos el modelo.
#Estimamos el modelo y guardamos los resultados en un objeto llamado modelo4
modelo4<-dynlm(dinf~des+L(des,1), data=data_AUT.2)
summary(modelo4)
##
## Time series regression with "ts" data:
## Start = 1987, End = 2023
##
## Call:
## dynlm(formula = dinf ~ des + L(des, 1), data = data_AUT.2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.7890 -0.7552 -0.0041 0.3049 3.9692
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.5665 1.1657 -0.486 0.63007
## des -0.8932 0.3340 -2.674 0.01144 *
## L(des, 1) 1.0584 0.3188 3.320 0.00216 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.152 on 34 degrees of freedom
## Multiple R-squared: 0.2471, Adjusted R-squared: 0.2028
## F-statistic: 5.58 on 2 and 34 DF, p-value: 0.008023
Contrastamos autocorrelación.
# La función de autocorrelación de los residuos del modelo4
acf(modelo4$residuals, lag.max = 20, main = "Función de Autocorrelación")
#Contrastes de autocorrelacion de Breusch-Godfrey en el modelo4
bgtest(modelo4,order = 1)
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: modelo4
## LM test = 0.24638, df = 1, p-value = 0.6196
bgtest(modelo4,order = 2)
##
## Breusch-Godfrey test for serial correlation of order up to 2
##
## data: modelo4
## LM test = 2.1663, df = 2, p-value = 0.3385
bgtest(modelo4,order = 3)
##
## Breusch-Godfrey test for serial correlation of order up to 3
##
## data: modelo4
## LM test = 2.2932, df = 3, p-value = 0.5138
No se rechaza la hipótesis nula. No hay autocorrelación. Podemos contrastar ahora heteroscedasticidad.
#Contraste de heteroscedasticidad de Breusch-Pagan en el modelo4
bptest(modelo4)
##
## studentized Breusch-Pagan test
##
## data: modelo4
## BP = 5.7689, df = 2, p-value = 0.05588
El modelo presenta autocorrelación y heteroscedasticidad al 10%, podemos hacer inferencia con los estadísticos habituales.
3. Cálculo de los multiplicadores.
El multiplicador de corto plazo (multiplicador de impacto) es \(\beta_1\). El valor estimado es: \(\hat{\beta}_1=-0.8932\). El multiplicador de corto plazo es estadísticamente significativo, lo que sugiere un tradeoff contemporáneo entre la variación de la inflación y el desempleo.
El multiplicador de largo plazo es: \(\beta_1+\beta_2\). El valor estimado es 0.1652. Para contrastar si el multiplicador de largo plazo es significativo tenemos que llevar a cabo el siguiente contraste de hipótesis: \[ \left\{ \begin{array}{lll} H_{0}:& \beta_{1}+\beta_{2}=0\\ H_{1}: & no H_{0} \end{array} \right.\]
Para hacer el contraste utilizamos la función linearHypothesis del paquete car.
# Especificamos el modelo en el que queremos hacer el contraste, la hipótesis nula y el estadístico de contraste
linearHypothesis(modelo4,c("des+L(des, 1)=0"),test="F")
El estadístico F vale 0.4707 y tiene un p-valor=0.4973, por lo que no se rechaza la hipótesis nula indicando que a la largo plazo hay relación entre la variación de la inflación y el desempleo.
Newey-West proporciona errores estándar robustos a la autocorrelación y a la heteroscedasticidad, lo que permite obtener estadísticos de contraste válidos cuando los errores presentan autocorrelación y/o heteroscedasticidad.↩︎