Skip to content

Commit b891472

Browse files
committed
Update doc, ref handlings
1 parent d0bb70e commit b891472

1 file changed

Lines changed: 10 additions & 11 deletions

File tree

stan/math/prim/prob/binomial_logit_glm_lpmf.hpp

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
namespace stan {
1919
namespace math {
2020

21-
/** \ingroup multivar_dists
21+
/** \ingroup prob_dists
2222
* Returns the log PMF of the Generalized Linear Model (GLM)
2323
* with Binomial distribution and logit link function.
2424
* The idea is that binomial_logit_glm_lpmf(n | N, x, alpha, beta) should
@@ -93,27 +93,27 @@ return_type_t<T_x, T_alpha, T_beta> binomial_logit_glm_lpmf(
9393
check_consistent_size(function, "Weight vector", beta, N_attributes);
9494
check_consistent_size(function, "Vector of intercepts", alpha, N_instances);
9595

96-
const auto& n_val = as_value_column_array_or_scalar(n_ref);
97-
const auto& N_val = as_value_column_array_or_scalar(N_ref);
96+
auto&& n_val = as_value_column_array_or_scalar(n_ref);
97+
auto&& N_val = as_value_column_array_or_scalar(N_ref);
9898

9999
check_bounded(function, "Successes variable", n_val, 0, N_val);
100100
check_nonnegative(function, "Population size parameter", N_val);
101101

102-
const auto& alpha_val = as_value_column_array_or_scalar(alpha_ref);
103-
const auto& beta_val = as_value_column_vector_or_scalar(beta_ref);
104-
const auto& x_val = value_of(x_ref);
102+
auto&& alpha_val = as_value_column_array_or_scalar(alpha_ref);
103+
auto&& beta_val = as_value_column_vector_or_scalar(beta_ref);
104+
auto&& x_val = value_of(x_ref);
105105
Eigen::Array<T_partials_return, -1, 1> theta(N_instances);
106106
if (T_x_rows == 1) {
107107
theta = forward_as<T_xbeta_tmp>((x_val * beta_val)(0, 0)) + alpha_val;
108108
} else {
109109
theta = (x_val * beta_val).array() + alpha_val;
110110
}
111111

112-
const auto& log_inv_logit_theta = log_inv_logit(theta);
113-
const auto& log1m_inv_logit_theta = log1m_inv_logit(theta);
112+
constexpr bool gradients_calc = !is_constant_all<T_beta, T_x, T_alpha>::value;
113+
auto&& log_inv_logit_theta = to_ref_if<gradients_calc>(log_inv_logit(theta));
114114

115115
T_partials_return logp = sum(n_val * log_inv_logit_theta
116-
+ (N_val - n_val) * log1m_inv_logit_theta);
116+
+ (N_val - n_val) * log1m_inv_logit(theta));
117117

118118
using std::isfinite;
119119
if (!isfinite(logp)) {
@@ -128,8 +128,7 @@ return_type_t<T_x, T_alpha, T_beta> binomial_logit_glm_lpmf(
128128
}
129129

130130
auto ops_partials = make_partials_propagator(x_ref, alpha_ref, beta_ref);
131-
132-
if (!is_constant_all<T_beta, T_x, T_alpha>::value) {
131+
if (gradients_calc) {
133132
Eigen::Matrix<T_partials_return, -1, 1> theta_derivative
134133
= n_val - N_val * exp(log_inv_logit_theta);
135134

0 commit comments

Comments
 (0)