⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mfe_loadf.m

📁 Modeling and Forecasting Electricity Loads and Prices: A Statistical Approach" by Rafa&#322 Weron, p
💻 M
字号:
%MFE_LOADF Illustrates Case Studies 3.4.7 and 3.4.10.
%
%   Type "mfe_loadf" at the command line to open a GUI which illustrates 
%   Studies 3.4.7 and 3.4.10 from [1].
%
%   Reference(s):
%   [1] R.Weron (2007) "Modeling and Forecasting Electricity Loads and 
%   Prices: A Statistical Approach", Wiley, Chichester.   

%   Written by Adam Misiorek and Rafal Weron (2006.09.22)
%   Copyright (c) 2006 by Rafal Weron

close all;
clear all;
mainf = figure('menubar','none','name','Case studies 3.4.7 & 3.4.10',...
    'numbertitle','off','position',[400 50 280 520],'DeleteFcn','close all;clear all;');

% Load data
data = load('CA_daily.dat');

% date column
D = data(:,1);
% load column
L = data(:,3);
% load forecast column
F = data(:,4);
% max air temperature column
T = data(:,5);

% define first and last date for calibration
cal_beg_date = '19990101';
cal_end_date = '20001231';

% define first and last date for out-of-sample forecast
for_beg_date = '20010101';
for_end_date = '20021231';

% define respective indices and period lengths
cal_beg_i = find(D==eval(cal_beg_date));
cal_end_i = find(D==eval(cal_end_date));
for_beg_i = find(D==eval(for_beg_date));
for_end_i = find(D==eval(for_end_date));
cal_period = 1+cal_end_i-cal_beg_i;
for_period = 1+for_end_i-for_beg_i;

% define exogenous variable vector (diff of air temperature as it has the 
% highest correlation with load)
diffT = diff(T(cal_beg_i:for_end_i));

% compute weekdays for cal_beg_date and for_beg_date
cal_beg_wday = weekday(datenum(str2num(cal_beg_date(1:4)),...
    str2num(cal_beg_date(5:6)),str2num(cal_beg_date(7:8))));
for_beg_wday = weekday(datenum(str2num(for_beg_date(1:4)),...
    str2num(for_beg_date(5:6)),str2num(for_beg_date(7:8))));

% Initialize model selection radiobuttons
uicontrol('parent',mainf,'style','frame','position',[50 335 180 165],'BackgroundColor',[0.5 0.5 0.5]);
obj.modela = uicontrol('parent',mainf,'style','radio','position',[60 470 70 20],...
   'string','Model A','value',1,'callback',['onlyone(obj.modela,obj.modelb);mfe_loadf_block(obj.nb,0);',...
   '[perc,stochc]=decompA(L,cal_beg_i,for_end_i,eval(get(obj.nb,''string'')));']);
obj.modelb = uicontrol('parent',mainf,'style','radio','position',[150 470 70 20],...
   'string','Model B','value',0,'callback',['onlyone(obj.modelb,obj.modela);mfe_loadf_block(obj.nb,1);',...
   '[stochc,stochcf,VYEAR]=decompB(L,cal_beg_i,cal_end_i,for_end_i);perc=zeros(size(stochc));']);
obj.nb = uicontrol('parent',mainf,'style','edit','position',[180 440 40 20],'backgroundcolor',[1 1 1],...
   'string',5,'enable','on','callback','[perc,stochc]=decompA(L,cal_beg_i,for_end_i,eval(get(obj.nb,''string'')));');
uicontrol('parent',mainf,'style','text','position',[60 442 100 15],'string','N in model A')
% Set Model A as default model
[perc,stochc] = decompA(L,cal_beg_i,for_end_i,eval(get(obj.nb,'string')));

% Initialize plot components, periodogram, ACF/PACF buttons
uicontrol('parent',mainf,'style','push','position',[60 405 160 20],'string','Plot components',...
   'callback','mfe_loadf_plotcomp(L,perc,stochc,cal_beg_i,cal_end_i,obj)');
uicontrol('parent',mainf,'style','push','position',[60 375 160 20],'string','Plot periodogram',...
   'callback','mfe_loadf_plotperiodogram(stochc,obj);')
uicontrol('parent',mainf,'style','push','position',[60 345 160 20],'string','Plot ACF and PACF',...
   'callback','mfe_loadf_plotacf(stochc,obj);');

% Initialize 'Find best ARMA model ...' controls
uicontrol('parent',mainf,'style','frame','position',[50 180 180 140],'BackgroundColor',[0.5 0.5 0.5]);
uicontrol('parent',mainf,'style','push','position',[60 190 160 27],'string','Find best ARMA model',...
    'BackgroundColor',[0.75 0.75 0.75],...
    'callback','mfe_loadf_crit(stochc(1:cal_period-1),eval(get(obj.aico,''string'')),eval(get(obj.aicmo,''string'')),4-get(ch(1),''value''))'); 
ch(1) = uicontrol('parent',mainf,'style','radio','position',[60 290 70 20],'string','AICC','value',1,...
    'callback','onlyone(ch(1),ch(2))');
ch(2) = uicontrol('parent',mainf,'style','radio','position',[150 290 70 20],'string','BIC','value',0,...
    'callback','onlyone(ch(2),ch(1))');

uicontrol('parent',mainf,'style','text','position',[60 262 110 15],'string','Max. AR order')
uicontrol('parent',mainf,'style','text','position',[60 232 110 15],'string','Max. MA order')
obj.aico = uicontrol('parent',mainf,'style','edit','position',[180 260 40 20],'backgroundcolor',[1 1 1],'string',10);
obj.aicmo = uicontrol('parent',mainf,'style','edit','position',[180 230 40 20],'backgroundcolor',[1 1 1],'string',10);

uicontrol('parent',mainf,'style','frame','position',[20 60 240 105],'BackgroundColor',[0.5 0.5 0.5]);
obj.aro = uicontrol('parent',mainf,'style','edit','position',[90 135 40 20],'backgroundcolor',[1 1 1],...
   'string',1);
uicontrol('parent',mainf,'style','text','position',[30 137 50 15],'string','AR order');
obj.mao = uicontrol('parent',mainf,'style','edit','position',[210 135 40 20],'backgroundcolor',[1 1 1],...
   'string',3);
uicontrol('parent',mainf,'style','text','position',[150 137 50 15],'string','MA order');
obj.xo = uicontrol('parent',mainf,'style','edit','position',[90 105 40 20],'backgroundcolor',[1 1 1],...
   'string',0);
uicontrol('parent',mainf,'style','text','position',[30 107 50 15],'string','X order');
obj.shift = uicontrol('parent',mainf,'style','edit','position',[210 105 40 20],'backgroundcolor',[1 1 1],...
   'string',0);
uicontrol('parent',mainf,'style','text','position',[150 107 50 15],'string','X shift');
uicontrol('parent',mainf,'style','push','position',[105 70 80 20],'string','Forecast',...
   'callback',['if get(obj.modela,''value'')',...
   'LF=mfe_loadf_predA(perc,stochc,cal_period,for_period,mfe_loadf_model_arma(obj.aro,obj.mao,obj.xo,obj.shift),',...
   'diffT);mfe_loadf_errtables(D,L,F,LF,for_beg_i,for_end_i);',...
   'else,LF=mfe_loadf_predB(L,stochcf,mfe_loadf_model_arma(obj.aro,obj.mao,obj.xo,obj.shift),cal_beg_i,cal_end_i,for_beg_i,for_end_i,',...
   'cal_beg_wday,for_beg_wday,diffT,VYEAR);mfe_loadf_errtables(D,L,F,LF,for_beg_i,for_end_i);end;']);
uicontrol('parent',mainf,'style','push','position',[60 15 160 27],'string','Close','BackgroundColor',[0.75 0.75 0.75],...
    'callback','delete(gcf);');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -