Package 'MEFM'

Title: Monash Electricity Forecasting Model
Description: This package includes a set of tools for implementing the Monash Electricity Forecasting Model for electricity demand. The package requires the following data as input: half-hourly/hourly electricity demands; half-hourly/hourly temperatures at one or two locations; seasonal demographical and economical data; public holiday data. The formats of the required data are described in the help files.
Authors: Rob Hyndman [aut, cre, cph] , Shu Fan [aut]
Maintainer: Rob Hyndman <[email protected]>
License: GPL (>=2)
Version: 2.2
Built: 2024-11-10 05:45:46 UTC
Source: https://github.com/robjhyndman/MEFM-package

Help Index


Monash Electricity Forecasting Model

Description

This package includes a set of tools for implementing the Monash Electricity Forecasting Model based on the paper by Hyndman and Fan (2010).

The package requires the following data as input: half-hourly/hourly electricity demands; half-hourly/hourly temperatures at one or two locations; seasonal demographic and economic data; public holiday data. The formats of the required data are described in the help files.

Author(s)

Rob J Hyndman and Shu Fan.

Maintainer: Rob J. Hyndman <[email protected]>; Shu Fan <[email protected]>

References

R. J. Hyndman and S. Fan (2010) "Density Forecasting for Long-term Peak Electricity Demand", IEEE Trans. Power Systems, 25(2), 1142–1153. http://robjhyndman.com/papers/peak-electricity-demand/

R. J. Hyndman and S. Fan (2014) "Monash Electricity Forecasting Model" Version 2014.1. http://robjhyndman.com/working-papers/mefm/

Examples

# formula for half-hourly model, to be given by the user
formula.hh <- list()
for(i in 1:48)
  formula.hh[[i]] = as.formula(log(ddemand) ~ ns(temp, df=2) + day 
    + holiday + ns(timeofyear, 9) + ns(avetemp, 3) + ns(dtemp, 3) + ns(lastmin, 3) 
    + ns(prevtemp1, df=2) + ns(prevtemp2, df=2) 
    + ns(prevtemp3, df=2) + ns(prevtemp4, df=2) 
    + ns(day1temp, df=2) + ns(day2temp, df=2) 
    + ns(day3temp, df=2) + ns(prevdtemp1, 3) + ns(prevdtemp2, 3) 
    + ns(prevdtemp3, 3) + ns(day1dtemp, 3))

# Formula for annual model, to be given by the user
formula.a <- as.formula(anndemand ~ gsp + ddays + resiprice)

# Create lagged temperature variables
sa <- maketemps(sa,2,48)

sa.model <- demand_model(sa, sa.econ, formula.hh, formula.a)

summary(sa.model$a)
summary(sa.model$hh[[33]]) 

# Simulate future normalized half-hourly data
simdemand <- simulate_ddemand(sa.model, sa, simyears=10)

# Seasonal economic and weather forecast, to be given by user
afcast <- data.frame(pop=1694, gsp=22573, resiprice=34.65, ddays=642)

# Simulate half-hourly data
demand <- simulate_demand(simdemand, afcast)

# Illustrate the results
plot(density(demand$annmax, bw="SJ"),
  main="Density of seasonal maximum demand", xlab="Demand")

Estimate the electricity demand models

Description

Estimate the half-hourly/hourly and seasonal demand models.

Usage

demand_model(hhdata, adata, hhoptformula, aoptformula)

Arguments

hhdata

The historical half-hourly/hourly demand, temperature and seasonality data

adata

The historical seasonal (annual, summer, winter or quarterly) demographic and economic data

hhoptformula

The formula for each half-hourly/hourly demand model

aoptformula

The formula for seasonal demand model

Details

Estimate the demand model using the historical data, use additive model for half-hourly/hourly demand and linear model for seasonal demand, log demand is used for half-hourly/hourly model.

Value

hh

half-hourly/hourly demand models

hhfits

fitted values of half-hourly/hourly models

hhres

half-hourly/hourly model residuals

a

seasonal model

afits

fitted values of seasonal model

fits

fitted values of the entire model

res

entire model residuals

Author(s)

Rob J Hyndman and Shu Fan

References

R. J. Hyndman and S. Fan (2010) "Density Forecasting for Long-term Peak Electricity Demand", IEEE Trans. Power Systems, 25(2), 1142–1153.

See Also

simulate_ddemand, simulate_demand, sa, sa.econ

Examples

# formula for half-hourly model, to be given by the user
formula.hh <- list()
for(i in 1:48)
  formula.hh[[i]] = as.formula(log(ddemand) ~ ns(temp, df=2) + day 
    + holiday + ns(timeofyear, 9) + ns(avetemp, 3) + ns(dtemp, 3) + ns(lastmin, 3) 
    + ns(prevtemp1, df=2) + ns(prevtemp2, df=2) 
    + ns(prevtemp3, df=2) + ns(prevtemp4, df=2) 
    + ns(day1temp, df=2) + ns(day2temp, df=2) 
    + ns(day3temp, df=2) + ns(prevdtemp1, 3) + ns(prevdtemp2, 3) 
    + ns(prevdtemp3, 3) + ns(day1dtemp, 3))

# formula for annual model, to be given by the user
formula.a <- as.formula(anndemand ~ gsp + ddays + resiprice)

# create lagged temperature variables
sa <- maketemps(sa,2,48)

sa.model <- demand_model(sa, sa.econ, formula.hh, formula.a)

summary(sa.model$a)
summary(sa.model$hh[[33]])

Create lagged temperature variables

Description

The function is used to create lagged temperature variables for model estimation.

Usage

maketemps(x, temp_sites, periods = 48)

Arguments

x

Data frame including temperature observations from 1 or 2 weather stations

temp_sites

The number of weather stations, select between 1 and 2

periods

The periods within a day, choose between 48 (half-hourly data) and 24 (hourly data)

Value

The complete data frame that can be used for model estimation.

Author(s)

Rob J Hyndman and Shu Fan

References

R. J. Hyndman and S. Fan (2010) "Density Forecasting for Long-term Peak Electricity Demand", IEEE Trans. Power Systems, 25(2), 1142–1153.

See Also

sa, demand_model

Examples

sa <- maketemps(sa,2,48)

Historical data for model estimation

Description

Historical data of South Australia

Format

A data frame with 124848 half-hourly observations on the following 19 variables.

demand

a numeric vector containing half-hourly electricity demand for South Australia.

offset

a numeric vector containing half-hourly demand from some industrial customers who are not temperature sensitive (e.g., mines and smelters).

timeofday

a numeric vector giving the time of day (0-47).

date

a numeric vector giving the date within the month (1-31).

month

a numeric vector giving the month (1-12).

year

a numeric vector giving the year (2000-2014).

day

a factor with levels Mon Tue Wed Thu Fri Sat Sun

idate

a numeric vector giving the date in days since 1 January 1900.

holiday

a factor with levels Normal Day before Holiday Day after.

workday

a character vector with values NWD (Non-WorkDay) and WD (WorkDay).

timeofyear

a numerical time series giving the time in days since midnight on 1 January of each year.

Year

a numeric time series giving the time in years.

fyear

a numeric vector giving the financial year (starting 1 July).

temp1

a numeric vector giving the temperature in Celsius at location 1

temp2

a numeric vector giving the temperature in Celsius at location 2.

anndemand

a numeric vector giving the total demand in each year.

annoffset

a numeric vector giving the total offset demand in each year.

ddemand

a numeric vector giving the normalized demand (demand/anndemand).

doffset

a numeric vector giving the normalized offset (offset/annoffset).

Details

Historical data for South Australia, including half-hourly demand, temperatures from 2 locations, weekday, weekend, and holiday dates. Only data from October-March were retained for summer analysis and modelling.

Source

http://www.aemo.com.au/Electricity/Data/Price-and-Demand/Aggregated-Price-and-Demand-Data-Files

References

R. J. Hyndman and S. Fan (2010) "Density Forecasting for Long-term Peak Electricity Demand", IEEE Trans. Power Systems, 25(2), 1142–1153.

Examples

plot(ts(sa[,"demand"],freq=48*seasondays,start=c(2000,7)))

Historical demographic & economic data for South Australia

Description

Annual data for South Australia including population, GSP, residential electricity price, total electricity price and cooling/heating degree days

Format

A multivariate time series with the following columns:

pop

State population (thousands of people)

gsp

Gross State Product chain volume estimate (in 2008-2009 millions of dollars)

resiprice

Residential price index (2008-2009 cents per kWh)

totalprice

Total price (2008-2009 cents per kWh)

anndemand

Annual electricity demand (GW).

ddays

Cooling degree days with a threshold of 18.5 degrees Celsius.

References

R. J. Hyndman and S. Fan (2010) "Density Forecasting for Long-term Peak Electricity Demand", IEEE Trans. Power Systems, 25(2), 1142–1153.

Examples

plot(sa.econ)

The number of days in a season

Description

The number of days in a season, set to 182 for a summer season.

Details

A "season" is taken to be the period over which a model is estimated. In Hyndman & Fan (2010), the season was 1 November to 31 March and so seasondays=151. The default value in the package is seasondays=182; i.e., six months. The value of seasondays can be changed by the user.


Temperature and demand Simulation

Description

Simulate the half-hourly/hourly temperature and demand

Usage

simulate_ddemand(model, hdata, simyears = 1000, delta = 5)

Arguments

model

The demand models

hdata

The half-hourly/hourly demand, temperature and seasonality data

simyears

The length of years of simulation

delta

The value of blockdays offset limit for bootstrap

Details

Simulate the half-hourly/hourly temperature and demand using the historical data and the half-hourly/hourly demand model

Value

An object of class simdemand, basically a list including elements

hhfit

Simulated half-hourly demand

hhres

Simulated half-hourly residuals

ores

Simulated half-hourly offset demand

a

Seasonal model

Author(s)

Rob J Hyndman and Shu Fan

References

R. J. Hyndman and S. Fan (2010) "Density Forecasting for Long-term Peak Electricity Demand", IEEE Trans. Power Systems, 25(2), 1142–1153.

See Also

demand_model, simulate_demand, sa, MEFM-package for examples.


Simulate the electricity demand for the next season

Description

Simulate the half-hourly/hourly, seasonal peak electricity demand for the next season

Usage

simulate_demand(sim, afcast, nyears = length(sim$hhfit)/seasondays/48, periods = 48)

Arguments

sim

The simulated half-hourly demand (normalized against seasonal average demand)

afcast

The demographic and economic forecasts for the next season

nyears

The length of years of simulation

periods

The periods within a day, choose between 48 (half-hourly data) and 24 (hourly data)

Details

Simulate/forecast the half-hourly/hourly, seasonal peak electricity demand for the next season by incorporating the seasonal demographic & economic forecasts (to be provided by the user)

Value

demand

The forecasted half-hourly demand

annmax

The forecasted seasonal maximum demand

Author(s)

Rob J. Hyndman and Shu Fan

References

R. J. Hyndman and S. Fan (2010) "Density Forecasting for Long-term Peak Electricity Demand", IEEE Trans. Power Systems, 25(2), 1142–1153.

See Also

demand_model, simulate_ddemand, MEFM-package for examples.