Skip to contents

Linear regression model of the revisions (R) on a preliminary vintage (P)

Usage

efficiencyModel1(vintages.view, gap = 1, na.zero = FALSE)

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).

See also

`revision_analysis()`, `render_report()`

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