Kleanthis Koupidis, Charalampos Bratsas
#TimeSeries.OBeu Εstimate and return the necessary parameters for time series visualizations, used in OpenBudgets.eu. It includes functions to test stationarity (with ACF, PACF, Phillips Perron test, Augmented Dickey Fuller (ADF) test, Kwiatkowski-Phillips-Schmidt-Shin (KPSS) test, Mann Kendall Test For Monotonic Trend and Cox and Stuart trend test), decompose, model and forecast Budget time series data of municipalities across Europe, according to the OpenBudgets.eu data model.
This package can generally be used to extract visualization parameters convert them to JSON format and use them as input in a different graphical interface. Most functions can have general use out of the OpenBudgets.eu data model. You can see detailed information here.
# install TimeSeries.OBeu- cran stable version
install.packages(TimeSeries.OBeu)
# or
# alternatively install the development version from github
devtools::install_github("okgreece/TimeSeries.OBeu")
library(TimeSeries.OBeu)
#Time Series analysis in a call
ts.analysis
is used 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.
ts.analysis
returns by default a json object, if tojson
parameter is
FALSE
returns a list object and the default forecast step is set to 1.
results = ts.analysis(Athens_executed_ts, prediction.steps = 2, tojson=TRUE) # json string format
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
## Warning in tseries::kpss.test(tsdata): p-value greater than printed p-value
jsonlite::prettify(results) # use prettify of jsonlite library to add indentation to the returned JSON string
## {
## "acf.param": {
## "acf.parameters": {
## "acf": [
## 1,
## 0.5302,
## 0.2018,
## -0.1397,
## -0.4059,
## -0.3556,
## -0.3939,
## -0.073,
## 0.071,
## 0.0676,
## 0.0285
## ],
## "acf.lag": [
## 0,
## 1,
## 2,
## 3,
## 4,
## 5,
## 6,
## 7,
## 8,
## 9,
## 10
## ],
## "confidence.interval.up": [
## 0.5658
## ],
## "confidence.interval.low": [
## -0.5658
## ]
## },
## "pacf.parameters": {
## "pacf": [
## 0.5302,
## -0.1102,
## -0.2817,
## -0.2903,
## 0.0427,
## -0.2781,
## 0.2318,
## -0.1163,
## -0.1829,
## -0.209
## ],
## "pacf.lag": [
## 1,
## 2,
## 3,
## 4,
## 5,
## 6,
## 7,
## 8,
## 9,
## 10
## ],
## "confidence.interval.up": [
## 0.5658
## ],
## "confidence.interval.low": [
## -0.5658
## ]
## },
## "acf.residuals.parameters": {
## "acf.residuals": [
## 1,
## 0.8646,
## 0.7284,
## 0.6039,
## 0.4589,
## 0.3295,
## 0.154,
## -0.0016,
## -0.1241,
## -0.2595,
## -0.3802,
## -0.5098,
## -0.6276,
## -0.5885,
## -0.5207,
## -0.4629
## ],
## "acf.residuals.lag": [
## 0,
## 1,
## 2,
## 3,
## 4,
## 5,
## 6,
## 7,
## 8,
## 9,
## 10,
## 11,
## 12,
## 13,
## 14,
## 15
## ],
## "confidence.interval.up": [
## 0.5658
## ],
## "confidence.interval.low": [
## -0.5658
## ]
## },
## "pacf.residuals.parameters": {
## "pacf.residuals": [
## 0.8646,
## -0.0756,
## -0.0325,
## -0.1597,
## -0.0335,
## -0.2937,
## -0.0528,
## -0.046,
## -0.162,
## -0.1372,
## -0.2201,
## -0.2078,
## 0.4336,
## 0.1187,
## -0.0519
## ],
## "pacf.residuals.lag": [
## 1,
## 2,
## 3,
## 4,
## 5,
## 6,
## 7,
## 8,
## 9,
## 10,
## 11,
## 12,
## 13,
## 14,
## 15
## ],
## "confidence.interval.up": [
## 0.5658
## ],
## "confidence.interval.low": [
## -0.5658
## ]
## }
## },
## "decomposition": {
## "stl.plot": {
## "trend": [
## 488397393.1418,
## 472512470.2132,
## 473063423.4632,
## 487284165.8361,
## 519914575.4529,
## 549044538.1588,
## 546747322.373,
## 517885722.1941,
## 482561749.3098,
## 453474237.5907,
## 423909078.1086,
## 393617768.8078
## ],
## "conf.interval.up": [
## 525849686.6413,
## 495462595.8887,
## 495888427.5844,
## 512171768.3956,
## 545880538.4877,
## 575706534.5367,
## 573409318.7509,
## 543851685.2289,
## 507449351.8693,
## 476299241.7119,
## 446859203.7842,
## 431070062.3073
## ],
## "conf.interval.low": [
## 450945099.6423,
## 449562344.5377,
## 450238419.3421,
## 462396563.2766,
## 493948612.4181,
## 522382541.7809,
## 520085325.9951,
## 491919759.1593,
## 457674146.7503,
## 430649233.4695,
## 400958952.4331,
## 356165475.3083
## ],
## "seasonal": {
##
## },
## "remainder": [
## 3494473.6582,
## -6782427.4232,
## -360030.3632,
## -20859217.1961,
## 8715868.0371,
## 20321961.4412,
## -24805255.823,
## 12476896.9759,
## -25628827.4798,
## 18714394.8393,
## -9197723.9686,
## 1891498.0822
## ],
## "time": [
## 2004,
## 2005,
## 2006,
## 2007,
## 2008,
## 2009,
## 2010,
## 2011,
## 2012,
## 2013,
## 2014,
## 2015
## ]
## },
## "stl.general": {
## "degfr": [
## 5.4179
## ],
## "degfr.fitted": [
## 5.1011
## ],
## "stl.degree": [
## 2
## ]
## },
## "residuals_fitted": {
## "residuals": [
## 3494473.6582,
## -6782427.4232,
## -360030.3632,
## -20859217.1961,
## 8715868.0371,
## 20321961.4412,
## -24805255.823,
## 12476896.9759,
## -25628827.4798,
## 18714394.8393,
## -9197723.9686,
## 1891498.0822
## ],
## "fitted": [
## 488397393.1418,
## 472512470.2132,
## 473063423.4632,
## 487284165.8361,
## 519914575.4529,
## 549044538.1588,
## 546747322.373,
## 517885722.1941,
## 482561749.3098,
## 453474237.5907,
## 423909078.1086,
## 393617768.8078
## ],
## "time": [
## 2004,
## 2005,
## 2006,
## 2007,
## 2008,
## 2009,
## 2010,
## 2011,
## 2012,
## 2013,
## 2014,
## 2015
## ],
## "line": [
## 0
## ]
## },
## "compare": {
## "resid.variance": [
## 258964785657684
## ],
## "used.obs": [
## 2004,
## 2015,
## 2009.5,
## 2006.75,
## 2012.25
## ],
## "loglik": [
## -1.42430632111726e+15
## ],
## "aic": [
## 2.84861264223453e+15
## ],
## "bic": [
## 2.84861264223453e+15
## ],
## "gcv": [
## 789007322850175
## ]
## }
## },
## "model.param": {
## "model": {
## "arima.order": [
## 2,
## 1,
## 0,
## 0,
## 1,
## 1,
## 0
## ],
## "arima.coef": [
## -0.2,
## 0.304,
## 0.1684
## ],
## "arima.coef.se": [
## 0.5484,
## 0.3034,
## 0.5345
## ]
## },
## "residuals_fitted": {
## "residuals": [
## 491891.5916,
## -24734053.7839,
## 4848198.2411,
## 2291242.5086,
## 58442566.7297,
## 45241384.5452,
## -65806529.4317,
## -2362503.8375,
## -56932278.2406,
## 7600701.1455,
## -33386168.56,
## -29710365.5401
## ],
## "fitted": [
## 491399975.2084,
## 490464096.5739,
## 467855194.8589,
## 464133706.1314,
## 470187876.7603,
## 524125115.0548,
## 587748595.9817,
## 532725123.0075,
## 513865200.0706,
## 464587931.2845,
## 448097522.7,
## 425219632.4301
## ],
## "time": [
## 2004,
## 2005,
## 2006,
## 2007,
## 2008,
## 2009,
## 2010,
## 2011,
## 2012,
## 2013,
## 2014,
## 2015
## ],
## "line": [
## 0
## ]
## },
## "compare": {
## "resid.variance": [
## 1.96694555616403e+15
## ],
## "variance.coef": [
## [
## 0.3007,
## 0.0586,
## -0.2532
## ],
## [
## 0.0586,
## 0.0921,
## -0.029
## ],
## [
## -0.2532,
## -0.029,
## 0.2857
## ]
## ],
## "not.used.obs": [
## 0
## ],
## "used.obs": [
## 11
## ],
## "loglik": [
## -207.6519
## ],
## "aic": [
## 423.3037
## ],
## "bic": [
## 424.8953
## ],
## "aicc": [
## 429.9704
## ]
## }
## },
## "forecasts": {
## "ts.model": [
## "ARIMA(2,1,1)"
## ],
## "data_year": [
## 2004,
## 2005,
## 2006,
## 2007,
## 2008,
## 2009,
## 2010,
## 2011,
## 2012,
## 2013,
## 2014,
## 2015
## ],
## "data": [
## 491891866.8,
## 465730042.79,
## 472703393.1,
## 466424948.64,
## 528630443.49,
## 569366499.6,
## 521942066.55,
## 530362619.17,
## 456932921.83,
## 472188632.43,
## 414711354.14,
## 395509266.89
## ],
## "predict_time": [
## 2016,
## 2017
## ],
## "predict_values": [
## 376873927.5331,
## 374763602.0598
## ],
## "up80": [
## 433711072.5831,
## 453885516.7986
## ],
## "low80": [
## 320036782.483,
## 295641687.3209
## ],
## "up95": [
## 463798839.7076,
## 495770128.4028
## ],
## "low95": [
## 289949015.3585,
## 253757075.7167
## ]
## }
## }
##
ts.analysis
uses internally the functions
ts.stationary.test
,ts.acf
,ts.non.seas.decomp
,ts.seasonal.decomp
,
ts.seasonal.model
, ts.non.seas.model
and ts.forecast
. However,
these functions can be used independently and depends on the user
requirements (see package manual or vignettes).
#Time series analysis on OpenBudgets.eu platform
open_spending.ts
is designed to estimate and return the
autocorrelation parameters, time series model parameters and the
forecast parameters of OpenBudgets.eu time
series datasets.
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).
open_spending.ts
estimates and returns the json data (that are
described with the OpenBudgets.eu data
model), using ts.analysis
function.
#example openbudgets.eu time series data
sample.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"
)
## Warning in tseries::kpss.test(tsdata): p-value greater than printed p-value
# Pretty output using prettify of jsonlite library
jsonlite::prettify(result,indent = 2)
## {
## "acf.param": {
## "acf.parameters": {
## "acf": [
## 1,
## 0.6083,
## 0.1674,
## -0.1663,
## -0.1295,
## -0.0727,
## -0.0925,
## -0.1301,
## -0.1615,
## -0.1959,
## -0.2115,
## -0.1311
## ],
## "acf.lag": [
## 0,
## 1,
## 2,
## 3,
## 4,
## 5,
## 6,
## 7,
## 8,
## 9,
## 10,
## 11
## ],
## "confidence.interval.up": [
## 0.5061
## ],
## "confidence.interval.low": [
## -0.5061
## ]
## },
## "pacf.parameters": {
## "pacf": [
## 0.6083,
## -0.3215,
## -0.1865,
## 0.25,
## -0.1593,
## -0.1764,
## 0.0869,
## -0.1346,
## -0.2117,
## -0.0036,
## 0.0508
## ],
## "pacf.lag": [
## 1,
## 2,
## 3,
## 4,
## 5,
## 6,
## 7,
## 8,
## 9,
## 10,
## 11
## ],
## "confidence.interval.up": [
## 0.5061
## ],
## "confidence.interval.low": [
## -0.5061
## ]
## },
## "acf.residuals.parameters": {
## "acf.residuals": [
## 1,
## 0.3097,
## 0.2296,
## -0.2346,
## -0.0115,
## -0.069,
## -0.0524,
## -0.0981,
## -0.0842,
## -0.1215,
## -0.0934,
## -0.0868,
## -0.0484,
## -0.2128,
## -0.115,
## -0.1051,
## 0.2946
## ],
## "acf.residuals.lag": [
## 0,
## 1,
## 2,
## 3,
## 4,
## 5,
## 6,
## 7,
## 8,
## 9,
## 10,
## 11,
## 12,
## 13,
## 14,
## 15,
## 16
## ],
## "confidence.interval.up": [
## 0.5061
## ],
## "confidence.interval.low": [
## -0.5061
## ]
## },
## "pacf.residuals.parameters": {
## "pacf.residuals": [
## 0.3097,
## 0.1479,
## -0.3857,
## 0.1673,
## 0.0455,
## -0.2432,
## 0.0379,
## 0.0137,
## -0.2159,
## 0.0048,
## 0.0175,
## -0.1445,
## -0.2757,
## 0.0882,
## -0.0175,
## 0.2238
## ],
## "pacf.residuals.lag": [
## 1,
## 2,
## 3,
## 4,
## 5,
## 6,
## 7,
## 8,
## 9,
## 10,
## 11,
## 12,
## 13,
## 14,
## 15,
## 16
## ],
## "confidence.interval.up": [
## 0.5061
## ],
## "confidence.interval.low": [
## -0.5061
## ]
## }
## },
## "decomposition": {
## "stl.plot": {
## "trend": [
## -823419544.0324,
## 1661560665.8427,
## 4624784832.814,
## 7878983908.9168,
## 9164365783.7901,
## 1249040775.5615,
## -4351015667.1447,
## 6551641382.3009,
## 57664029716.7199,
## 135646130025.509,
## 199114831580.159,
## 212547970271.575,
## 183231679544.124,
## 110152904455.055,
## -12061960507.0845
## ],
## "conf.interval.up": [
## 100039247757.031,
## 66576136730.7478,
## 60840745924.5652,
## 68328241466.4622,
## 72409579664.1255,
## 65432105294.9799,
## 59676059485.8763,
## 70171989437.0366,
## 121691104869.741,
## 199829194544.927,
## 262360045460.495,
## 272997227829.121,
## 239447640635.875,
## 175067480519.96,
## 88800706793.9786
## ],
## "conf.interval.low": [
## -101686086845.095,
## -63253015399.0623,
## -51591176258.9372,
## -52570273648.6285,
## -54080848096.5454,
## -62934023743.857,
## -68378090820.1657,
## -57068706672.4349,
## -6363045436.3011,
## 71463065506.0904,
## 135869617699.824,
## 152098712714.03,
## 127015718452.373,
## 45238328390.1502,
## -112924627808.148
## ],
## "seasonal": {
##
## },
## "remainder": [
## 1113920964.6724,
## -1350318374.7727,
## 643715868.286,
## -5336096147.9068,
## 5639586002.8899,
## 14939473570.8785,
## 22582051483.0347,
## 12527899782.3791,
## -34925379141.7099,
## -110684754354.939,
## 62398776111.2508,
## 56398432027.5148,
## 71991137160.7759,
## -87176841481.4353,
## 24113647048.2445
## ],
## "time": [
## 2002,
## 2003,
## 2004,
## 2005,
## 2006,
## 2007,
## 2008,
## 2009,
## 2010,
## 2011,
## 2012,
## 2013,
## 2014,
## 2015,
## 2016
## ]
## },
## "stl.general": {
## "degfr": [
## 5.288
## ],
## "degfr.fitted": [
## 4.9747
## ],
## "stl.degree": [
## 2
## ]
## },
## "residuals_fitted": {
## "residuals": [
## 1113920964.6724,
## -1350318374.7727,
## 643715868.286,
## -5336096147.9068,
## 5639586002.8899,
## 14939473570.8785,
## 22582051483.0347,
## 12527899782.3791,
## -34925379141.7099,
## -110684754354.939,
## 62398776111.2508,
## 56398432027.5148,
## 71991137160.7759,
## -87176841481.4353,
## 24113647048.2445
## ],
## "fitted": [
## -823419544.0324,
## 1661560665.8427,
## 4624784832.814,
## 7878983908.9168,
## 9164365783.7901,
## 1249040775.5615,
## -4351015667.1447,
## 6551641382.3009,
## 57664029716.7199,
## 135646130025.509,
## 199114831580.159,
## 212547970271.575,
## 183231679544.124,
## 110152904455.055,
## -12061960507.0845
## ],
## "time": [
## 2002,
## 2003,
## 2004,
## 2005,
## 2006,
## 2007,
## 2008,
## 2009,
## 2010,
## 2011,
## 2012,
## 2013,
## 2014,
## 2015,
## 2016
## ],
## "line": [
## 0
## ]
## },
## "compare": {
## "resid.variance": [
## 2.4902231028103e+21
## ],
## "used.obs": [
## 2002,
## 2016,
## 2009,
## 2005.5,
## 2012.5
## ],
## "loglik": [
## -1.74315617196721e+22
## ],
## "aic": [
## 3.48631234393441e+22
## ],
## "bic": [
## 3.48631234393441e+22
## ],
## "gcv": [
## 5.54416871365202e+21
## ]
## }
## },
## "model.param": {
## "model": {
## "arima.order": [
## 2,
## 1,
## 0,
## 0,
## 1,
## 1,
## 0
## ],
## "arima.coef": [
## 0.8348,
## -0.249,
## -0.9999
## ],
## "arima.coef.se": [
## 0.2524,
## 0.2482,
## 0.5954
## ]
## },
## "residuals_fitted": {
## "residuals": [
## 290501.235,
## 18348492.233,
## 4388547106.9232,
## -2696772619.0425,
## 12279728464.2613,
## 1663580423.4101,
## 5162045969.9383,
## 4109968753.4051,
## 6995758560.2579,
## 5772141482.9292,
## 231395399804.073,
## 31316280480.3554,
## 66705685366.0788,
## -149540618863.384,
## 33819215962.2688
## ],
## "fitted": [
## 290210919.405,
## 292893798.837,
## 879953594.1768,
## 5239660380.0525,
## 2524223322.4187,
## 14524933923.0299,
## 13068989845.9517,
## 14969572411.2749,
## 15742892014.7521,
## 19189234187.6408,
## 30118207887.337,
## 237630121818.735,
## 188517131338.821,
## 172516681837.004,
## -21767529421.1088
## ],
## "time": [
## 2002,
## 2003,
## 2004,
## 2005,
## 2006,
## 2007,
## 2008,
## 2009,
## 2010,
## 2011,
## 2012,
## 2013,
## 2014,
## 2015,
## 2016
## ],
## "line": [
## 0
## ]
## },
## "compare": {
## "resid.variance": [
## 7.52601939136356e+21
## ],
## "variance.coef": [
## [
## 0.0637,
## -0.034,
## -0.0003
## ],
## [
## -0.034,
## 0.0616,
## -0.0002
## ],
## [
## -0.0003,
## -0.0002,
## 0.3545
## ]
## ],
## "not.used.obs": [
## 0
## ],
## "used.obs": [
## 14
## ],
## "loglik": [
## -371.6686
## ],
## "aic": [
## 751.3372
## ],
## "bic": [
## 753.8934
## ],
## "aicc": [
## 755.7816
## ]
## }
## },
## "forecasts": {
## "ts.model": [
## "ARIMA(2,1,1)"
## ],
## "data_year": [
## 2002,
## 2003,
## 2004,
## 2005,
## 2006,
## 2007,
## 2008,
## 2009,
## 2010,
## 2011,
## 2012,
## 2013,
## 2014,
## 2015,
## 2016
## ],
## "data": [
## 290501420.64,
## 311242291.07,
## 5268500701.1,
## 2542887761.01,
## 14803951786.68,
## 16188514346.44,
## 18231035815.89,
## 19079541164.68,
## 22738650575.01,
## 24961375670.57,
## 261513607691.41,
## 268946402299.09,
## 255222816704.9,
## 22976062973.62,
## 12051686541.16
## ],
## "predict_time": [
## 2017
## ],
## "predict_values": [
## 27966099866.1595
## ],
## "up80": [
## 142431304484.384
## ],
## "low80": [
## -86499104752.0649
## ],
## "up95": [
## 203025523588.521
## ],
## "low95": [
## -147093323856.202
## ]
## }
## }
##