knitr::opts_chunk$set(echo = TRUE)
library(tiicba)

A set of functions for use in the cost-benefit analysis (cba) of TII simple road realignment schemes. Includes the following functions:

cost_table: generates a table of present value costs (PVC) broken down by type and year for input into a CBA.

fuel_cons: generates a table of fuel consumption costs per km for traffic speeds between 1 and 150 kph for the standard vehicle and fuel types.

time_saving: reads in outline lengths and average speeds for the existing section of road and proposed scheme and estimates time savings per vehicle.

time_benefits: A function to read in appraisal paramaters, time savings calculated and traffic projections to calculate scheme benefits from time savings.

fuel_cons: generates a table of fuel consumption costs per km for traffic speeds between 1 and 150 kph for the standard vehicle and fuel types.

nonfuel_cost_km: generates a table of non-fuel consumption costs per km for traffic speeds between 1 and 150 kph for the standard vehicle types.

veh_op_costs: reads in appraisal paramaters, fuel and non-fuel costs calculated and traffic projections to calculate scheme vehicle operating costs.

More to be added over time. The intention is to ultimately replace the PAG Unit 12 Simple Appraisal Tool with a web based app (via Shiny).

Example

Undertake a simple cost-benefit analysis of an road upgrade project in Meath. The project consists of the upgrade of a 8km section of an existing single carriageway, consisting of a new 10km alginment of Type 1 dual carriageway. An observed AADT of 18,000 and a 5% HGV content on the road was measured in 2016, with average speeds measured as 70 kph. The scheme opening year is assumed to be 2019 and the design speed of the realigned section is 100 kph.

The scheme is estimated to cost €15 million in 2016 prices.

First, load the tiicba package and use the traffic_projfunction to create a table of traffic flow projections using PAG Unit 5.3 link based growth projections

library(tiicba)
library(tidyverse)

proj <- traffic_proj(base_yr = 2016,
                     base_aadt = 18000,
                     opening_yr = 2019,
                     pc_hgv = 0.05,
                     region = "Mid-East")

proj

Next, calculate outline time savings using the time_savings function.

savings <- time_saving(ex_length = 8,
                       prop_length = 10,
                       ex_speed = 70,
                       proj_speed = 100)

savings * 60 * 60

The scheme time benefits can now be estimated using the time_benefits function.

time_ben <- time_benefits(opening_yr = 2019,
                          appr_period = 30,
                          resid_period = 0,
                          disc_rate = 0.05,
                          price_base_yr = 2011,
                          ave_veh_occ = 1.2,
                          traffic_proj = proj,
                          time_saving = savings)

time_ben %>% 
    summarise(benefits = sum(disc_ben))

Fuel and non-fuel operating costs for a vector of traffic speeds (eg. 1 - 150 kph) can be estimated using the fuel_cost_km and nonfuel_cost_km functions.

fuel <- fuel_cost_km(speed = c(1:150),
                     fuel_cons_param = fuel_cons_param,
                     fuel_split = fuel_split,
                     fuel_cost_2011 = fuel_cost_2011,
                     road_type = "nat_pri"
                     )

fuel
non_fuel <- nonfuel_cost_km(speed = c(1:150),
                            non_fuel_param = non_fuel_param,
                            road_type = "nat_pri")

non_fuel

The output of the fuel_cost_km and nonfuel_cost_km can then be used to calculate overall vehicle operating costs using the veh_op_costs function.

veh_op <- veh_op_costs(opening_yr = 2019,
                       appr_period = 30,
                       resid_period = 0,
                       disc_rate = 0.05,
                       price_base_yr = 2011,
                       ave_veh_occ = 1.2,
                       traffic_proj = proj,
                       speed_ex = 70,
                       speed_prop = 100,
                       fuel_costs = fuel,
                       non_fuel_costs = non_fuel)

veh_op %>% 
    summarise(benefits = sum(disc_costs))

On the costs side, a table of scheme costs can be generated using the costs_table function.

costs <- cost_table(cost_est = 15000000,
                    price_base_yr = 2011,
                    opening_yr = 2019,
                    appr_period = 30,
                    resid_period = 0,
                    disc_rate = 0.05,
                    cpi_base = 103.8,
                    cpi_cost_est = 106.0,
                    sppf = 1.3,
                    spl = 0.8,
                    labour_cont = 0.35,
                    cost_yrs = c(2017:2019),
                    cost_prop = c(0.25, 0.5, 0.25))

costs

Produce a summary table of costs and benefits and calculate NPV and BCR using the cost_benefit function.

cost_benefit(cost_table = costs,
             time_benefits = time_ben,
             veh_op_costs = veh_op)


DanBoyB/cba documentation built on May 6, 2019, 1:21 p.m.