Learn R Programming

bsynth (version 1.0)

bayesianFactor: Create a Bayesian Synthetic Control Object Using Panel Data

Description

A Bayesian Factor Model has raw data and draws from the posterior distribution. This is represented by an R6 Class.

Code and theory based on Pinkney 2021.

public methods:

  • initialize() initializes the variables and model parameters

  • fit() fits the stan model and returns a fit object

  • updateWidth updates the width of the credible interval

  • placeboPlot generates a counterfactual placebo plot

  • effectPlot returns a plot of the treatment effect over time

  • summarizeLiftreturns descriptive statistics of the lift estimate

  • biasDraws returns a plot of the relative bias in a LFM

  • liftDraws returns a plot of the posterior lift distribution

  • liftBias returns a plot of the relative bias given a lift offset

Arguments

Value

vizdraws object with the relative bias with offset.

Active bindings

timeTiles

ggplot2 object that shows when the intervention happened.

plotData

tibble with the observed outcome and the counterfactual data.

interventionTime

returns the intervention time period.

synthetic

ggplot2 object that shows the observed and counterfactual outcomes over time.

Methods


Method new()

Create a new bayesianFactor object.

Usage

bayesianFactor$new(
  data,
  time,
  id,
  treated,
  outcome,
  ci_width = 0.75,
  covariates
)

Arguments

data

Long data.frame object with fields outcome, time, id, and treatment indicator.

time

Name of the variable in the data frame that

id

Name of the variable in the data frame that identifies the units (e.g. country, region etc).

treated

Name of the variable in the data frame that contains the treatment assignment of the intervention.

outcome

Name of the outcome variable.

ci_width

Credible interval's width. This number is in the (0,1) interval.

covariates

Dataframe with a column for id and the other columns Defaults to NULL if no covariates should be included in the model.

Details

params described in the data structure section of the documentation of the R6 class at the top of the file.

Returns

A new bayesianFactor object.


Method fit()

Fit Stan model.

Usage

bayesianFactor$fit(L = 8, ...)

Arguments

L

Number of factors.

...

other arguments passed to rstan::sampling().


Method updateWidth()

Update the width of the credible interval.

Usage

bayesianFactor$updateWidth(ci_width = 0.75)

Arguments

ci_width

New width for the credible interval. This number should be in the (0,1) interval.


Method summarizeLift()

summarizeLift returns descriptive statistics of the lift estimate.

Usage

bayesianFactor$summarizeLift()


Method effectPlot()

effectPlot returns ggplot2 object that shows the effect of the intervention over time.

Usage

bayesianFactor$effectPlot()


Method liftDraws()

Plots lift.

Usage

bayesianFactor$liftDraws(from, to, ...)

Arguments

from

First period to consider when calculating lift. If infinite, set to the time of the intervention.

to

Last period to consider when calculating lift. If infinite, set to the last period.

...

other arguments passed to vizdraws::vizdraws().

Returns

vizdraws object with the posterior distribution of the lift.


Method liftBias()

Plot bias magnitude in terms of lift for period (firstT, lastT)

Usage

bayesianFactor$liftBias(firstT, lastT, offset, ...)

Arguments

firstT

Start of the time period to compute relative bias over. Must be after the intervention.

lastT

End of the time period to compute relative bias over. Must be after the intervention. over. They must be after the intervention.

offset

Target lift %.

...

other arguments passed to vizdraws::vizdraws().


Method biasDraws()

Plots relative upper bias / tau for a time period (firstT, lastT).

Usage

bayesianFactor$biasDraws(small_bias = 0.3, firstT, lastT)

Arguments

small_bias

Threshold value for considering the bias "small".

firstT, lastT

Time periods to compute relative bias over, they must after the intervention.

Returns

vizdraw object with the posterior distribution of relative bias. Bias is scaled by the time periods.


Method clone()

The objects of this class are cloneable with this method.

Usage

bayesianFactor$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.