Skip to contents

Cubic splines are piecewise cubic functions that are linked together in a way to guarantee smoothness at data points. Additivity constraints are added for benchmarking purpose and sub-period estimates are derived from each spline. When a sub-period indicator (or a preliminary series) is used, cubic splines are no longer drawn based on the low frequency data but the Benchmark-to-Indicator (BI ratio) is the one being smoothed. Sub- period estimates are then simply the product between the smoothed high frequency BI ratio and the indicator.

Usage

cubicspline(
  s = NULL,
  t,
  nfreq = 4L,
  conversion = c("Sum", "Average", "Last", "First", "UserDefined"),
  obsposition = 1L
)

Arguments

s

Preliminary series. If not NULL, it must be the same class as t.

t

Aggregation constraint. Mandatory. it must be either an object of class ts or a numeric vector.

nfreq

Integer. Annual frequency of the benchmarked series. Used if no preliminary series is provided.

conversion

Conversion rule. Usually "Sum" or "Average". Sum by default.

obsposition

Integer. Postion of the observation in the aggregated period (only used with "UserDefined" conversion)

Value

The benchmarked series is returned

Examples

data("qna_data")
Y <- ts(qna_data$B1G_Y_data[,"B1G_FF"], frequency = 1, start = c(2009,1))

# cubic spline without preliminary series
y1 <- cubicspline(t = Y, nfreq = 4L)

# cubic spline with preliminary series
x1 <- y1 + rnorm(n = length(y1), mean = 0, sd = 10)
cubicspline(s = x1, t = Y)
#>          Qtr1     Qtr2     Qtr3     Qtr4
#> 2009 4397.063 4389.525 4396.652 4371.160
#> 2010 4374.149 4379.796 4451.688 4514.467
#> 2011 4622.571 4712.685 4754.705 4766.039
#> 2012 4754.643 4723.967 4692.555 4678.535
#> 2013 4672.339 4660.743 4677.626 4702.792
#> 2014 4723.708 4747.876 4770.854 4765.563
#> 2015 4787.211 4811.529 4833.484 4861.776
#> 2016 4898.182 4902.189 4932.420 4945.610
#> 2017 4967.784 4965.589 5057.696 5158.831
#> 2018 5286.200 5394.973 5502.625 5583.602
#> 2019 5630.538 5662.939 5633.391 5587.333
#> 2020 5474.084 5410.108 5354.577 5327.731

# cubic splines used for temporal disaggregation
x2 <- ts(qna_data$TURN_Q_data[,"TURN_INDEX_FF"], frequency = 4, start = c(2009,1))
cubicspline(s = x2, t = Y)
#>          Qtr1     Qtr2     Qtr3     Qtr4
#> 2009 3817.265 4655.940 4125.907 4955.289
#> 2010 3700.042 4651.986 4059.082 5308.990
#> 2011 3869.960 4971.484 4311.150 5703.406
#> 2012 4147.811 5013.761 4419.430 5268.698
#> 2013 4159.471 4867.414 4371.355 5315.259
#> 2014 4368.250 4889.973 4383.173 5366.604
#> 2015 4219.172 5090.938 4499.862 5484.029
#> 2016 4323.788 5190.106 4608.648 5555.858
#> 2017 4571.106 5296.208 4556.676 5725.911
#> 2018 4745.996 5623.545 5073.312 6324.547
#> 2019 5083.042 5847.280 5201.402 6382.476
#> 2020 5135.178 4920.197 5120.096 6391.030
#> 2021 5361.533 6291.365 5489.010 6962.494