diff --git a/R/latent_model.R b/R/latent_model.R index 2fa94bab1..9f6b4b7a4 100644 --- a/R/latent_model.R +++ b/R/latent_model.R @@ -165,13 +165,26 @@ epidist_gen_log_lik_latent <- function(family) { #' @export epidist_formula_model.epidist_latent_model <- function( data, formula, ...) { - # data is only used to dispatch on + # Update main formula formula <- stats::update( - formula, delay | vreal(relative_obs_time, pwindow, swindow) + - vint(woverlap, noverlap) ~ ., - pwindow ~ 0 + as.factor(.row_id), - swindow ~ 0 + as.factor(.row_id) + formula, delay | vreal(relative_obs_time, pwindow, swindow) ~ . ) + + # Only update pwindow/swindow formulas if intercept only + fixed_dpars <- names(formula$pfix) + formula_dpars <- names(formula$pforms) + + # Check if pwindow needs updating + if (!("pwindow" %in% fixed_dpars) || + identical(formula_dpars$pwindow, as.formula("pwindow ~ 1"))) { + formula$pforms$pwindow <- as.formula("pwindow ~ 0 + as.factor(.row_id)") + } + + # Check if swindow needs updating + if (!("swindow" %in% fixed_dpars) || + identical(formula_dpars$swindow, as.formula("swindow ~ 1"))) { + formula$pforms$swindow <- as.formula("swindow ~ 0 + as.factor(.row_id)") + } return(formula) } diff --git a/inst/stan/latent_model/tparameters.stan b/inst/stan/latent_model/tparameters.stan deleted file mode 100644 index d7acadd8f..000000000 --- a/inst/stan/latent_model/tparameters.stan +++ /dev/null @@ -1,7 +0,0 @@ -vector[N] pwindow; -vector[N] swindow; -swindow = to_vector(vreal3) .* swindow_raw; -pwindow[noverlap] = to_vector(vreal2[noverlap]) .* pwindow_raw[noverlap]; -if (wN) { - pwindow[woverlap] = swindow[woverlap] .* pwindow_raw[woverlap]; -}