@@ -28,7 +28,7 @@ struct neg_binomial_2_log_likelihood {
28
28
require_all_eigen_vector_t <ThetaVec>* = nullptr >
29
29
inline auto operator ()(const ThetaVec& theta, const Eta& eta,
30
30
const std::vector<int >& y,
31
- const std::vector<int >& y_index, const Mean& mean,
31
+ const std::vector<int >& y_index, Mean& & mean,
32
32
std::ostream* pstream) const {
33
33
Eigen::VectorXi n_per_group = Eigen::VectorXi::Zero (theta.size ());
34
34
Eigen::VectorXi counts_per_group = Eigen::VectorXi::Zero (theta.size ());
@@ -76,18 +76,18 @@ template <bool propto = false, typename Eta, typename ThetaVec, typename Mean,
76
76
require_eigen_vector_t <ThetaVec>* = nullptr >
77
77
inline auto laplace_marginal_tol_neg_binomial_2_log_lpmf (
78
78
const std::vector<int >& y, const std::vector<int >& y_index, const Eta& eta,
79
- const Mean& mean, CovarFun&& covariance_function, CovarArgs&& covar_args,
79
+ Mean& & mean, CovarFun&& covariance_function, CovarArgs&& covar_args,
80
80
const ThetaVec& theta_0, double tolerance, int max_num_steps,
81
81
const int hessian_block_size, const int solver,
82
82
const int max_steps_line_search, std::ostream* msgs) {
83
83
laplace_options_user_supplied ops{hessian_block_size, solver,
84
84
max_steps_line_search, tolerance,
85
85
max_num_steps, value_of (theta_0)};
86
- return laplace_marginal_density (neg_binomial_2_log_likelihood{},
87
- std::forward_as_tuple (eta, y, y_index, mean) ,
88
- std::forward<CovarFun>(covariance_function ),
89
- std::forward<CovarArgs>(covar_args), ops ,
90
- msgs);
86
+ return laplace_marginal_density (
87
+ neg_binomial_2_log_likelihood{} ,
88
+ std::forward_as_tuple (eta, y, y_index, std::forward<Mean>(mean) ),
89
+ std::forward<CovarFun>(covariance_function) ,
90
+ std::forward<CovarArgs>(covar_args), ops, msgs);
91
91
}
92
92
93
93
/* *
@@ -112,13 +112,13 @@ template <bool propto = false, typename Eta, typename Mean, typename CovarFun,
112
112
typename CovarArgs>
113
113
inline auto laplace_marginal_neg_binomial_2_log_lpmf (
114
114
const std::vector<int >& y, const std::vector<int >& y_index, const Eta& eta,
115
- const Mean& mean, CovarFun&& covariance_function, CovarArgs&& covar_args,
115
+ Mean& & mean, CovarFun&& covariance_function, CovarArgs&& covar_args,
116
116
std::ostream* msgs) {
117
- return laplace_marginal_density (neg_binomial_2_log_likelihood{},
118
- std::forward_as_tuple (eta, y, y_index, mean) ,
119
- std::forward<CovarFun>(covariance_function ),
120
- std::forward<CovarArgs>(covar_args ),
121
- laplace_options_default{}, msgs);
117
+ return laplace_marginal_density (
118
+ neg_binomial_2_log_likelihood{} ,
119
+ std::forward_as_tuple (eta, y, y_index, std::forward<Mean>(mean) ),
120
+ std::forward<CovarFun>(covariance_function ),
121
+ std::forward<CovarArgs>(covar_args), laplace_options_default{}, msgs);
122
122
}
123
123
124
124
struct neg_binomial_2_log_likelihood_summary {
@@ -127,8 +127,8 @@ struct neg_binomial_2_log_likelihood_summary {
127
127
inline auto operator ()(const ThetaVec& theta, const Eta& eta,
128
128
const std::vector<int >& y,
129
129
const std::vector<int >& n_per_group,
130
- const std::vector<int >& counts_per_group,
131
- const Mean& mean, std::ostream* pstream) const {
130
+ const std::vector<int >& counts_per_group, Mean&& mean,
131
+ std::ostream* pstream) const {
132
132
Eigen::Map<const Eigen::VectorXi> y_map (y.data (), y.size ());
133
133
Eigen::Map<const Eigen::VectorXi> n_per_group_map (n_per_group.data (),
134
134
n_per_group.size ());
@@ -173,7 +173,7 @@ template <bool propto = false, typename Eta, typename ThetaVec, typename Mean,
173
173
require_eigen_vector_t <ThetaVec>* = nullptr >
174
174
inline auto laplace_marginal_tol_neg_binomial_2_log_summary_lpmf (
175
175
const std::vector<int >& y, const std::vector<int >& n_per_group,
176
- const std::vector<int >& counts_per_group, const Eta& eta, const Mean& mean,
176
+ const std::vector<int >& counts_per_group, const Eta& eta, Mean& & mean,
177
177
CovarFun&& covariance_function, CovarArgs&& covar_args,
178
178
const ThetaVec& theta_0, double tolerance, int max_num_steps,
179
179
const int hessian_block_size, const int solver,
@@ -183,7 +183,8 @@ inline auto laplace_marginal_tol_neg_binomial_2_log_summary_lpmf(
183
183
max_num_steps, value_of (theta_0)};
184
184
return laplace_marginal_density (
185
185
neg_binomial_2_log_likelihood_summary{},
186
- std::forward_as_tuple (eta, y, n_per_group, counts_per_group, mean),
186
+ std::forward_as_tuple (eta, y, n_per_group, counts_per_group,
187
+ std::forward<Mean>(mean)),
187
188
std::forward<CovarFun>(covariance_function),
188
189
std::forward<CovarArgs>(covar_args), ops, msgs);
189
190
}
@@ -210,12 +211,13 @@ template <bool propto = false, typename Eta, typename Mean, typename CovarFun,
210
211
typename CovarArgs>
211
212
inline auto laplace_marginal_neg_binomial_2_log_summary_lpmf (
212
213
const std::vector<int >& y, const std::vector<int >& n_per_group,
213
- const std::vector<int >& counts_per_group, const Eta& eta, const Mean& mean,
214
+ const std::vector<int >& counts_per_group, const Eta& eta, Mean& & mean,
214
215
CovarFun&& covariance_function, CovarArgs&& covar_args,
215
216
std::ostream* msgs) {
216
217
return laplace_marginal_density (
217
218
neg_binomial_2_log_likelihood_summary{},
218
- std::forward_as_tuple (eta, y, n_per_group, counts_per_group, mean),
219
+ std::forward_as_tuple (eta, y, n_per_group, counts_per_group,
220
+ std::forward<Mean>(mean)),
219
221
std::forward<CovarFun>(covariance_function),
220
222
std::forward<CovarArgs>(covar_args), laplace_options_default{}, msgs);
221
223
}
0 commit comments