TimeSeries.OBeu v1.2.2 release on CRAN
We are very pleased to announce TimeSeries.OBeu v1.2.2 on CRAN!
TimeSeries.OBeu
is used on OpenBudgets.eu data mininig tool platform with OpenCPU integration of R and JavaScript to estimate and return the needed parameters for visualizations designed for OpenBudgets.eu time series budget or expenditure data.
The vignette shows the way TimeSeries.OBeu (in R and OpenCPU environment) is fitted with datasets of OpenBudgets.eu according to the OpenBudgets.eu data model. Detailed documentation about OpenBudgets.eu data model can be found here.
First install TimeSeries.OBeu
install.packages('TimeSeries.OBeu')
and start using the library
# load TimeSeries.OBeulibrary(TimeSeries.OBeu)
Time Series analysis on OpenBudgets.eu platform
open_spending.ts
is designed to estimate autocorrelation and partial autocorrelation of input time series data, autocorrelation and partial autocorrelation of the model residuals, trend, seasonal (if exists) and remainder components, model parameters such as arima order, arima coefficients etc. and the desired forecasts with their corresponding confidence intervals
of OpenBudgets.eu time series data.
The input data must be a JSON link according to the OpenBudgets.eu data model. The user should specify the amount and time variables, future steps to be predicted (default is 1 step forward) and the arima order (if not specified the most appropriate model will be selected according to AIC value).
Input | Description |
---|---|
json_data |
The json string, URL or file from Open Spending API |
time |
the time label of the json time series data |
amount |
the amount label of the json time series data |
order |
An integer vector of length 3 specifying the order of the Arima model |
prediction_steps |
The number of prediction steps |
Stationary test
TimeSeries.OBeu includes function that automatically tests the deterministic and stochastic trend of the input time series data. This function uses ACF and PACF functions from forecast package, Phillips Perron test, Augmented Dickey Fuller (ADF) test, Kwiatkowski Phillips Schmidt Shin (KPSS) test, from tseries package and Mann Kendall test for Monotonic Trend Cox Stuart trend test from trend package.
Decomposition
Decomposition of seasonal time series data through arima models is based on stlm from forecast package and returns a list with useful parameters for OBEU. For non-seasonal time series that there is no seasonal component, local regression and likelihood models (locfit package) are used in order to extract the trend and remaider components.
Model Fitting
Model fit of time series using arima models of seasonal time series data. The model with the lowest AIC value is selected for forecasts.
Forecast
Forecasts the model that fits the input data using the auto.arima function(see forecast package). The model selection depends on the results of some diagnostic tests (acf,pacf,pp adf and kpss). For short time series the selected arima model is among various orders of the AR part using the first differences and the first order moving average component, with the lower AIC value.
Output
Here is a sort description of the outputs of each function:
Component | Output | Description |
---|---|---|
acf.parameters |
|
|
pacf.parameters |
|
|
acf.residuals.parameters |
|
|
pacf.residuals.parameters |
|
|
stl.plot |
|
|
stl.general |
|
|
residuals |
|
|
compare |
|
|
forecasts |
|
|
Examples
The dataset that is being used is a sample json string from OpenBudgets.eu platform.
In R environment
open_spending.ts
function’s input are data as json link and described with OpenBudgets.eu data model.
#example openbudgets.eu time series datasample.ts.data = '{ "page": 0,
"page_size": 30,
"total_cell_count": 15,
"cell": [],
"status": "ok",
"cells": [{
"global__fiscalPeriod__28951.notation": "2002",
"global__amount__0397f.sum": 290501420.64,
"global__amount__0397f__CZK.sum": 9210928544.2325,
"_count": 4805
},
{
"global__fiscalPeriod__28951.notation": "2003",
"global__amount__0397f.sum": 311242291.07,
"global__amount__0397f__CZK.sum": 9832143974.9013,
"_count": 4988
},
{
"global__fiscalPeriod__28951.notation": "2004",
"global__amount__0397f.sum": 5268500701.1,
"global__amount__0397f__CZK.sum": 170688885714.24,
"_count": 10055
},
{
"global__fiscalPeriod__28951.notation": "2005",
"global__amount__0397f.sum": 2542887761.01,
"global__amount__0397f__CZK.sum": 77204615312.025,
"_count": 2032
},
{
"global__fiscalPeriod__28951.notation": "2006",
"global__amount__0397f.sum": 14803951786.68,
"global__amount__0397f__CZK.sum": 429758720367.32,
"_count": 13632
},
{
"global__fiscalPeriod__28951.notation": "2007",
"global__amount__0397f.sum": 16188514346.44,
"global__amount__0397f__CZK.sum": 445588857385.76,
"_count": 22798
},
{
"global__fiscalPeriod__28951.notation": "2008",
"global__amount__0397f.sum": 18231035815.89,
"global__amount__0397f__CZK.sum": 480643028250.12,
"_count": 24176
},
{
"global__fiscalPeriod__28951.notation": "2009",
"global__amount__0397f.sum": 19079541164.68,
"global__amount__0397f__CZK.sum": 511808691742.54,
"_count": 26250
},
{
"global__fiscalPeriod__28951.notation": "2010",
"global__amount__0397f.sum": 22738650575.01,
"global__amount__0397f__CZK.sum": 597685430364.14,
"_count": 87667
},
{
"global__fiscalPeriod__28951.notation": "2011",
"global__amount__0397f.sum": 24961375670.57,
"global__amount__0397f__CZK.sum": 626230992823.26,
"_count": 134352
},
{
"global__fiscalPeriod__28951.notation": "2012",
"global__amount__0397f.sum": 261513607691.41,
"global__amount__0397f__CZK.sum": 7030666436872.5,
"_count": 147556
},
{
"global__fiscalPeriod__28951.notation": "2013",
"global__amount__0397f.sum": 268946402299.09,
"global__amount__0397f__CZK.sum": 7226220232913.8,
"_count": 150079
},
{
"global__fiscalPeriod__28951.notation": "2014",
"global__amount__0397f.sum": 255222816704.9,
"global__amount__0397f__CZK.sum": 6907598086283.4,
"_count": 176019
},
{
"global__fiscalPeriod__28951.notation": "2015",
"global__amount__0397f.sum": 22976062973.62,
"global__amount__0397f__CZK.sum": 636276111928.46,
"_count": 213777
},
{
"global__fiscalPeriod__28951.notation": "2016",
"global__amount__0397f.sum": 12051686541.16,
"global__amount__0397f__CZK.sum": 325672725401.77,
"_count": 161797
}
],
"order": [
["global__fiscalPeriod__28951.fiscalPeriod", "asc"]
],
"aggregates": ["", "_count"],
"summary": {
"global__amount__0397f.sum": 945126777743.27,
"global__amount__0397f__CZK.sum": 25485085887878
},
"attributes": [""]
}'
result = open_spending.ts( json_data = sample.ts.data, time ="global__fiscalPeriod__28951.notation", amount = "global__amount__0397f.sum"
)
# Pretty output using prettify of jsonlite library
jsonlite::prettify(result,indent = 2)
In OpenCPU environment
Select library and function
-
Go to: yourserver/ocpu/test
-
Copy and paste the following function to the endpoint
../library/TimeSeries.OBeu/R/open_spending.ts# library/ {name of the library} /R/ {function}
- Select Method:
Post
Add parameters
Click add parameters every time you want to add a new parameters and values.
-
Define the input data:
- Param Name:
json_data
- Param Value: URL of json data or json string
- Param Name:
-
Define the time parameter:
- Param Name:
time
- Param Value: Time label of the json time series data
- Param Name:
-
Define the amount parameter:
- Param Name:
amount
- Param Value: Amount label of the json time series data
- Param Name:
You add likewise x.order parameter to fit a specific arima order, see TimeSeries.OBeu reference manual for further details.
- Ready! Click on Ajax request!
Results
-
copy the /ocpu/tmp/{this_id_number}/R/.val (second on the right panel)
-
finally, paste
yourserver/ocpu/tmp/{this_id_number}/R/.val
on a new tab.