I am trying to make a function for a non-linear sigmoid brms::brm model I commonly use for re-usability sake, but I am getting a couple of errors for when I want to fix one of my terms in the equation. For example, below I want to fix t = 1000.
When I run the model to have all the variables predicted, it runs fine, but as soon as I try to have one of the variables fixed it says:
"Error: The following variables can neither be found in ‘data’ nor in ‘data2’: ‘t’ "
then when I uncomment d_2 = list(t = 1000) I get:
“Error in get(covars[i], data) : object ‘t’ not found”
(The data is not mine to share, but I can edit it if it is necessary to receive the help I need)
(I am relatively new to R and Stan)
a_model <- function(b,
t,
h,
i,
predict_equation,
d_1,
#d_2,
priors,
inits) {
brms::brm(
formula = brms::brmsformula(
normalized_measurement ~ (b + (t - b) / (1 + 10^((i - log_val)*h))),
predict_equation,
nl = TRUE),
data = d_1,
#data2 = d_2,
prior = priors,
inits = inits,
iter = 8000,
control = list(adapt_delta = 0.99, max_treedepth = 10)
)
}
predict_eq = i + h + b ~ 0 + G
priors = c(brms::prior(normal(-90,20), nlpar = "i"),
brms::prior(normal(-100,50), nlpar = "h"),
brms::prior(normal(0,5), nlpar = "b")
)
inits_list = list(i = -90, h = -100, b = 0)
inits = list(inits_list, inits_list, inits_list, inits_list)
a_model(b = b,
t = 1000,
h = h,
i = i,
predict_equation = predict_eq,
d_1 = my_data,
#d_2 = list(top = 1000),
priors = priors,
inits = inits)
Thank you in advance!