Linear regression model of the revisions (R) on a preliminary vintage (P)
Arguments
- vintages.view
mts object. Vertical or diagonal view of the `create_vintages()` output
- gap
Integer. Gap to consider between each vintages. Default is 1 which means that revisions are calculated and tested for each vintages consecutively.
- na.zero
Boolean whether missing values should be considered as 0 or rather as data not (yet) available (the default).
Examples
## Simulated data
period_range <- seq(as.Date('2011-01-01'),as.Date('2020-10-01'),by='quarter')
qtr <- (as.numeric(substr(period_range,6,7))+2)/3
time_period <- rep(paste0(format(period_range, "%Y"), "Q", qtr),5)
np <- length(period_range)
rev_date <- c(rep("2021-06-30",np), rep("2021-12-31",np), rep("2022-06-30",np),
rep("2022-12-31",np), rep("2023-06-30",np))
set.seed(1)
xt <- cumsum(sample(rnorm(1000,0,1), np, TRUE))
rev <- rnorm(np*4,0,.1)
obs_values <- xt
for(i in 1:4) {
xt <- xt+rev[(1+(i-1)*np):(i*np)]
obs_values <- c(obs_values,xt)
}
df <- data.frame(rev_date, time_period, obs_values)
## Create vintage and test
vintages <- create_vintages(df, periodicity = 4)
efficiencyModel1(vintages$diagonal_view)
#> N R2 F intercept.estimate
#> [Release[2]]-[Release[1]] 40 0.064342830 2.6131661 0.03955525
#> [Release[3]]-[Release[2]] 40 0.071263987 2.9158248 0.01253707
#> [Release[4]]-[Release[3]] 40 0.014328986 0.5524170 -0.03276902
#> [Release[5]]-[Release[4]] 40 0.009136627 0.3503932 -0.01101970
#> intercept.stderr intercept.pvalue slope.estimate
#> [Release[2]]-[Release[1]] 0.01737525 0.02853379 -0.005714687
#> [Release[3]]-[Release[2]] 0.02135381 0.56060100 -0.007423417
#> [Release[4]]-[Release[3]] 0.01868319 0.08750526 0.002843031
#> [Release[5]]-[Release[4]] 0.01933166 0.57200970 -0.002345472
#> slope.stderr slope.pvalue skewness kurtosis
#> [Release[2]]-[Release[1]] 0.003535159 0.11425292 0.2597218 -0.43395506
#> [Release[3]]-[Release[2]] 0.004347335 0.09587371 -0.2938120 -0.06368272
#> [Release[4]]-[Release[3]] 0.003825146 0.46190246 0.2012318 -0.05408149
#> [Release[5]]-[Release[4]] 0.003962345 0.55739632 -0.7122024 1.53571113
#> JarqueBera.value JarqueBera.pvalue BreuschPagan.R2
#> [Release[2]]-[Release[1]] 0.7444754 0.68919041 1.218545e-02
#> [Release[3]]-[Release[2]] 0.5677057 0.75287742 3.525564e-05
#> [Release[4]]-[Release[3]] 0.2679654 0.87460520 4.268766e-02
#> [Release[5]]-[Release[4]] 7.1294240 0.02830514 1.671692e-02
#> BreuschPagan.value BreuschPagan.pvalue White.R2
#> [Release[2]]-[Release[1]] 0.468759236 0.4977135 0.012285119
#> [Release[3]]-[Release[2]] 0.001339762 0.9709934 0.000453343
#> [Release[4]]-[Release[3]] 1.694463842 0.2008499 0.054232001
#> [Release[5]]-[Release[4]] 0.646042725 0.4265307 0.017604610
#> White.value White.pvalue arch.R2 arch.value
#> [Release[2]]-[Release[1]] 0.49140475 0.7821550 0.0456815355 1.78157988
#> [Release[3]]-[Release[2]] 0.01813372 0.9909741 0.0033041245 0.12886085
#> [Release[4]]-[Release[3]] 2.16928004 0.3380234 0.0853776151 3.32972699
#> [Release[5]]-[Release[4]] 0.70418439 0.7032153 0.0005330063 0.02078725
#> arch.pvalue
#> [Release[2]]-[Release[1]] 0.18195545
#> [Release[3]]-[Release[2]] 0.71961608
#> [Release[4]]-[Release[3]] 0.06803817
#> [Release[5]]-[Release[4]] 0.88536005