7 votos

Predicción de la carga eléctrica diaria: ajuste de series temporales

Quiero predecir la carga eléctrica interdiaria. Mis datos son las cargas eléctricas de 11 meses, muestreadas en intervalos de 30 minutos. También tengo los datos específicos del tiempo de una estación meteorológica (temperatura, humedad relativa, dirección del viento, velocidad del viento, luz solar). A partir de estos datos, quiero predecir la carga eléctrica hasta el final del día.

Puedo ejecutar mi algoritmo hasta las 10:00 del día en curso y después debería dar la predicción de cargas en intervalos de 30 minutos. Así, debería decir la carga a las 10:30, 11:00, 11:30 y así sucesivamente hasta las 24:00.

Mi primer intento fue crear un modelo lineal en R.

BP.TS <- ts(Buying.power, frequency = 48)
a <- data.frame(
Time, BP.TS, Weekday, Pressure, Temperature, RelHumidity, AvgWindSpeed, AvgWindDirection, MaxWindSpeed, MaxWindDirection, SunLightTime,
m, Buying.2dayago, AfterHolidayAndBPYesterday8, MovingAvgLast7DaysMidnightTemp
)
a <- a[(6*48+1):nrow(a),]

start = 9716
steps.ahead = 21
par(mfrow=c(5,2))
for (i in 1:10) {
    train <- a[1:(start+(i-1)*48),]
    test <- a[((i-1)*48+start+1):((i-1)*48+start+steps.ahead),]
    summary(reg <- lm(log(BP.TS)~., data=train, na.action=NULL))
    pred <- exp(predict(reg, test))

    plot(test$BP.TS, type="o")
    lines(pred, col=2)
    cat("MAE", mean(abs(test$BP.TS - pred)), "\n")
}

Esto no tiene mucho éxito. Ahora intento modelar los datos con ARIMA. He utilizado auto.arima() de la paquete de previsiones . Estos son los resultados que obtuve:

> auto.arima(BP.TS)
Series: BP.TS 
ARIMA(2,0,1)(1,1,2)[48]                    

Call: auto.arima(x = BP.TS) 

Coefficients:
         ar1      ar2     ma1    sar1     sma1    sma2
      1.1816  -0.2627  -0.554  0.4381  -1.2415  0.3051
s.e.  0.0356   0.0286   0.033  0.0952   0.0982  0.0863

sigma^2 estimated as 256118:  log likelihood = -118939.7
AIC = 237893.5   AICc = 237893.5   BIC = 237947

Ahora si intento algo como:

reg = arima(train$BP.TS, order=c(2,0,1), xreg=cbind(
train$Time, 
train$Weekday, 
train$Pressure, 
train$Temperature, 
train$RelHumidity, 
train$AvgWindSpeed, 
train$AvgWindDirection, 
train$MaxWindSpeed, 
train$MaxWindDirection, 
train$SunLightTime,
train$Buying.2dayago,
train$MovingAvgLastNDaysLoad,
train$X1, train$X2, train$X3, train$X4, train$X5, train$X6, train$X7, train$X8, train$X9, 
train$X11, train$X12, train$X13, train$X14, train$X15, train$X16, train$X17, train$X18, 
train$MovingAvgLast7DaysMidnightTemp
))

p <- predict(reg, n.ahead=21, newxreg=cbind(
test$Time, 
test$Weekday, 
test$Pressure, 
test$Temperature, 
test$RelHumidity, 
test$AvgWindSpeed, 
test$AvgWindDirection, 
test$MaxWindSpeed, 
test$MaxWindDirection, 
test$SunLightTime,
test$Buying.2dayago,
test$MovingAvgLastNDaysLoad,
test$X1, test$X2, test$X3, test$X4, test$X5, test$X6, test$X7, test$X8, test$X9, 
test$X11, test$X12, test$X13, test$X14, test$X15, test$X16, test$X17, test$X18, 
test$MovingAvgLast7DaysMidnightTemp
))

plot(test$BP.TS, type="o", ylim=c(6300,8300))
par(new=T)
plot(p$pred, col=2, ylim=c(6300,8300))
cat("MAE", mean(p$se), "\n")

Obtengo resultados aún peores. ¿Por qué? Me he quedado sin ideas, así que por favor ayuda. Si hay información adicional que necesito dar, por favor pregunte.

4 votos

Se prueban modelos muy generales para problemas concretos. ¿Has investigado antes de probar estos modelos? La búsqueda en Google sobre "previsión de la carga eléctrica" ofrece muchos enlaces.

4 votos

Hay mucha literatura sobre este problema. Consulte forecasters.org/ijf/journal-issue/320 para algunos trabajos publicados en el IJF.

0 votos

¿Sabe por qué su modelo lineal no tiene éxito? ¿Y ha introducido una gran cantidad de predictores en su modelo, sin pensarlo mucho? - Yo encontraría primero los 4 ó 5 mejores predictores y vería cómo van (en el modelo lineal).

12voto

Alp Puntos 446

He jugado con modelos de demanda eléctrica, y puedo decirte que es una buena idea empezar "alejándose". Cada región tiene sus propias características, pero la idea general es la misma.

La demanda eléctrica es función de muchas variables. Empezando por los términos más lentos.

  1. La actividad económica general es el término que se mueve con más lentitud (normalmente entre 3 y 8 años). Este término suele estar relacionado con el Producto Interior Bruto de la zona. En general, la demanda eléctrica puede crecer más rápido que el PIB, pero los "aumentos" de la demanda eléctrica durante las épocas de bonanza económica y los "descensos" de la demanda durante las recesiones proporcionan un vínculo evidente con el PIB. Véase la línea azul del primer gráfico.

  2. A continuación, está el Plazo Estacional (marco temporal anual). Por ejemplo, en EE.UU., el pico de verano aparece en agosto, el de invierno en enero, el de primavera en abril y el de otoño en noviembre. Véase la línea roja en los dos gráficos superiores. En el segundo gráfico, he mostrado que el Término Estacional es constante para cada mes, pero se puede mejorar fácilmente mediante una relación lineal o no lineal para cada mes (marco temporal mensual).

  3. Ahora está en el marco temporal diario. El gráfico inferior muestra la demanda eléctrica de Texas durante un periodo de 24 horas (22/12/2010). El pico diurno fue a las 7:00PM (19:00) y el mínimo nocturno fue a las 4:00AM (04:00). En esta franja horaria hay que tener en cuenta las vacaciones, los fines de semana, el tiempo, etc. Sin embargo, tenga en cuenta que esas otras variables (en 1 y 2 más arriba) también están afectando a sus resultados.

Así que, por tu descripción, tienes datos de 11 meses. Observa el primer gráfico que aparece a continuación y asume que tienes datos para 11 meses. ¿Es suficiente para hacerse una idea del término estacional del año? Yo utilizaría un mínimo de 10 años de datos mensuales para hacerme una idea de la duración estacional. La idea es ajustar la estructura de su modelo diario de forma diferente durante los meses de "cambio estacional rápido" que durante los meses de "cambio estacional lento".

A continuación, yo jugaría con el tamaño y la estructura de la "ventana de datos" que utilizará para estimar su modelo diario. Por ejemplo, ¿obtendrá un modelo diario mejor si incluye datos diarios de otoño e invierno al estimar un modelo diario de verano? ¿O es mejor utilizar 10 "ventanas de datos de verano" reescaladas, una para cada año de los 10 años de datos, al estimar un modelo diario de verano?

Una vez que todos los términos deterministas funcionen bien, entonces, y sólo entonces, iría a por los términos ARIMA.

enter image description here

enter image description here

enter image description here

0 votos

Estimado bill_080, gracias por su elaborada respuesta. Sé que disponer de más datos sería de gran ayuda, pero por desgracia sólo dispongo de 11 meses de datos. ¿Es posible construir un modelo sobre otros datos y utilizar este modelo para mis datos? Entonces, ¿cómo habría que ajustar el modelo al aplicarlo a los nuevos datos? ¿Es factible? ¿Estoy mirando en la dirección correcta, o estoy condenado por los pocos datos que tengo en mi caso concreto? Muchas gracias.

0 votos

@Grega: Estás un poco condenado en el sentido de que necesitas más datos. Sin embargo, los datos de demanda eléctrica que necesitas pueden ser más fáciles de encontrar de lo que crees. Por ejemplo, en Texas aquí tienes un enlace: ercot.es/gridinfo/load/index ¿Qué zona del mundo intenta pronosticar?

0 votos

@bill_080: Estoy intentando pronosticar la carga eléctrica de una fábrica en el centro de Japón. Mi pregunta sigue en pie. ¿Es posible elaborar un modelo sobre otros datos y aplicarlo a mi caso concreto? ¿Pero no sería entonces diferente la dinámica del sistema?

2voto

Alp Puntos 446

@Grega:

Me he quedado sin espacio en la zona de comentarios, así que he empezado otra respuesta.

Por tu comentario, ese es el problema. Cada sistema/red tiene su propia "firma". Es una combinación de la dinámica del sistema, la edad, el clima, la economía local, las culturas, las tradiciones, etc. En Japón es peor. Algunas zonas del país funcionan a 50 Hz y otras a 60 Hz. Estas redes se conectan en estaciones de corriente continua de alto voltaje, lo que significa que algunas zonas se comportan como "islas" eléctricas (comportamiento totalmente distinto al de sus vecinas a pocos kilómetros de distancia). Si se concentra en una sola fábrica, la previsibilidad disminuye aún más. Menos usuarios significa mayor incertidumbre.

No importa cómo lo hagas, va a ser un lío.

Yo filtraría el componente diario/día de la semana/fin de semana/festivo para obtener un Término Estacional. ¿Cómo? ¿Una media móvil CENTRADA de 31 días? ¿Una CMA de 51 días? ¿Una CMA de XX días? Usted tendrá que experimentar con eso, pero yo lo haría una variable para que pueda ajustar más tarde. Sea cual sea el filtro que elija, tenga en cuenta que se detendrá en cualquiera de los extremos de sus datos (una media móvil centrada de 31 días comenzará en el día 16 de sus datos brutos y terminará en el día 16 desde el final de sus datos brutos).

A continuación, lo mejor que puede hacer con 11 meses de datos es "maquillar" el mes 12 (trace una línea desde su serie filtrada en su final hasta su principio). A continuación, reste su Término Estacional (los datos filtrados) de sus datos brutos para obtener un residuo. Ajuste el residual a sus datos meteorológicos, teniendo en cuenta los factores de día de la semana y días festivos.

Algunos factores que puede necesitar añadir son:

1) El factor "tirada". Independientemente de lo que fabriquen en esta fábrica, si cambian de un producto/categoría a otro, la demanda de energía necesaria para fabricar un producto puede ser diferente de la necesaria para otro.

2) Un factor de "cambio". Es cuando pasan de un producto/categoría a otro. A veces hacen falta días de preparación para el cambio.

3) Un factor de "turno de trabajo". Si tienen tres turnos al día, la demanda de energía del turno de noche será probablemente muy diferente de la de los turnos de día.

Buena suerte. Como probablemente sepas, este tipo de problema puede llegar a ser realmente frustrante.

\====== Editar para responder al primer comentario de Grega (25/01/2011) ====================

@Grega: Respondiendo a tu primer comentario, me temo que no. La idea detrás de un modelo como este sería tener múltiples "instancias similares" de tus 32 puntos futuros, para poder ajustar esos puntos, y luego predecir nuevos puntos. No tienes "instancias similares" típicas porque ayer no era el mismo día de la semana que hoy. Tiene que utilizar el mismo día de la semana de la semana pasada y el mismo día de la semana de la semana anterior, etc. Cuando se obtienen varios "casos similares" (por ejemplo, 20), normalmente ya han pasado más de 20 semanas (un día festivo puede estropear una o varias semanas). En ese momento, la estación del año es completamente distinta. Por lo tanto, para utilizar esos días en otra estación, debe eliminar el término estacional de los datos brutos.

Es una situación chapucera, pero es lo mejor que se puede hacer con 11 meses de datos.

0 votos

Sólo un pensamiento más, no sé si es obvio por mi post inicial. No estoy prediciendo con muchos días (o meses/años) de antelación. Intento predecir con un máximo de 16 horas de antelación (con un muestreo de 30 minutos, esto significa 32 puntos). ¿Cambia el planteamiento con este hecho?

0 votos

@Grega, he añadido una respuesta a tu comentario como edición en la respuesta anterior.

0 votos

Lo siento nada relacionado con la pregunta original, pero ¿sabes algo sobre el mercado eléctrico australiano? Parece bastante estable, especialmente con todo su carbón fácilmente disponible?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X