From 663214393e7b45484dde680c3fb341390a3b1100 Mon Sep 17 00:00:00 2001 From: Ben Letham Date: Fri, 25 May 2018 13:57:45 -0700 Subject: [PATCH] Minor stan simplifications --- R/inst/stan/prophet.stan | 9 +++------ python/stan/unix/prophet.stan | 9 +++------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/R/inst/stan/prophet.stan b/R/inst/stan/prophet.stan index 09250c9..a2dcfff 100644 --- a/R/inst/stan/prophet.stan +++ b/R/inst/stan/prophet.stan @@ -29,10 +29,7 @@ functions { real m_pr; // Compute the rate in each segment - k_s[1] = k; - for (i in 1:S) { - k_s[i + 1] = k_s[i] + delta[i]; - } + k_s = append_row(k, k + cumulative_sum(delta)); // Piecewise offsets m_pr = m; // The offset in the previous segment @@ -42,7 +39,7 @@ functions { } return gamma; } - + vector logistic_trend( real k, real m, @@ -56,7 +53,7 @@ functions { vector[S] gamma; gamma = logistic_gamma(k, m, delta, t_change, S); - return cap ./ (1 + exp(-(k + A * delta) .* (t - (m + A * gamma)))); + return cap .* inv_logit((k + A * delta) .* (t - (m + A * gamma))); } // Linear trend function diff --git a/python/stan/unix/prophet.stan b/python/stan/unix/prophet.stan index 09250c9..a2dcfff 100644 --- a/python/stan/unix/prophet.stan +++ b/python/stan/unix/prophet.stan @@ -29,10 +29,7 @@ functions { real m_pr; // Compute the rate in each segment - k_s[1] = k; - for (i in 1:S) { - k_s[i + 1] = k_s[i] + delta[i]; - } + k_s = append_row(k, k + cumulative_sum(delta)); // Piecewise offsets m_pr = m; // The offset in the previous segment @@ -42,7 +39,7 @@ functions { } return gamma; } - + vector logistic_trend( real k, real m, @@ -56,7 +53,7 @@ functions { vector[S] gamma; gamma = logistic_gamma(k, m, delta, t_change, S); - return cap ./ (1 + exp(-(k + A * delta) .* (t - (m + A * gamma)))); + return cap .* inv_logit((k + A * delta) .* (t - (m + A * gamma))); } // Linear trend function