Estimate a bridge model that links one lower-frequency target series to one or more higher-frequency indicator series. Indicators are aligned to the target frequency by forecasting any missing higher-frequency observations and aggregating them within each target period.
Usage
bridge(
target,
indic,
indic_predict = NULL,
indic_aggregators = NULL,
indic_lags = 0,
target_lags = 0,
h = 1,
frequency_conversions = NULL,
se = FALSE,
bootstrap = NULL,
solver_options = NULL,
...
)Arguments
- target
A single target series in a
tsbox::ts_boxable()format.- indic
One or more indicator series in a
tsbox::ts_boxable()format.- indic_predict
A character vector of indicator forecasting methods. Length must be
1or equal to the number of indicator series. Settingindic_predict = "direct"switches to direct MIDAS-style alignment: the indicators are not forecasted, and the most recent complete high-frequency blocks are assigned backward to the target periods. Direct alignment must be used for all indicators at once. Whenh > 1, the latest complete block is assigned to the farthest requested forecast horizon and earlier complete blocks are assigned backward from there. Forindic_predict = "mean", missing high-frequency observations are filled with the mean of the latest availableobs_per_targethigh-frequency observations, and that same mean is extended across the forecast horizon.- indic_aggregators
A character vector of aggregation methods or a list of numeric weights. Length must be
1or equal to the number of indicator series. Numeric weights must sum to one and have the appropriate length for the inferred target-period block size."unrestricted"keeps one separate coefficient per high-frequency observation within the target period. The parametric aggregators use two coefficients each:"expalmon"uses(linear, quadratic),"beta"uses(left_shape, right_shape)as the normalized beta shape parameters, and"legendre"uses(first_order, second_order)as coefficients on the first two shifted orthonormal Legendre basis functions. Whenindic_predict = "direct",indic_aggregatorsis ignored and direct blocks are averaged within each target period.- indic_lags
A non-negative integer giving the number of target-period lags to add for each aggregated indicator.
- target_lags
A non-negative integer giving the autoregressive order in the target equation.
- h
A positive integer forecast horizon measured in target periods.
- frequency_conversions
A named numeric vector used to customize the regular frequency ladder. Supported names are
spm,mph,hpd,dpw,wpm,mpq, andqpy.- se
Logical flag indicating whether bootstrap coefficient standard errors and predictive forecast intervals should be computed. When
FALSE,bootstrapis ignored.- bootstrap
A list of bootstrap controls. Currently only
list(type = "block", N = 100, block_length = NULL)is supported.typemust be"block",Nis the number of bootstrap replications, andblock_lengthis the target-frequency block length. Whenblock_lengthisNULL,bridge()usesceiling(n^(1/3))based on the final target-period estimation sample size. The bootstrap is conditional on the aligned low-frequency design matrix and therefore does not re-estimate indicator forecasts or aggregation weights, but the stored forecast draws include simulated future target shocks soforecast()returns predictive intervals.- solver_options
A list of optional controls for joint parametric-weight optimization. Supported entries are:
methodfor the optimizer ("L-BFGS-B","BFGS","Nelder-Mead", or"nlminb"),maxiterfor the iteration budget per optimization run,n_startsfor the number of multi-start attempts,seedfor reproducible random restarts,tracefor optimizer verbosity, andstart_valuesfor user-supplied initial parameter values.start_valuescan be either a numeric vector or a named list. For a numeric vector, values are concatenated in indicator order across the parametric aggregators. Within each indicator, the parameter order is(linear, quadratic)for"expalmon",(left_shape, right_shape)for"beta", and(first_order, second_order)for"legendre". Named-liststart_valuesmust provide exactly the required number of values for each parametric indicator. These controls are ignored unless at least one indicator uses a parametric aggregator.- ...
Reserved for future extensions.
Value
An object of class "bridge" containing the standardized input
series, inferred frequencies, aligned estimation and forecast datasets, the
fitted target model, fitted indicator models, and metadata required by
forecast.bridge() and summary.bridge().
Details
Supported indicator forecasting methods are "mean", "last",
"auto.arima", "ets", and "direct". Supported aggregation methods are
"mean", "last", "sum", "unrestricted", "expalmon", "beta",
"legendre", or a numeric weight vector supplied inside a list().
"unrestricted" expands each high-frequency observation within a target
period into its own bridge regressor, which corresponds to a U-MIDAS style
specification when the frequency gap is small. When one or more indicators
use a parametric aggregator, the corresponding aggregation weights are
estimated jointly against the final bridge-model objective rather than one
indicator at a time.
Unrestricted mixed-frequency regressions can become parameter-heavy quickly.
When indic_aggregators = "unrestricted", bridge() warns if the final
estimation sample contains fewer than 10 observations per predictor in the
bridge regression.
The package assumes a regular frequency ladder
second -> minute -> hour -> day -> week -> month -> quarter -> year.
The default number of lower-level observations per higher-level unit is:
spm = 60mph = 60hpd = 24dpw = 7wpm = 4mpq = 3qpy = 4
Users can override any subset of these values with
frequency_conversions. If a target period contains more high-frequency
observations than implied by the current mapping, bridge() keeps the most
recent observations and emits a summarized warning. If a target period
contains fewer observations than required, the call fails. Month-, quarter-,
and year-based input dates are standardized to period starts when needed
for frequency recognition.
References
Baffigi, A., Golinelli, R., & Parigi, G. (2004). Bridge models to forecast the euro area GDP. International Journal of Forecasting, 20(3), 447-460. doi:10.1016/S0169-2070(03)00067-0
Ghysels, E., Sinko, A., & Valkanov, R. (2007). MIDAS regressions: Further results and new directions. Econometric Reviews, 26(1), 53-90. doi:10.1080/07474930600972467
Andreou, E., Ghysels, E., & Kourtellos, A. (2010). Regression models with mixed sampling frequencies. Journal of Econometrics, 158(2), 246-261. doi:10.1016/j.jeconom.2010.01.004
Schumacher, C. (2016). A comparison of MIDAS and bridge equations. International Journal of Forecasting, 32(2), 257-270. doi:10.1016/j.ijforecast.2015.07.004
Burri, M. (2026). Nowcasting Swiss GDP Growth From Public Lead Texts: Simple Methods Are Sufficient. Oxford Bulletin of Economics and Statistics, 1-25. doi:10.1111/obes.70073
Examples
gdp_growth <- suppressMessages(tsbox::ts_na_omit(tsbox::ts_pc(gdp)))
model <- bridge(
target = gdp_growth,
indic = baro,
indic_predict = "auto.arima",
indic_aggregators = "mean",
indic_lags = 1,
target_lags = 1,
h = 2
)
expalmon_model <- bridge(
target = gdp_growth,
indic = baro,
indic_predict = "auto.arima",
indic_aggregators = "expalmon",
solver_options = list(seed = 123, n_starts = 3),
h = 1
)
forecast(model)
#> Bridge forecast
#> -----------------------------------
#> Target series: gdp_growth
#> Forecast horizon: 2
#> Uncertainty: point forecast only
#> -----------------------------------
#> time mean
#> 1 2023-01-01 0.972
#> 2 2023-04-01 0.698
summary(expalmon_model)
#> Bridge model summary
#> -----------------------------------
#> Target series: gdp_growth
#> Target frequency: quarter
#> Forecast horizon: 1
#> Estimation rows: 75
#> Regressors: baro
#> -----------------------------------
#> Target equation coefficients:
#> Estimate
#> (Intercept) -9.371
#> baro 0.098
#> -----------------------------------
#> Indicator summary:
#> Frequency Predict Aggregation
#> baro month auto.arima expalmon
#> -----------------------------------
#> Estimated parametric aggregation:
#> baro weights: 0.006, 0.994, 0.000
#> baro parameters: -4.914, -10.000
#> -----------------------------------
#> Joint parametric aggregation optimization:
#> Method: L-BFGS-B
#> Objective value: 60.832
#> Convergence code: 0
#> Best start: 1 / 3
#> -----------------------------------
