config-i1 / mes Goto Github PK
View Code? Open in Web Editor NEWMixed Exponential Smoothing
Mixed Exponential Smoothing
Implement the parameter loss with all the multiple steps ahead losses for mes().
The distribution parameter will be potentially detachable from the losses.
There should be a mechanism of defining, which variables should be predicted and which should be used as is. A method preparing explanatory variables is needed.
When the variable is marked for prediction this is what should happen inside the function:
Develop a mechanism of order selection inside the function. Should be something similar to auto.msarima... but maybe smarter, considering several special cases?
Add an option of specifying AR and MA in the model, making model even more complicated...
Develop a mechanism that would allow constructing at least something if the sample is small. Make adam() and auto.adam() robust.
Update oes(), so that it has:
Create the code for the variables selection in mes, xregDo="select"
This means the implementation similar to Hyndman et al. (2008)
Keep in mind the future lags variable and flexible structure of mes()
This is relevant to forecast.adam() and predict.adam() functions. Make them return matrices in $lower and $upper if several levels are provided.
Develop function for the data generation from the basic ETS models with different distributions.
This is needed for the prediction interval and mean of mes().
Use Truncated Normal distribution for the summary of smoothing parameters. Things to do:
Make this in the classic alm() style, and xreg should be optional. Rewrite the respective checks in parametersChecker, but don't touch the main part of the code.
Do this similar to es(), when parameters are set to specific values.
This should outline:
The analytical counterparts of MSEh, TMSE, GTMSE and GPL are still not implemented. This can be useful for high frequency data / small samples.
This involves:
Potentially:
5. Updating es(), ssarima(), msarima(), gum(), sma(), so that they use the new C++ code instead of the old one.
6. Removal of the old code.
The stuff that needs to be done:
These will partially depend on simulator functions and should be applicable for mes() and omes()
Introduce the mechanism, preferably in auto.adam() function.
Fix the stability condition, making independent eigenvalues for each unique lag, based on this: https://openforecast.org/adam/ADAMETSPureAdditive.html#stability-and-forecastability-conditions
This implies fixing:
This involves:
Normalise all the parameter before the nloptr(), then denormalise them in the loop. See if this improves the speed of calculation and accuracy.
This should either be explicit o provided in ellipsis.
Probably something like ARMA=list(AR=...,MA=...)
Make mes work well with different classes and return similar ones. This applies to:
This is supposed to switch off the ETS and leave ARIMAX components only.
Several steps to do:
This should allow specifying several frequencies.
Do the integer frequencies first.
Use the idea of Nikos in order to create different pools and combine.
This comes to having higher than needed alphas / beta / gamma in ETS(A,Z,Z) and ETS(M,Z,Z) for different occurrence models.
This should be done for mes() for the data, when there are NAs. omes() should treat those cases as ot=0.
The missing values will need to be interpolated using the model itself.
If a user provides a factor, then expand it and make one and the same smoothing parameter for all levels of it. This way, if we provide factor for week of year, we would have a mechanism similar to the proper seasonal component.
This relates to: lnorm, llaplace, ls and lgnorm and the assumptions for the mean (mu=-sigma^2 / 2). Things that need fixing:
This should be done in mes() and omes() in a similar way to how it is currently done in oes() from smooth - calling the function from itself.
Introduce formula, which defines what variables to use, when it comes to xreg
This can be either named or none, accepting something like:
list(level=0.1,trend=0.2,seasonal=c(0.3,0.1),xreg=c(0.1,0.1,0.1))
If some of the options are not provided, then they are estimated.
If a vector is provided, use values in the mentioned order.
This should test:
Each separate should work and their combos should do as well.
This should lead to smoother seasonals and smoother level / trend. This should be a separate method, applied by a user, returning smooth ADAM (reconstructed model).
In order to see the issue run the following:
test <- adam(forecast::taylor,"MNM",lags=c(48,336),h=336,holdout=T,initial="b",silent=F)
This means likelihood calculation + prediction intervals for:
This should involve the new type of seasonals based on dummies and a vector of dates for the values of y (date parameter) in mes() and omes()
Make it possible to specify loss=f(x) in the function
This should be done similar to the one from es(), but maybe in a vectorised form.
An example. When lags=c(7,365), instead of having two components with respective lags, it should be done as one component with lags=7 and another with lags = 365/7...
In the ideal world a model should have "monthly", "weekly" and "daily" components for this situation. Not clear, how to get there from lags=c(7,365)...
This implies:
Possible solutions:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.