| chaining {hicp} | R Documentation |
Chain-linking, rebasing and frequency conversion
Description
Function unchain() decouples a chained index series with monthly frequency. These unchained index series can be aggregated into higher-level indices using aggregate(). To obtain a longterm index series, the higher-level indices must be chained using function chain(). Finally, rebase() sets the index reference period. Monthly indices can be converted into annual or quarterly indices using function convert().
Usage
unchain(x, t, by=12)
chain(x, t, by=12)
rebase(x, t, t.ref, verbose=FALSE)
convert(x, t, freq="annual")
Arguments
x |
numeric vector of index values |
t |
date vector |
by |
for annual overlap |
t.ref |
character specifying the index reference period. Could be a whole year ( |
verbose |
logical indicating if messages regarding the index reference period should be printed to the console or not. |
freq |
frequency of converted index. Either |
Details
Function unchain() sets the value of the first price reference period to NA although the value could be set to 100 (if by is not NULL) or 100 divided by the average of the year (if by=NULL). This is wanted to avoid aggregation of these values. Function chain() finally sets the values back to 100.
Value
Functions unchain(), chain() and rebase() return numeric values of the same length as x.
Function convert() returns a named vector of the length of quarter or years available in t, where the names correspond to the years or quarters.
Author(s)
Sebastian Weinand
References
European Commission, Eurostat, Harmonised Index of Consumer Prices (HICP) - Methodological Manual - 2024 edition, Publications Office of the European Union, 2024, https://data.europa.eu/doi/10.2785/055028.
See Also
Examples
### EXAMPLE 1
t <- seq.Date(from=as.Date("2021-12-01"), to=as.Date("2024-12-01"), by="1 month")
p <- rnorm(n=length(t), mean=100, sd=5)
100*p/p[1]
chain(unchain(p, t, by=12), t, by=12)
convert(x=p, t=t, freq="q") # quarterly index
t <- seq.Date(from=as.Date("2021-01-01"), to=as.Date("2024-12-01"), by="1 month")
p <- rnorm(n=length(t), mean=100, sd=5)
100*p/mean(p[1:12])
(res <- chain(unchain(p, t, by=NULL), t, by=NULL))
# note that for backwards compability, each month in the first
# year receives an index value of 100. this allows the same
# computation again:
chain(unchain(res, t, by=NULL), t, by=NULL)
### EXAMPLE 2
# set cores for testing on CRAN:
library(restatapi)
options(restatapi_cores=1)
library(data.table)
# get hicp index values for euro area with base 2015:
dt <- hicp.dataimport(id="prc_hicp_midx", filter=list(unit="I15", geo="EA"))
dt[, "time":=as.Date(paste0(time, "-01"))]
setkeyv(x=dt, cols=c("unit","coicop","time"))
# check chain-linked indices against published data:
dt[, "dec_ratio" := unchain(x=values, t=time), by="coicop"]
dt[, "chained_index" := chain(x=dec_ratio, t=time), by="coicop"]
dt[, "index_own" := rebase(x=chained_index, t=time, t.ref="2015"), by="coicop"]
dt[abs(values-index_own)>0.01,] # should be empty
# check converted indices against published data:
dta <- dt[, as.data.table(convert(x=values, t=time), keep.rownames=TRUE), by="coicop"]
setnames(x=dta, c("coicop","time","index"))
aind <- hicp.dataimport(id="prc_hicp_aind", filter=list(unit="INX_A_AVG", geo="EA"))
aind[, c("geo","unit") := NULL]
dtcomp <- merge(x=aind, y=dta, by=c("coicop","time"), all=TRUE)
dtcomp[abs(values-index)>0.01,] # should be empty