Skip to content

Commit

Permalink
added function for ensembling results
Browse files Browse the repository at this point in the history
  • Loading branch information
Lorenzo Mentaschi authored and Lorenzo Mentaschi committed Feb 26, 2016
1 parent d529f88 commit 8bd50d1
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 0 deletions.
10 changes: 10 additions & 0 deletions tsEnsemble.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
function [nonStationaryEvaParamsEns, stationaryTransformDataEns] = tsEnsemble( nonStatEvaParamsArray, stationaryTransformDataArray )
% calls tsEnsembleEvaParams and tsEnsembleStatTransfData.
% ASSUMING THAT ALL THE SERIES HAVE THE SAME LENGTH
% AND UNIFORM TIME STAMPS

nonStationaryEvaParamsEns = tsEnsembleEvaParams(nonStatEvaParamsArray);
stationaryTransformDataEns = tsEnsembleStatTransfData(stationaryTransformDataArray);

end

52 changes: 52 additions & 0 deletions tsEnsembleEvaParams.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
function nonStatEvaParamsEnsemble = tsEnsembleEvaParams( nonStatEvaParamsArray )
% From a cell array of non nonStatEvaParams computes the average
% nonStatEvaParamsArray is a cell array of nonStatEvaParams, the object
% type returned by tsEvaNonStationary
% ASSUMING THAT ALL THE SERIES HAVE THE SAME LENGTH
% AND UNIFORM TIME STAMPS

n = length(nonStatEvaParamsArray);
for ii = 1:n
nsep = nonStatEvaParamsArray{ii};
if ii == 1
ensep(1).method = 'GEVstat';
ensep(1).parameters = nsep(1).parameters;
ensep(1).paramErr = nsep(1).paramErr;
ensep(2).method = 'GPDstat';
ensep(2).parameters = nsep(2).parameters;
ensep(2).paramErr = nsep(2).paramErr;
else
ensep(1).parameters.epsilon = ensep(1).parameters.epsilon + nsep(1).parameters.epsilon;
ensep(1).parameters.sigma = ensep(1).parameters.sigma + nsep(1).parameters.sigma;
ensep(1).parameters.mu = ensep(1).parameters.mu + nsep(1).parameters.mu;
ensep(1).paramErr.epsilonErr = ensep(1).paramErr.epsilonErr + nsep(1).paramErr.epsilonErr;
ensep(1).paramErr.sigmaErr = ensep(1).paramErr.sigmaErr + nsep(1).paramErr.sigmaErr;
ensep(1).paramErr.muErr = ensep(1).paramErr.muErr + nsep(1).paramErr.muErr;

ensep(2).parameters.epsilon = ensep(2).parameters.epsilon + nsep(2).parameters.epsilon;
ensep(2).parameters.sigma = ensep(2).parameters.sigma + nsep(2).parameters.sigma;
ensep(2).parameters.threshold = ensep(2).parameters.threshold + nsep(2).parameters.threshold;
ensep(2).parameters.percentile = ensep(2).parameters.percentile + nsep(2).parameters.percentile;
ensep(2).paramErr.epsilonErr = ensep(2).paramErr.epsilonErr + nsep(2).paramErr.epsilonErr;
ensep(2).paramErr.sigmaErr = ensep(2).paramErr.sigmaErr + nsep(2).paramErr.sigmaErr;
ensep(2).paramErr.thresholdErr = ensep(2).paramErr.thresholdErr + nsep(2).paramErr.thresholdErr;
end
end

ensep(1).parameters.epsilon = ensep(1).parameters.epsilon/n;
ensep(1).parameters.sigma = ensep(1).parameters.sigma/n;
ensep(1).parameters.mu = ensep(1).parameters.mu/n;
ensep(1).paramErr.epsilonErr = ensep(1).paramErr.epsilonErr/n;
ensep(1).paramErr.sigmaErr = ensep(1).paramErr.sigmaErr/n;
ensep(1).paramErr.muErr = ensep(1).paramErr.muErr/n;
ensep(2).parameters.epsilon = ensep(2).parameters.epsilon/n;
ensep(2).parameters.sigma = ensep(2).parameters.sigma/n;
ensep(2).parameters.threshold = ensep(2).parameters.threshold/n;
ensep(2).parameters.percentile = ensep(2).parameters.percentile/n;
ensep(2).paramErr.epsilonErr = ensep(2).paramErr.epsilonErr/n;
ensep(2).paramErr.sigmaErr = ensep(2).paramErr.sigmaErr/n;
ensep(2).paramErr.thresholdErr = ensep(2).paramErr.thresholdErr/n;

nonStatEvaParamsEnsemble = ensep;
end

40 changes: 40 additions & 0 deletions tsEnsembleStatTransfData.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
function [ stationaryTransformDataEnsemble ] = tsEnsembleStatTransfData( stationaryTransformDataArray )
% From a cell array of non stationaryTransformData computes the average
% stationaryTransformDataArray is a cell array of stationaryTransformData,
% the transformation object type returned by tsEvaNonStationary
% ASSUMING THAT ALL THE SERIES HAVE THE SAME LENGTH
% AND UNIFORM TIME STAMPS

n = length(stationaryTransformDataArray);
for ii=1:n
td = stationaryTransformDataArray{ii};
if ii == 1
etd.timeStamps = td.timeStamps;

etd.trendSeries = td.trendSeries;
etd.trendSeriesNonSeasonal = td.trendSeriesNonSeasonal;
etd.trendError = td.trendError;
etd.stdDevSeries = td.stdDevSeries;
etd.stdDevSeriesNonSeasonal = td.stdDevSeriesNonSeasonal;
etd.stdDevError = td.stdDevError;
else
etd.trendSeries = etd.trendSeries + td.trendSeries;
etd.trendSeriesNonSeasonal = etd.trendSeriesNonSeasonal + td.trendSeriesNonSeasonal;
etd.trendError = etd.trendError + td.trendError;
etd.stdDevSeries = etd.stdDevSeries + td.stdDevSeries;
etd.stdDevSeriesNonSeasonal = etd.stdDevSeriesNonSeasonal + td.stdDevSeriesNonSeasonal;
etd.stdDevError = etd.stdDevError + td.stdDevError;
end
end

etd.trendSeries = etd.trendSeries/n;
etd.trendSeriesNonSeasonal = etd.trendSeriesNonSeasonal/n;
etd.trendError = etd.trendError/n;
etd.stdDevSeries = etd.stdDevSeries/n;
etd.stdDevSeriesNonSeasonal = etd.stdDevSeriesNonSeasonal/n;
etd.stdDevError = etd.stdDevError/n;

stationaryTransformDataEnsemble = etd;

end

0 comments on commit 8bd50d1

Please sign in to comment.