Estoy trabajando en este problema de economía y me siento un poco perdido. Esperaba que alguien pudiera ayudarme.
- Supongamos que hay una granja en la que hay dos variables: Rendimiento del cultivo y Costo del fertilizante.
- Estoy interesado en hacer un modelo de series temporales para modelar la relación entre el Rendimiento del cultivo y el Costo del fertilizante (es decir, cuánto fertilizante elijo comprar, suponiendo que fijo la cantidad de dinero que estoy dispuesto a gastar en fertilizante como constante).
- En concreto, creo que el Rendimiento del cultivo está influenciado por los valores de (rezagado-1) y (rezagado-2) del Rendimiento del cultivo y el Costo del fertilizante.
- Después de investigar un poco, me parece que un modelo ARIMAX es una buena elección para este problema.
- Al final, quiero responder las siguientes preguntas:
- ¿Cuál es el impacto (estimado) de cada dólar extra de costo de fertilizante en el rendimiento del cultivo?
- Supongamos que tengo 3 opciones durante los próximos 12 meses: Invertir 1000 dólares cada mes en fertilizante, Invertir 2000 dólares cada mes en fertilizante, Invertir 3000 dólares cada mes en fertilizante. ¿Cuál de estas opciones resultará en el mayor rendimiento del cultivo acumulado (estimado) en 12 meses?
Intenté expresar esto en términos matemáticos:
Deje que $ Y_t $ represente el rendimiento del cultivo en el tiempo $ t $, y permita que $ F_t $ represente el costo del fertilizante en el tiempo $ t $. Suponemos que el precio del fertilizante permanece constante, por lo que las variaciones en $ F_t $ reflejan la cantidad de fertilizante comprado.
El rendimiento del cultivo $ Y_t $ está influenciado por:
- El rendimiento del cultivo en rezago-1 ($ Y_{t-1} $) y rezago-2 ($ Y_{t-2} $),
- El costo del fertilizante en rezago-1 ($ F_{t-1} $) y rezago-2 ($ F_{t-2} $).
La relación entre el rendimiento del cultivo y el costo del fertilizante se puede modelar utilizando un modelo ARIMAX de la siguiente manera:
$$ Y_t = \alpha_0 + \alpha_1 Y_{t-1} + \alpha_2 Y_{t-2} + \beta_1 F_{t-1} + \beta_2 F_{t-2} + \epsilon_t $$
donde: $ \alpha_0 $ es el término de intercepción. $ \alpha_1, \alpha_2 $ son los coeficientes para los rendimientos del cultivo rezagados, $ \beta_1, \beta_2 $ son los coeficientes para los costos del fertilizante rezagados, $ \epsilon_t $ es el término de error.
Así, me parece que $\beta$ representaría el impacto estimado del fertilizante en el rendimiento del cultivo ... ¿podría agregar las previsiones estimadas de 12 meses para cada opción para averiguar el beneficio neto? ¿Es correcta mi comprensión de Economía?
¿Alguien puede decirme si voy por buen camino?
¡Gracias!
- Nota: Intenté hacer una simulación en R para representar mi problema.
Primero simulo datos:
library(forecast)
library(ggplot2)
library(dplyr)
library(tsibble)
set.seed(123)
n <- 100
dates <- seq(as.Date("2020-01-01"), by = "month", length.out = n)
fertilizer <- runif(n, 500, 1500)
seasonal_effect <- sin(2 * pi * (1:n) / 12) * 200
trend <- seq(0, 500, length.out = n)
crop_yield <- 0.5 * fertilizer + seasonal_effect + trend + arima.sim(list(ar = c(0.7, 0.2)), n) + rnorm(n, 0, 50)
data <- tibble(
date = dates,
crop_yield = crop_yield,
fertilizer = fertilizer
) %>%
as_tsibble(index = date)
Luego, ajusto el modelo:
model <- auto.arima(data$crop_yield, xreg = cbind(data$fertilizer))
A partir de ahí, preparé los datos para el pronóstico:
future_dates <- seq(from = max(dates), by = "month", length.out = 13)
generate_forecast <- function(cost) {
future_fertilizer <- c(tail(data$fertilizer, 1), rep(cost, 12))
forecast_result <- forecast(model, xreg = future_fertilizer, h = 13)
list(
date = future_dates,
crop_yield = as.numeric(forecast_result$mean),
fertilizer = future_fertilizer,
lower = as.numeric(forecast_result$lower[, 2]),
upper = as.numeric(forecast_result$upper[, 2]),
scenario = paste0("Fertilizer $", cost)
)
}
Luego, ajusté los pronósticos y los representé gráficamente:
forecast_1000 <- generate_forecast(1000)
forecast_2000 <- generate_forecast(2000)
forecast_3000 <- generate_forecast(3000)
ggplot() +
geom_line(data = data, aes(x = date, y = crop_yield, color = "Histórico")) +
geom_point(data = data, aes(x = date, y = crop_yield, color = "Histórico")) +
geom_line(data = tibble(date = forecast_1000$date, crop_yield = forecast_1000$crop_yield), aes(x = date, y = crop_yield, color = "Fertilizante $1000")) +
geom_line(data = tibble(date = forecast_2000$date, crop_yield = forecast_2000$crop_yield), aes(x = date, y = crop_yield, color = "Fertilizante $2000")) +
geom_line(data = tibble(date = forecast_3000$date, crop_yield = forecast_3000$crop_yield), aes(x = date, y = crop_yield, color = "Fertilizante $3000")) +
geom_ribbon(data = tibble(date = forecast_1000$date, ymin = forecast_1000$lower, ymax = forecast_1000$upper), aes(x = date, ymin = ymin, ymax = ymax, fill = "Fertilizante $1000"), alpha = 0.2) +
geom_ribbon(data = tibble(date = forecast_2000$date, ymin = forecast_2000$lower, ymax = forecast_2000$upper), aes(x = date, ymin = ymin, ymax = ymax, fill = "Fertilizante $2000"), alpha = 0.2) +
geom_ribbon(data = tibble(date = forecast_3000$date, ymin = forecast_3000$lower, ymax = forecast_3000$upper), aes(x = date, ymin = ymin, ymax = ymax, fill = "Fertilizante $3000"), alpha = 0.2) +
scale_color_manual(values = c("Histórico" = "black",
"Fertilizante $1000" = "azul",
"Fertilizante $2000" = "rojo",
"Fertilizante $3000" = "verde")) +
scale_fill_manual(values = c("Fertilizante $1000" = "azul",
"Fertilizante $2000" = "rojo",
"Fertilizante $3000" = "verde")) +
labs(title = "Pronóstico de Rendimiento del Cultivo - Escenarios de Costo de Fertilizante",
x = "Fecha",
y = "Rendimiento del Cultivo",
color = "Escenario",
fill = "Intervalo de Pronóstico") +
theme_minimal() +
theme(legend.position = "inferior")