Actividad - Sesion 04

library(tidyverse)
library(forecast)
library(quantmod)
library(AER)
library(MASS)
library(tseries)
library(stats)
library(car)
library(lmtest)
library(urca)
library(aTSA)

Utilizando las siguientes caminatas aleatorias realiza una regresión lineal y decide sí se trata de una regresión sin sentido o si por el contrario es el caso de un fenómeno de Cointegración.

Para realizar tu análisis incluye un modelo lineal (comando lm). A su vez, utiliza la prueba de Dickey-Fuller aumentada (adf.test()), los correlogramas (acf()) y la prueba de Engle-Granger (coint.test()) para respaldar tus conclusiones.

n <- 240
set.seed(180188)
u <- rnorm(n)
v <- rnorm(n)

X <- 0
Y <- 0

for (t in 2:n){
  X[t] <- X[t-1] + u[t]
  Y[t] <- Y[t-1] + v[t]
}

options(scipen = 999)

Análisis del primer ejemplo

# Revisa la información creada
plot(X, type="l", main="Grafica X")

plot(Y, type="l", main="Grafica Y")

cor(Y, X)
## [1] 0.6960341
plot(Y, X)

# Explicar las gráficas
# Paso 1: realiza una regresión lineal
BD <- data.frame(X, Y)
RE <- lm(Y~X, data=BD)
summary(RE)
## 
## Call:
## lm(formula = Y ~ X, data = BD)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.0492 -3.3070 -0.0299  2.5518 14.4081 
## 
## Coefficients:
##             Estimate Std. Error t value            Pr(>|t|)    
## (Intercept)  5.03357    0.28586   17.61 <0.0000000000000002 ***
## X            1.29574    0.08664   14.96 <0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.365 on 238 degrees of freedom
## Multiple R-squared:  0.4845, Adjusted R-squared:  0.4823 
## F-statistic: 223.7 on 1 and 238 DF,  p-value: < 0.00000000000000022
plot(X,Y)
abline(RE, col='blue')

# Decide entre regresión sin sentido y cointegración

Este código de R se utiliza para realizar un análisis de regresión lineal simple y visualizar los resultados en un gráfico. Ademas, la elección entre regresión lineal y cointegración depende de la naturaleza de los datos y el objetivo del análisis. Si se necesita una comprensión más profunda y a largo plazo de la relación entre las variables, entonces la cointegración sería más adecuada. Si solo se necesita modelar la relación en un sentido más general, entonces la regresión lineal puede ser suficiente.

# Paso 2: Pruebas Dickey-Fuller
adf.test(BD[,1])
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag   ADF p.value
## [1,]   0 -1.80  0.0734
## [2,]   1 -1.68  0.0903
## [3,]   2 -1.72  0.0849
## [4,]   3 -1.79  0.0748
## [5,]   4 -1.33  0.2020
## Type 2: with drift no trend 
##      lag   ADF p.value
## [1,]   0 -1.74   0.431
## [2,]   1 -1.60   0.485
## [3,]   2 -1.62   0.476
## [4,]   3 -1.69   0.448
## [5,]   4 -1.23   0.616
## Type 3: with drift and trend 
##      lag   ADF p.value
## [1,]   0 -3.47  0.0459
## [2,]   1 -3.18  0.0911
## [3,]   2 -3.15  0.0962
## [4,]   3 -3.32  0.0675
## [5,]   4 -2.98  0.1643
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01
adf.test(BD[,2])
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag    ADF p.value
## [1,]   0 -0.608   0.461
## [2,]   1 -0.659   0.443
## [3,]   2 -0.526   0.491
## [4,]   3 -0.580   0.471
## [5,]   4 -0.630   0.454
## Type 2: with drift no trend 
##      lag   ADF p.value
## [1,]   0 -1.20   0.628
## [2,]   1 -1.22   0.618
## [3,]   2 -1.06   0.674
## [4,]   3 -1.17   0.637
## [5,]   4 -1.29   0.595
## Type 3: with drift and trend 
##      lag   ADF p.value
## [1,]   0 -2.18   0.498
## [2,]   1 -2.32   0.442
## [3,]   2 -2.23   0.478
## [4,]   3 -2.21   0.485
## [5,]   4 -2.17   0.504
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01
acf(RE$residuals, type="correlation")

#Correlograma
par(mfrow=c(2,1))
acf(X, main="Autocorrelación de X")
acf(Y, main="Autocorrelación de Y")

En resumen, según los resultados del test de Dickey-Fuller, no hay suficiente evidencia para rechazar la hipótesis nula de no estacionariedad en la serie debido a los p-value demasiado altos. Esto implica que la serie puede tener raíces unitarias y, por lo tanto, puede requerir algún tipo de transformación o diferenciación para lograr la estacionariedad.

# paso 3: Engle-Granger
coint.test(Y,X)
## Response: Y 
## Input: X 
## Number of inputs: 1 
## Model: y ~ X + 1 
## ------------------------------- 
## Engle-Granger Cointegration Test 
## alternative: cointegrated 
## 
## Type 1: no trend 
##     lag      EG p.value 
##    4.00   -2.57    0.10 
## ----- 
##  Type 2: linear trend 
##     lag      EG p.value 
##   4.000   0.296   0.100 
## ----- 
##  Type 3: quadratic trend 
##     lag      EG p.value 
##   4.000   0.228   0.100 
## ----------- 
## Note: p.value = 0.01 means p.value <= 0.01 
##     : p.value = 0.10 means p.value >= 0.10
# coint.test(Y,X, d=1)
# coint.test(y=diff(Y),X=diff(X), d=1)

En base a los diferentes resultados de la prueba EG, el valor p es mayor a 0.05 en cada una de los tipos de la prueba, por ello podemos afirmar que no hay Cointegración.

# Paso 4: Respalda tus conclusiones
# Regresión sin sentido

En esta primera parte de la Actividad nos hemos dado cuenta que tanto que con la prueba Dickey-Fuller y con la Engle Granger. Las series no cuentan con un p-valor suficiente para poder concluir que cuentan con Cointegración o Estacionariedad, lo que da a entender que tienen a tener una raíz unitaria.

Adicionalmente, repite el análisis realizado en clase para las series del CPI y el Expenditure en la base de datos ‘USMacroSWM’ (que es parte de la librería AER); pero ahora analiza la relación entre las series de producción y petróleo. De forma que debes tratar de explicar la serie de tiempo de la producción en términos de la serie de tiempo del petróleo.

Para iniciar este análisis puedes utilizar el siguiente código para cargar las bases de datos necesarias y crear una nueva base que sólo tenga las dos series de tiempo en cuestión en el periodo de tiempo que ambas series cuentan con información (Enero 1948 a Diciembre 2004).

?USMacroSWM
data("USMacroSWM", package = "AER")
head(USMacroSWM)
##          production oil   cpi expenditure
## Jan 1947      17.04  NA 21.48          NA
## Feb 1947      17.14  NA 21.62          NA
## Mar 1947      17.24  NA 22.00          NA
## Apr 1947      17.10  NA 22.00          NA
## May 1947      17.17  NA 21.95          NA
## Jun 1947      17.17  NA 22.08          NA
TS = ts(USMacroSWM[-(1:12),1:2], start=1948, freq=12)
head(TS)
##          production  oil
## Jan 1948      17.87 0.06
## Feb 1948      17.91 0.00
## Mar 1948      17.71 0.00
## Apr 1948      17.74 0.00
## May 1948      18.04 0.00
## Jun 1948      18.28 0.00

Análisis de los datos Macroeconómicos de Estados Unidos, cargados en el chunk anterior.

plot(TS[,2], type="l", main="Serie Petróleo")

plot(TS[,1], type="l", main="Serie Producción")

plot(TS[,2], TS[,1], xlab="Petróleo", ylab="Producción", main="Producción vs Petróleo")

adf.test(TS[,1])
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag  ADF p.value
## [1,]   0 8.79    0.99
## [2,]   1 5.91    0.99
## [3,]   2 4.67    0.99
## [4,]   3 4.07    0.99
## [5,]   4 3.97    0.99
## [6,]   5 4.02    0.99
## [7,]   6 3.85    0.99
## Type 2: with drift no trend 
##      lag  ADF p.value
## [1,]   0 2.53    0.99
## [2,]   1 1.69    0.99
## [3,]   2 1.25    0.99
## [4,]   3 1.06    0.99
## [5,]   4 1.08    0.99
## [6,]   5 1.14    0.99
## [7,]   6 1.07    0.99
## Type 3: with drift and trend 
##      lag    ADF p.value
## [1,]   0 -0.752   0.966
## [2,]   1 -1.221   0.903
## [3,]   2 -1.545   0.770
## [4,]   3 -1.774   0.673
## [5,]   4 -1.833   0.648
## [6,]   5 -1.804   0.660
## [7,]   6 -1.849   0.641
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01
adf.test(TS[,2])
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag    ADF p.value
## [1,]   0 -15.97    0.01
## [2,]   1 -12.17    0.01
## [3,]   2 -10.97    0.01
## [4,]   3  -9.34    0.01
## [5,]   4  -7.67    0.01
## [6,]   5  -7.18    0.01
## [7,]   6  -6.45    0.01
## Type 2: with drift no trend 
##      lag    ADF p.value
## [1,]   0 -16.83    0.01
## [2,]   1 -13.00    0.01
## [3,]   2 -11.89    0.01
## [4,]   3 -10.24    0.01
## [5,]   4  -8.52    0.01
## [6,]   5  -8.05    0.01
## [7,]   6  -7.30    0.01
## Type 3: with drift and trend 
##      lag    ADF p.value
## [1,]   0 -17.22    0.01
## [2,]   1 -13.38    0.01
## [3,]   2 -12.30    0.01
## [4,]   3 -10.66    0.01
## [5,]   4  -8.92    0.01
## [6,]   5  -8.47    0.01
## [7,]   6  -7.72    0.01
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01
adf.test(diff(TS[,1]))
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag    ADF p.value
## [1,]   0 -17.13    0.01
## [2,]   1 -11.15    0.01
## [3,]   2  -8.79    0.01
## [4,]   3  -8.05    0.01
## [5,]   4  -7.68    0.01
## [6,]   5  -6.95    0.01
## [7,]   6  -6.44    0.01
## Type 2: with drift no trend 
##      lag    ADF p.value
## [1,]   0 -18.46    0.01
## [2,]   1 -12.22    0.01
## [3,]   2  -9.77    0.01
## [4,]   3  -9.04    0.01
## [5,]   4  -8.72    0.01
## [6,]   5  -7.99    0.01
## [7,]   6  -7.49    0.01
## Type 3: with drift and trend 
##      lag    ADF p.value
## [1,]   0 -18.60    0.01
## [2,]   1 -12.33    0.01
## [3,]   2  -9.88    0.01
## [4,]   3  -9.16    0.01
## [5,]   4  -8.85    0.01
## [6,]   5  -8.12    0.01
## [7,]   6  -7.62    0.01
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01
adf.test(diff(TS[,2]))
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag   ADF p.value
## [1,]   0 -37.5    0.01
## [2,]   1 -25.4    0.01
## [3,]   2 -22.6    0.01
## [4,]   3 -21.4    0.01
## [5,]   4 -18.2    0.01
## [6,]   5 -17.0    0.01
## [7,]   6 -15.2    0.01
## Type 2: with drift no trend 
##      lag   ADF p.value
## [1,]   0 -37.5    0.01
## [2,]   1 -25.3    0.01
## [3,]   2 -22.6    0.01
## [4,]   3 -21.3    0.01
## [5,]   4 -18.2    0.01
## [6,]   5 -17.0    0.01
## [7,]   6 -15.2    0.01
## Type 3: with drift and trend 
##      lag   ADF p.value
## [1,]   0 -37.5    0.01
## [2,]   1 -25.3    0.01
## [3,]   2 -22.6    0.01
## [4,]   3 -21.3    0.01
## [5,]   4 -18.2    0.01
## [6,]   5 -17.0    0.01
## [7,]   6 -15.2    0.01
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01
adf.test(diff(TS[,1], differences=2))
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag   ADF p.value
## [1,]   0 -43.4    0.01
## [2,]   1 -29.7    0.01
## [3,]   2 -22.3    0.01
## [4,]   3 -18.4    0.01
## [5,]   4 -17.1    0.01
## [6,]   5 -15.8    0.01
## [7,]   6 -15.3    0.01
## Type 2: with drift no trend 
##      lag   ADF p.value
## [1,]   0 -43.4    0.01
## [2,]   1 -29.7    0.01
## [3,]   2 -22.3    0.01
## [4,]   3 -18.4    0.01
## [5,]   4 -17.1    0.01
## [6,]   5 -15.8    0.01
## [7,]   6 -15.3    0.01
## Type 3: with drift and trend 
##      lag   ADF p.value
## [1,]   0 -43.4    0.01
## [2,]   1 -29.7    0.01
## [3,]   2 -22.3    0.01
## [4,]   3 -18.4    0.01
## [5,]   4 -17.1    0.01
## [6,]   5 -15.8    0.01
## [7,]   6 -15.3    0.01
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01
adf.test(diff(TS[,2], differences=2))
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag   ADF p.value
## [1,]   0 -53.7    0.01
## [2,]   1 -34.5    0.01
## [3,]   2 -28.4    0.01
## [4,]   3 -27.3    0.01
## [5,]   4 -23.9    0.01
## [6,]   5 -22.7    0.01
## [7,]   6 -20.0    0.01
## Type 2: with drift no trend 
##      lag   ADF p.value
## [1,]   0 -53.6    0.01
## [2,]   1 -34.4    0.01
## [3,]   2 -28.4    0.01
## [4,]   3 -27.3    0.01
## [5,]   4 -23.9    0.01
## [6,]   5 -22.7    0.01
## [7,]   6 -20.0    0.01
## Type 3: with drift and trend 
##      lag   ADF p.value
## [1,]   0 -53.6    0.01
## [2,]   1 -34.4    0.01
## [3,]   2 -28.4    0.01
## [4,]   3 -27.2    0.01
## [5,]   4 -23.9    0.01
## [6,]   5 -22.7    0.01
## [7,]   6 -19.9    0.01
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01
ndiffs(TS[,1])
## [1] 1
ndiffs(TS[,2])
## [1] 1
MRL_TS <- lm(TS[,2] ~ TS[,1], data=TS)
summary(MRL_TS)
## 
## Call:
## lm(formula = TS[, 2] ~ TS[, 1], data = TS)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.019549 -0.010618 -0.005645 -0.001272  0.288197 
## 
## Coefficients:
##                Estimate  Std. Error t value    Pr(>|t|)    
## (Intercept) -0.00307991  0.00242800  -1.268       0.205    
## TS[, 1]      0.00019192  0.00003712   5.170 0.000000308 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.02799 on 682 degrees of freedom
## Multiple R-squared:  0.03771,    Adjusted R-squared:  0.0363 
## F-statistic: 26.73 on 1 and 682 DF,  p-value: 0.0000003085
#Esta es mi parte

plot(TS[,1], TS[,2], ylab="Petróleo", xlab="Producción", main="Petróleo vs Producción")
abline(MRL_TS, col="red")

cor(TS)
##            production       oil
## production  1.0000000 0.1941889
## oil         0.1941889 1.0000000
plot(MRL_TS$residuals, type="l")

adf.test(MRL_TS$residuals)
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag    ADF p.value
## [1,]   0 -17.33    0.01
## [2,]   1 -13.48    0.01
## [3,]   2 -12.41    0.01
## [4,]   3 -10.76    0.01
## [5,]   4  -9.02    0.01
## [6,]   5  -8.57    0.01
## [7,]   6  -7.82    0.01
## Type 2: with drift no trend 
##      lag    ADF p.value
## [1,]   0 -17.32    0.01
## [2,]   1 -13.47    0.01
## [3,]   2 -12.40    0.01
## [4,]   3 -10.76    0.01
## [5,]   4  -9.01    0.01
## [6,]   5  -8.56    0.01
## [7,]   6  -7.81    0.01
## Type 3: with drift and trend 
##      lag    ADF p.value
## [1,]   0 -17.31    0.01
## [2,]   1 -13.46    0.01
## [3,]   2 -12.39    0.01
## [4,]   3 -10.75    0.01
## [5,]   4  -9.00    0.01
## [6,]   5  -8.56    0.01
## [7,]   6  -7.81    0.01
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01
plot(diff(MRL_TS$residuals))

adf.test(diff(MRL_TS$residuals))
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag   ADF p.value
## [1,]   0 -37.5    0.01
## [2,]   1 -25.4    0.01
## [3,]   2 -22.6    0.01
## [4,]   3 -21.4    0.01
## [5,]   4 -18.2    0.01
## [6,]   5 -17.0    0.01
## [7,]   6 -15.2    0.01
## Type 2: with drift no trend 
##      lag   ADF p.value
## [1,]   0 -37.5    0.01
## [2,]   1 -25.3    0.01
## [3,]   2 -22.6    0.01
## [4,]   3 -21.4    0.01
## [5,]   4 -18.2    0.01
## [6,]   5 -17.0    0.01
## [7,]   6 -15.2    0.01
## Type 3: with drift and trend 
##      lag   ADF p.value
## [1,]   0 -37.5    0.01
## [2,]   1 -25.3    0.01
## [3,]   2 -22.6    0.01
## [4,]   3 -21.3    0.01
## [5,]   4 -18.2    0.01
## [6,]   5 -17.0    0.01
## [7,]   6 -15.2    0.01
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01
coint.test(y=TS[,2],X=TS[,1], d=1)
## Response: diff(TS[, 2],1) 
## Input: diff(TS[, 1],1) 
## Number of inputs: 1 
## Model: y ~ X - 1 
## ------------------------------- 
## Engle-Granger Cointegration Test 
## alternative: cointegrated 
## 
## Type 1: no trend 
##     lag      EG p.value 
##    6.00  -17.00    0.01 
## ----- 
##  Type 2: linear trend 
##     lag      EG p.value 
##   6.000  -0.989   0.100 
## ----- 
##  Type 3: quadratic trend 
##     lag      EG p.value 
##   6.000  -0.578   0.100 
## ----------- 
## Note: p.value = 0.01 means p.value <= 0.01 
##     : p.value = 0.10 means p.value >= 0.10
coint.test(y=diff(TS[,2]),X=diff(TS[,1]), d=1)
## Response: diff(diff(TS[, 2]),1) 
## Input: diff(diff(TS[, 1]),1) 
## Number of inputs: 1 
## Model: y ~ X - 1 
## ------------------------------- 
## Engle-Granger Cointegration Test 
## alternative: cointegrated 
## 
## Type 1: no trend 
##     lag      EG p.value 
##    6.00  -22.90    0.01 
## ----- 
##  Type 2: linear trend 
##     lag      EG p.value 
##    6.00   -0.13    0.10 
## ----- 
##  Type 3: quadratic trend 
##     lag      EG p.value 
##   6.000   0.126   0.100 
## ----------- 
## Note: p.value = 0.01 means p.value <= 0.01 
##     : p.value = 0.10 means p.value >= 0.10
# ?coint.test
coint.test(y=TS[,2],X=TS[,1], d=1)
## Response: diff(TS[, 2],1) 
## Input: diff(TS[, 1],1) 
## Number of inputs: 1 
## Model: y ~ X - 1 
## ------------------------------- 
## Engle-Granger Cointegration Test 
## alternative: cointegrated 
## 
## Type 1: no trend 
##     lag      EG p.value 
##    6.00  -17.00    0.01 
## ----- 
##  Type 2: linear trend 
##     lag      EG p.value 
##   6.000  -0.989   0.100 
## ----- 
##  Type 3: quadratic trend 
##     lag      EG p.value 
##   6.000  -0.578   0.100 
## ----------- 
## Note: p.value = 0.01 means p.value <= 0.01 
##     : p.value = 0.10 means p.value >= 0.10
coint.test(y=diff(TS[,2]),X=diff(TS[,1]), d=1)
## Response: diff(diff(TS[, 2]),1) 
## Input: diff(diff(TS[, 1]),1) 
## Number of inputs: 1 
## Model: y ~ X - 1 
## ------------------------------- 
## Engle-Granger Cointegration Test 
## alternative: cointegrated 
## 
## Type 1: no trend 
##     lag      EG p.value 
##    6.00  -22.90    0.01 
## ----- 
##  Type 2: linear trend 
##     lag      EG p.value 
##    6.00   -0.13    0.10 
## ----- 
##  Type 3: quadratic trend 
##     lag      EG p.value 
##   6.000   0.126   0.100 
## ----------- 
## Note: p.value = 0.01 means p.value <= 0.01 
##     : p.value = 0.10 means p.value >= 0.10
# ?po.test
po.test(TS)
## Warning in po.test(TS): p-value greater than printed p-value
## 
##  Phillips-Ouliaris Cointegration Test
## 
## data:  TS
## Phillips-Ouliaris demeaned = -4.2398, Truncation lag parameter = 6,
## p-value = 0.15
t1 <- diff(TS[,1])
t2 <- diff(TS[,2])
z <- ts(cbind(t1, t2))
po.test(z)
## Warning in po.test(z): p-value smaller than printed p-value
## 
##  Phillips-Ouliaris Cointegration Test
## 
## data:  z
## Phillips-Ouliaris demeaned = -560.46, Truncation lag parameter = 6,
## p-value = 0.01
# ?grangertest
grangertest(TS, order=1)
grangertest(x=TS[,2], y=TS[,1], order=1)

Gráfica serie petróleo La prueba dickey-fuller indica un p-value de 0.01, por lo que es no estacionaria y sin tendencia. La gráfica muestra que el precio del petróleo ha fluctuado significativamente a lo largo del tiempo debiéndose a factores como guerras, revoluciones, etc.

Gráfico serie producción La prueba dickey-fuller indica un p-value de 0.99 por lo que es estacionaria y con tendencia positiva.

Gráfica producción vs petroleo

La prueba dickey-fuller indica un p-value de 0.01, la gráfica muestra que existe una fuerte correlación positiva entre la producción y el consumo de petróleo.

Estacionariedad:

Tanto la serie de producción como la de petróleo resultaron no estacionarias en su forma original, así lo confirman los resultados de las pruebas de Dickey-Fuller, que muestran que los valores p son superiores a 0,05 para todas las series.

Cointegración:

Los resultados de la prueba muestran cointegración entre las series diferenciadas (es decir, los cambios en la producción y el petróleo) con un valor p de 0,01 para los tipos 1 y 2 (sin tendencia y tendencia lineal), esto significa que podría existir una relación lineal estable entre los cambios en la producción y los precios del petróleo a largo plazo.

Análisis de regresión:

El coeficiente de determinación (R-cuadrado) es bajo (0,037), lo que sugiere que el modelo sólo explica una pequeña parte de la varianza de los precios del petróleo utilizando los datos de producción. Esto podría deberse a otros factores que también influyen en los precios del petróleo o a la naturaleza no lineal de la relación.

Análisis de residuos:

Los residuos de la regresión resultaron estacionarios porque el modelo de regresión fue capaz de captar la tendencia lineal en la relación entre las variaciones de la producción y los precios del petróleo, lo que indica que el modelo captó la relación lineal entre los cambios en la producción y los precios del petróleo en la medida en que es posible con un modelo lineal.