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.
# 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
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()
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.
En el caso de n impar: datos <- datos %>%
y debajo
mutate(x = (anios - mean(anios) ))
.
En el caso de n par: datos <- datos %>%
y debajo
mutate(x = (anios - mean(anios) )*2)
.
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
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
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()
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
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()
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