update_model {CausalQueries} | R 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_fit = FALSE,
keep_transformed = TRUE,
keep_event_probabilities = FALSE,
censored_types = NULL,
...
)
Arguments
model |
A |
data |
A |
data_type |
Either 'long' (as made by |
keep_fit |
Logical. Whether to append the
stanfit object to the model. Defaults to 'FALSE'. See
|
keep_transformed |
Logical. Whether to keep transformed parameters, prob_of_types, P_lambdas, w, w_full |
keep_event_probabilities |
Logical. Whether to keep the distribution of event probabilities. Defaults to 'FALSE' |
censored_types |
vector of data types that are selected out of
the data, e.g. |
... |
Options passed onto sampling call. For
details see |
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.
Examples
model <- make_model('X->Y')
data_long <- simulate_data(model, n = 4)
data_short <- collapse_data(data_long, model)
model_1 <- update_model(model, data_long)
model_2 <- update_model(model, data_long, keep_transformed = FALSE)
## Not run:
# Throws error unless compact data indicated:
model_3 <- update_model(model, data_short)
model_4 <- update_model(model, data_short, data_type = 'compact')
# It is possible to implement updating without data, in which
# case the posterior is a stan object that reflects the prior
model_5 <- update_model(model)
# Censored data types
# We update less than we might because we are aware of filtered data
uncensored <- make_model("X->Y") %>%
update_model(data.frame(X=rep(0:1, 10), Y=rep(0:1,10))) |>
query_model(te("X", "Y"), using = "posteriors")
censored <- make_model("X->Y") %>%
update_model(data.frame(X=rep(0:1, 10), Y=rep(0:1,10)),
censored_types = c("X1Y0")) %>%
query_model(te("X", "Y"), using = "posteriors")
# Censored data: We learning nothing because the data
# we see is the only data we could ever see
make_model("X->Y") %>%
update_model(data.frame(X=rep(1,5), Y=rep(1,5)),
censored_types = c("X1Y0", "X0Y0", "X0Y1")) %>%
query_model(te("X", "Y"), using = "posteriors")
## End(Not run)