Descripción de los datos

En actividades de pesca se observa con frecuencia que cuantas más embarcaciones participen menos captura habrá por embarcación. Esto es un hecho razonable ya que cuando se considera que el stock de peces es un recurso limitado, debe compartirse entre todas las embarcaciones. Los siguientes datos representan información durante un lapso de once años acerca de la pesquería de camarones en Pakistán. En esa oportunidad, se desea estudiar el volumen capturado por embarcación por año (toneladas) durante este periodo de tiempo.

Carga de los datos

# Vector de datos de variable explicativa: Tiempo en años
anios <- c(2014:2024)
anios
##  [1] 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
# Vector de datos de variable expicada: Volumen de captura de camarones
capturas<-c(43.5,42.6,38.4,30.8,25.2,30.5,27.4,21.1,26.1,26.9,28.5)
capturas
##  [1] 43.5 42.6 38.4 30.8 25.2 30.5 27.4 21.1 26.1 26.9 28.5
# Creamos un data frame a partir de los vectores generados
datos <- data.frame(anios, capturas)
summary(datos)# resumen estadístico de las variables del conjunto de datos
##      anios         capturas   
##  Min.   :2014   Min.   :21.1  
##  1st Qu.:2016   1st Qu.:26.5  
##  Median :2019   Median :28.5  
##  Mean   :2019   Mean   :31.0  
##  3rd Qu.:2022   3rd Qu.:34.6  
##  Max.   :2024   Max.   :43.5

Gráfico de la serie de tiempo

Utilizaremos la librería ggplot2 de R para graficar:

library(ggplot2)
ggplot(datos, aes(x = anios, y = capturas)) +
  geom_line(color = "blue") +
  geom_point(color = "black") +
  labs(title = "Captura de camarón por embarcación - 2014 a 2024",
       x = "Año",
       y = "Volumen capturado de camararón (tn) por embarcación") +
  theme_minimal()

Codificación de la variable tiempo

Crearemos una nueva variable \(x\) que es la codificación del tiempo. Servirá para ingresarla como variable explicativa en el proceso de estimación de los coeficientes de los modelos que crearemos.

dim(datos) #para conocer cuántas filas tenemos en el data frame
## [1] 11  2
library(dplyr)
datos <- datos %>%
  mutate(x = (anios - mean(anios) )) # mutate(x = (anios - mean(anios) )) para n impar ó mutate(x = (anios - mean(anios) )*2) en el caso de n par
datos
##    anios capturas  x
## 1   2014     43.5 -5
## 2   2015     42.6 -4
## 3   2016     38.4 -3
## 4   2017     30.8 -2
## 5   2018     25.2 -1
## 6   2019     30.5  0
## 7   2020     27.4  1
## 8   2021     21.1  2
## 9   2022     26.1  3
## 10  2023     26.9  4
## 11  2024     28.5  5

Estimación del Modelo Lineal para la tendencia secular

Utilizamos la función \(lm\) y la variable \(x\) del tiempo codificado.

mod1 <- lm(capturas ~ x, datos)   ## usamos la función "lm(y~x,datos)"
mod1
## 
## Call:
## lm(formula = capturas ~ x, data = datos)
## 
## Coefficients:
## (Intercept)            x  
##      31.000       -1.745
summary(mod1)
## 
## Call:
## lm(formula = capturas ~ x, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -7.5445 -2.7723  0.3336  3.3277  6.2227 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  31.0000     1.4311  21.661 4.49e-09 ***
## x            -1.7445     0.4526  -3.855  0.00388 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.746 on 9 degrees of freedom
## Multiple R-squared:  0.6228, Adjusted R-squared:  0.5809 
## F-statistic: 14.86 on 1 and 9 DF,  p-value: 0.003877

Gráfica del modelo lineal sobre la serie de tiempo

ggplot(datos, aes(x = x, y = capturas)) +
  geom_line(color = "blue") + #valores observados
  geom_point(color = "black") +  #valores observados
  geom_smooth(method = "lm", se = FALSE,color="green") +  #modelo lineal
  labs(title = "Captura de camarón por embarcación - 2014 a 2024",
       x = "Año codificado",
       y = "Volumen capturado de camararón (tn) por embarcación") +
  theme_minimal()

Estimación del Modelo Cuadrático para la tendencia secular

Utilizamos la función \(lm\) y las variables \(x\) del tiempo codificado y I(x^2) que representa para R el cuadrado de la variable explicativa \(x\), es decir \(x^2\).

mod2 <- lm(capturas ~ x + I(x^2), data = datos)
summary(mod2)
## 
## Call:
## lm(formula = capturas ~ x + I(x^2), data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.0144 -1.7533  0.4817  1.9823  3.4942 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 27.00583    1.30708  20.661 3.15e-08 ***
## x           -1.74455    0.27362  -6.376 0.000215 ***
## I(x^2)       0.39942    0.09797   4.077 0.003549 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.87 on 8 degrees of freedom
## Multiple R-squared:  0.8774, Adjusted R-squared:  0.8468 
## F-statistic: 28.64 on 2 and 8 DF,  p-value: 0.0002256

Gráfica del modelo cuadrático sobre la serie de tiempo

ggplot(datos, aes(x, capturas)) +
  geom_line(color = "blue") + #valores observados
  geom_point(color = "blue", size = 2) +  # puntos observados
  stat_smooth(method = "lm", formula = y ~ x + I(x^2),se = FALSE, color = "red") +
  labs(title = "Captura de camarón por embarcación - 2014 a 2024",
       x = "Año codificado",
       y = "Volumen capturado de camararón (tn) por embarcación") +
  theme_minimal()

Gráfico de ambos modelos sobre la serie original

ggplot(datos, aes(anios, capturas)) +
  geom_point(aes(color = "Datos observados")) +
  geom_line(aes(color = "Datos observados")) +
  geom_smooth(aes(color = "Modelo lineal"), method = "lm", formula = y ~ x, se = FALSE) +
  geom_smooth(aes(color = "Modelo cuadrático"), method = "lm", formula = y ~ x + I(x^2), se = FALSE) +
  labs(title = "Captura de camarón por embarcación - 2014 a 2024",
       x = "Año",
       y = "Volumen capturado de camararón (tn) por embarcación",
       color = "Referencias") +
  theme_minimal()+
  scale_x_continuous(breaks = datos$anios, labels = datos$anios)   # esto asegura que los años se vean