update_model: Fit causal model using 'stan'

View source: R/update_model.R

update_modelR Documentation

Fit causal model using 'stan'

Description

Takes a model and data and returns a model object with data attached and a posterior model

Usage

update_model(
  model,
  data = NULL,
  data_type = NULL,
  keep_type_distribution = TRUE,
  keep_event_probabilities = FALSE,
  keep_fit = FALSE,
  censored_types = NULL,
  ...
)

Arguments

model

A causal_model. A model object generated by make_model.

data

A data.frame. Data of nodes that can take three values: 0, 1, and NA. In long form as generated by make_events

data_type

Either 'long' (as made by make_data) or 'compact' (as made by collapse_data). Compact data must have entries for each member of each strategy family to produce a valid simplex. When long form data is provided with missingness, missing data is assumed to be missing at random.

keep_type_distribution

Logical. Whether to keep the (transformed) distribution of the causal types. Defaults to 'TRUE'

keep_event_probabilities

Logical. Whether to keep the (transformed) distribution of event probabilities. Defaults to 'FALSE'

keep_fit

Logical. Whether to keep the stanfit object produced by sampling for further inspection. See ?stanfit for more details. Defaults to 'FALSE'. Note the stanfit object has internal names for parameters (lambda), event probabilities (w), and the type distribution (types)

censored_types

vector of data types that are selected out of the data, e.g. c("X0Y0")

...

Options passed onto sampling call. For details see ?rstan::sampling

Value

An object of class causal_model. The returned model is a list containing the elements comprising a model (e.g. 'statement', 'nodal_types' and 'DAG') with the posterior_distribution returned by stan attached to it.

See Also

make_model allows to create new model, summary.causal_model provides summary method for output objects of class causal_model

Examples

 model <- make_model('X->Y')
 data_long   <- simulate_data(model, n = 4)
 data_short  <- collapse_data(data_long, model)
 
 model <-  update_model(model, data_long)
 model <-  update_model(model, data_short)
 
 ## Not run: 
   # It is possible to implement updating without data, in which
   # case the posterior is a stan object that reflects the prior
   update_model(model)

   data <- data.frame(X=rep(0:1, 10), Y=rep(0:1,10))

   # Censored data types
   # We update less than we might because we are aware of filtered data
   uncensored <-
     make_model("X->Y") |>
     update_model(data) |>
     query_model(te("X", "Y"), using = "posteriors")

   censored <-
     make_model("X->Y") |>
     update_model(
       data,
       censored_types = c("X1Y0")) |>
     query_model(te("X", "Y"), using = "posteriors")


   # Censored data: We learn nothing because the data
   # we see is the only data we could ever see
   make_model("X->Y") |>
     update_model(
       data,
       censored_types = c("X1Y0", "X0Y0", "X0Y1")) |>
     query_model(te("X", "Y"), using = "posteriors")
 
## End(Not run)


macartan/gbiqq documentation built on April 28, 2024, 10:07 p.m.