Created
December 9, 2020 07:21
-
-
Save SteveBronder/a3dbe2ea7c8a00c6275ec72c6829a17d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Code generated by stanc 51d1957 | |
#include <stan/model/model_header.hpp> | |
namespace glmr_model_namespace { | |
inline void validate_positive_index(const char* var_name, const char* expr, | |
int val) { | |
if (val < 1) { | |
std::stringstream msg; | |
msg << "Found dimension size less than one in simplex declaration" | |
<< "; variable=" << var_name << "; dimension size expression=" << expr | |
<< "; expression value=" << val; | |
std::string msg_str(msg.str()); | |
throw std::invalid_argument(msg_str.c_str()); | |
} | |
} | |
inline void validate_unit_vector_index(const char* var_name, const char* expr, | |
int val) { | |
if (val <= 1) { | |
std::stringstream msg; | |
if (val == 1) { | |
msg << "Found dimension size one in unit vector declaration." | |
<< " One-dimensional unit vector is discrete" | |
<< " but the target distribution must be continuous." | |
<< " variable=" << var_name << "; dimension size expression=" << expr; | |
} else { | |
msg << "Found dimension size less than one in unit vector declaration" | |
<< "; variable=" << var_name << "; dimension size expression=" << expr | |
<< "; expression value=" << val; | |
} | |
std::string msg_str(msg.str()); | |
throw std::invalid_argument(msg_str.c_str()); | |
} | |
} | |
template <typename T__> | |
using var_value_vector = std::conditional_t<stan::is_var<T__>::value, stan::math::var_value<Eigen::VectorXd>, Eigen::VectorXd>; | |
template <typename T__> | |
using var_value_row_vector = std::conditional_t<stan::is_var<T__>::value, stan::math::var_value<Eigen::RowVectorXd>, Eigen::RowVectorXd>; | |
template <typename T__> | |
using var_value_matrix = std::conditional_t<stan::is_var<T__>::value, stan::math::var_value<Eigen::MatrixXd>, Eigen::MatrixXd>; | |
using std::istream; | |
using std::string; | |
using std::stringstream; | |
using std::vector; | |
using std::pow; | |
using stan::io::dump; | |
using stan::math::lgamma; | |
using stan::model::model_base_crtp; | |
using stan::model::rvalue; | |
using stan::model::cons_list; | |
using stan::model::index_uni; | |
using stan::model::index_max; | |
using stan::model::index_min; | |
using stan::model::index_min_max; | |
using stan::model::index_multi; | |
using stan::model::index_omni; | |
using stan::model::nil_index_list; | |
using namespace stan::math; | |
using stan::math::pow; | |
static int current_statement__ = 0; | |
static const std::vector<string> locations_array__ = {" (found before start of program)", | |
" (in 'examples/glmr/glmr.stan', line 42, column 2 to column 22)", | |
" (in 'examples/glmr/glmr.stan', line 43, column 2 to column 17)", | |
" (in 'examples/glmr/glmr.stan', line 45, column 2 to column 23)", | |
" (in 'examples/glmr/glmr.stan', line 46, column 2 to column 24)", | |
" (in 'examples/glmr/glmr.stan', line 47, column 2 to column 28)", | |
" (in 'examples/glmr/glmr.stan', line 48, column 2 to column 28)", | |
" (in 'examples/glmr/glmr.stan', line 49, column 2 to column 23)", | |
" (in 'examples/glmr/glmr.stan', line 50, column 2 to column 28)", | |
" (in 'examples/glmr/glmr.stan', line 51, column 2 to column 25)", | |
" (in 'examples/glmr/glmr.stan', line 53, column 2 to column 29)", | |
" (in 'examples/glmr/glmr.stan', line 54, column 2 to column 31)", | |
" (in 'examples/glmr/glmr.stan', line 55, column 2 to column 39)", | |
" (in 'examples/glmr/glmr.stan', line 56, column 2 to column 39)", | |
" (in 'examples/glmr/glmr.stan', line 57, column 2 to column 29)", | |
" (in 'examples/glmr/glmr.stan', line 58, column 2 to column 39)", | |
" (in 'examples/glmr/glmr.stan', line 59, column 2 to column 33)", | |
" (in 'examples/glmr/glmr.stan', line 63, column 2 to column 53)", | |
" (in 'examples/glmr/glmr.stan', line 64, column 2 to column 57)", | |
" (in 'examples/glmr/glmr.stan', line 65, column 2 to column 73)", | |
" (in 'examples/glmr/glmr.stan', line 66, column 2 to column 73)", | |
" (in 'examples/glmr/glmr.stan', line 67, column 2 to column 53)", | |
" (in 'examples/glmr/glmr.stan', line 68, column 2 to column 73)", | |
" (in 'examples/glmr/glmr.stan', line 69, column 2 to column 61)", | |
" (in 'examples/glmr/glmr.stan', line 105, column 2 to column 64)", | |
" (in 'examples/glmr/glmr.stan', line 73, column 2 to line 79, column 39)", | |
" (in 'examples/glmr/glmr.stan', line 82, column 2 to column 49)", | |
" (in 'examples/glmr/glmr.stan', line 84, column 2 to column 49)", | |
" (in 'examples/glmr/glmr.stan', line 85, column 2 to column 30)", | |
" (in 'examples/glmr/glmr.stan', line 86, column 2 to column 31)", | |
" (in 'examples/glmr/glmr.stan', line 87, column 2 to column 35)", | |
" (in 'examples/glmr/glmr.stan', line 88, column 2 to column 35)", | |
" (in 'examples/glmr/glmr.stan', line 89, column 2 to column 30)", | |
" (in 'examples/glmr/glmr.stan', line 90, column 2 to column 35)", | |
" (in 'examples/glmr/glmr.stan', line 91, column 2 to column 32)", | |
" (in 'examples/glmr/glmr.stan', line 94, column 2 to column 39)", | |
" (in 'examples/glmr/glmr.stan', line 95, column 2 to column 40)", | |
" (in 'examples/glmr/glmr.stan', line 96, column 2 to column 44)", | |
" (in 'examples/glmr/glmr.stan', line 97, column 2 to column 44)", | |
" (in 'examples/glmr/glmr.stan', line 98, column 2 to column 39)", | |
" (in 'examples/glmr/glmr.stan', line 99, column 2 to column 44)", | |
" (in 'examples/glmr/glmr.stan', line 100, column 2 to column 41)", | |
" (in 'examples/glmr/glmr.stan', line 2, column 2 to column 17)", | |
" (in 'examples/glmr/glmr.stan', line 3, column 8 to column 9)", | |
" (in 'examples/glmr/glmr.stan', line 3, column 2 to column 11)", | |
" (in 'examples/glmr/glmr.stan', line 5, column 2 to column 19)", | |
" (in 'examples/glmr/glmr.stan', line 6, column 9 to column 10)", | |
" (in 'examples/glmr/glmr.stan', line 6, column 12 to column 13)", | |
" (in 'examples/glmr/glmr.stan', line 6, column 2 to column 17)", | |
" (in 'examples/glmr/glmr.stan', line 8, column 2 to column 23)", | |
" (in 'examples/glmr/glmr.stan', line 9, column 2 to column 24)", | |
" (in 'examples/glmr/glmr.stan', line 10, column 2 to column 28)", | |
" (in 'examples/glmr/glmr.stan', line 11, column 2 to column 28)", | |
" (in 'examples/glmr/glmr.stan', line 12, column 2 to column 23)", | |
" (in 'examples/glmr/glmr.stan', line 13, column 2 to column 28)", | |
" (in 'examples/glmr/glmr.stan', line 14, column 2 to column 25)", | |
" (in 'examples/glmr/glmr.stan', line 16, column 21 to column 22)", | |
" (in 'examples/glmr/glmr.stan', line 16, column 2 to column 24)", | |
" (in 'examples/glmr/glmr.stan', line 17, column 22 to column 23)", | |
" (in 'examples/glmr/glmr.stan', line 17, column 2 to column 25)", | |
" (in 'examples/glmr/glmr.stan', line 18, column 26 to column 27)", | |
" (in 'examples/glmr/glmr.stan', line 18, column 2 to column 29)", | |
" (in 'examples/glmr/glmr.stan', line 19, column 26 to column 27)", | |
" (in 'examples/glmr/glmr.stan', line 19, column 2 to column 29)", | |
" (in 'examples/glmr/glmr.stan', line 20, column 21 to column 22)", | |
" (in 'examples/glmr/glmr.stan', line 20, column 2 to column 24)", | |
" (in 'examples/glmr/glmr.stan', line 21, column 26 to column 27)", | |
" (in 'examples/glmr/glmr.stan', line 21, column 2 to column 29)", | |
" (in 'examples/glmr/glmr.stan', line 22, column 23 to column 24)", | |
" (in 'examples/glmr/glmr.stan', line 22, column 2 to column 26)", | |
" (in 'examples/glmr/glmr.stan', line 24, column 2 to column 33)", | |
" (in 'examples/glmr/glmr.stan', line 25, column 2 to column 40)", | |
" (in 'examples/glmr/glmr.stan', line 26, column 2 to column 32)", | |
" (in 'examples/glmr/glmr.stan', line 30, column 2 to column 17)", | |
" (in 'examples/glmr/glmr.stan', line 31, column 9 to column 10)", | |
" (in 'examples/glmr/glmr.stan', line 31, column 12 to column 14)", | |
" (in 'examples/glmr/glmr.stan', line 31, column 2 to column 19)", | |
" (in 'examples/glmr/glmr.stan', line 32, column 9 to column 11)", | |
" (in 'examples/glmr/glmr.stan', line 32, column 2 to column 21)", | |
" (in 'examples/glmr/glmr.stan', line 33, column 9 to column 11)", | |
" (in 'examples/glmr/glmr.stan', line 33, column 2 to column 19)", | |
" (in 'examples/glmr/glmr.stan', line 35, column 4 to column 34)", | |
" (in 'examples/glmr/glmr.stan', line 36, column 4 to column 30)", | |
" (in 'examples/glmr/glmr.stan', line 37, column 4 to column 42)", | |
" (in 'examples/glmr/glmr.stan', line 34, column 17 to line 38, column 3)", | |
" (in 'examples/glmr/glmr.stan', line 34, column 2 to line 38, column 3)", | |
" (in 'examples/glmr/glmr.stan', line 42, column 9 to column 11)", | |
" (in 'examples/glmr/glmr.stan', line 53, column 9 to column 14)", | |
" (in 'examples/glmr/glmr.stan', line 54, column 9 to column 15)", | |
" (in 'examples/glmr/glmr.stan', line 55, column 9 to column 19)", | |
" (in 'examples/glmr/glmr.stan', line 56, column 9 to column 19)", | |
" (in 'examples/glmr/glmr.stan', line 57, column 9 to column 14)", | |
" (in 'examples/glmr/glmr.stan', line 58, column 9 to column 19)", | |
" (in 'examples/glmr/glmr.stan', line 59, column 9 to column 16)", | |
" (in 'examples/glmr/glmr.stan', line 63, column 9 to column 14)", | |
" (in 'examples/glmr/glmr.stan', line 64, column 9 to column 15)", | |
" (in 'examples/glmr/glmr.stan', line 65, column 9 to column 19)", | |
" (in 'examples/glmr/glmr.stan', line 66, column 9 to column 19)", | |
" (in 'examples/glmr/glmr.stan', line 67, column 9 to column 14)", | |
" (in 'examples/glmr/glmr.stan', line 68, column 9 to column 19)", | |
" (in 'examples/glmr/glmr.stan', line 69, column 9 to column 16)"}; | |
class glmr_model final : public model_base_crtp<glmr_model> { | |
private: | |
int N; | |
std::vector<int> y; | |
int K; | |
Eigen::Matrix<double, -1, -1> X; | |
int N_age; | |
int N_educ; | |
int N_educ_age; | |
int N_educ_eth; | |
int N_eth; | |
int N_male_eth; | |
int N_state; | |
std::vector<int> J_age; | |
std::vector<int> J_educ; | |
std::vector<int> J_educ_age; | |
std::vector<int> J_educ_eth; | |
std::vector<int> J_eth; | |
std::vector<int> J_male_eth; | |
std::vector<int> J_state; | |
double prior_scale_sd; | |
double prior_scale_Intercept; | |
double prior_scale_b; | |
int Kc; | |
Eigen::Matrix<double, -1, -1> Xc; | |
Eigen::Matrix<double, -1, 1> means_X; | |
Eigen::Matrix<double, -1, 1> sds_X; | |
public: | |
~glmr_model() final { } | |
std::string model_name() const final { return "glmr_model"; } | |
std::vector<std::string> model_compile_info() const { | |
std::vector<std::string> stanc_info; | |
stanc_info.push_back("stanc_version = stanc3 51d1957"); | |
stanc_info.push_back("stancflags = "); | |
return stanc_info; | |
} | |
glmr_model(stan::io::var_context& context__, | |
unsigned int random_seed__ = 0, | |
std::ostream* pstream__ = nullptr) : model_base_crtp(0) { | |
using local_scalar_t__ = double ; | |
boost::ecuyer1988 base_rng__ = | |
stan::services::util::create_rng(random_seed__, 0); | |
(void) base_rng__; // suppress unused var warning | |
static const char* function__ = "glmr_model_namespace::glmr_model"; | |
(void) function__; // suppress unused var warning | |
local_scalar_t__ DUMMY_VAR__(std::numeric_limits<double>::quiet_NaN()); | |
(void) DUMMY_VAR__; // suppress unused var warning | |
try { | |
int pos__; | |
pos__ = std::numeric_limits<int>::min(); | |
pos__ = 1; | |
current_statement__ = 42; | |
context__.validate_dims("data initialization","N","int", | |
context__.to_vec()); | |
N = std::numeric_limits<int>::min(); | |
current_statement__ = 42; | |
N = context__.vals_i("N")[(1 - 1)]; | |
current_statement__ = 42; | |
current_statement__ = 42; | |
check_greater_or_equal(function__, "N", N, 1); | |
current_statement__ = 43; | |
validate_non_negative_index("y", "N", N); | |
current_statement__ = 44; | |
context__.validate_dims("data initialization","y","int", | |
context__.to_vec(N)); | |
y = std::vector<int>(N, std::numeric_limits<int>::min()); | |
current_statement__ = 44; | |
assign(y, nil_index_list(), context__.vals_i("y"), | |
"assigning variable y"); | |
current_statement__ = 45; | |
context__.validate_dims("data initialization","K","int", | |
context__.to_vec()); | |
K = std::numeric_limits<int>::min(); | |
current_statement__ = 45; | |
K = context__.vals_i("K")[(1 - 1)]; | |
current_statement__ = 45; | |
current_statement__ = 45; | |
check_greater_or_equal(function__, "K", K, 1); | |
current_statement__ = 46; | |
validate_non_negative_index("X", "N", N); | |
current_statement__ = 47; | |
validate_non_negative_index("X", "K", K); | |
current_statement__ = 48; | |
context__.validate_dims("data initialization","X","double", | |
context__.to_vec(N, K)); | |
X = Eigen::Matrix<double, -1, -1>(N, K); | |
stan::math::fill(X, std::numeric_limits<double>::quiet_NaN()); | |
{ | |
std::vector<local_scalar_t__> X_flat__; | |
current_statement__ = 48; | |
assign(X_flat__, nil_index_list(), context__.vals_r("X"), | |
"assigning variable X_flat__"); | |
current_statement__ = 48; | |
pos__ = 1; | |
current_statement__ = 48; | |
for (int sym1__ = 1; sym1__ <= K; ++sym1__) { | |
current_statement__ = 48; | |
for (int sym2__ = 1; sym2__ <= N; ++sym2__) { | |
current_statement__ = 48; | |
assign(X, | |
cons_list(index_uni(sym2__), | |
cons_list(index_uni(sym1__), nil_index_list())), | |
X_flat__[(pos__ - 1)], "assigning variable X"); | |
current_statement__ = 48; | |
pos__ = (pos__ + 1);}} | |
} | |
current_statement__ = 49; | |
context__.validate_dims("data initialization","N_age","int", | |
context__.to_vec()); | |
N_age = std::numeric_limits<int>::min(); | |
current_statement__ = 49; | |
N_age = context__.vals_i("N_age")[(1 - 1)]; | |
current_statement__ = 49; | |
current_statement__ = 49; | |
check_greater_or_equal(function__, "N_age", N_age, 1); | |
current_statement__ = 50; | |
context__.validate_dims("data initialization","N_educ","int", | |
context__.to_vec()); | |
N_educ = std::numeric_limits<int>::min(); | |
current_statement__ = 50; | |
N_educ = context__.vals_i("N_educ")[(1 - 1)]; | |
current_statement__ = 50; | |
current_statement__ = 50; | |
check_greater_or_equal(function__, "N_educ", N_educ, 1); | |
current_statement__ = 51; | |
context__.validate_dims("data initialization","N_educ_age","int", | |
context__.to_vec()); | |
N_educ_age = std::numeric_limits<int>::min(); | |
current_statement__ = 51; | |
N_educ_age = context__.vals_i("N_educ_age")[(1 - 1)]; | |
current_statement__ = 51; | |
current_statement__ = 51; | |
check_greater_or_equal(function__, "N_educ_age", N_educ_age, 1); | |
current_statement__ = 52; | |
context__.validate_dims("data initialization","N_educ_eth","int", | |
context__.to_vec()); | |
N_educ_eth = std::numeric_limits<int>::min(); | |
current_statement__ = 52; | |
N_educ_eth = context__.vals_i("N_educ_eth")[(1 - 1)]; | |
current_statement__ = 52; | |
current_statement__ = 52; | |
check_greater_or_equal(function__, "N_educ_eth", N_educ_eth, 1); | |
current_statement__ = 53; | |
context__.validate_dims("data initialization","N_eth","int", | |
context__.to_vec()); | |
N_eth = std::numeric_limits<int>::min(); | |
current_statement__ = 53; | |
N_eth = context__.vals_i("N_eth")[(1 - 1)]; | |
current_statement__ = 53; | |
current_statement__ = 53; | |
check_greater_or_equal(function__, "N_eth", N_eth, 1); | |
current_statement__ = 54; | |
context__.validate_dims("data initialization","N_male_eth","int", | |
context__.to_vec()); | |
N_male_eth = std::numeric_limits<int>::min(); | |
current_statement__ = 54; | |
N_male_eth = context__.vals_i("N_male_eth")[(1 - 1)]; | |
current_statement__ = 54; | |
current_statement__ = 54; | |
check_greater_or_equal(function__, "N_male_eth", N_male_eth, 1); | |
current_statement__ = 55; | |
context__.validate_dims("data initialization","N_state","int", | |
context__.to_vec()); | |
N_state = std::numeric_limits<int>::min(); | |
current_statement__ = 55; | |
N_state = context__.vals_i("N_state")[(1 - 1)]; | |
current_statement__ = 55; | |
current_statement__ = 55; | |
check_greater_or_equal(function__, "N_state", N_state, 1); | |
current_statement__ = 56; | |
validate_non_negative_index("J_age", "N", N); | |
current_statement__ = 57; | |
context__.validate_dims("data initialization","J_age","int", | |
context__.to_vec(N)); | |
J_age = std::vector<int>(N, std::numeric_limits<int>::min()); | |
current_statement__ = 57; | |
assign(J_age, nil_index_list(), context__.vals_i("J_age"), | |
"assigning variable J_age"); | |
current_statement__ = 57; | |
for (int sym1__ = 1; sym1__ <= N; ++sym1__) { | |
current_statement__ = 57; | |
current_statement__ = 57; | |
check_greater_or_equal(function__, "J_age[sym1__]", | |
J_age[(sym1__ - 1)], 1);} | |
current_statement__ = 58; | |
validate_non_negative_index("J_educ", "N", N); | |
current_statement__ = 59; | |
context__.validate_dims("data initialization","J_educ","int", | |
context__.to_vec(N)); | |
J_educ = std::vector<int>(N, std::numeric_limits<int>::min()); | |
current_statement__ = 59; | |
assign(J_educ, nil_index_list(), context__.vals_i("J_educ"), | |
"assigning variable J_educ"); | |
current_statement__ = 59; | |
for (int sym1__ = 1; sym1__ <= N; ++sym1__) { | |
current_statement__ = 59; | |
current_statement__ = 59; | |
check_greater_or_equal(function__, "J_educ[sym1__]", | |
J_educ[(sym1__ - 1)], 1);} | |
current_statement__ = 60; | |
validate_non_negative_index("J_educ_age", "N", N); | |
current_statement__ = 61; | |
context__.validate_dims("data initialization","J_educ_age","int", | |
context__.to_vec(N)); | |
J_educ_age = std::vector<int>(N, std::numeric_limits<int>::min()); | |
current_statement__ = 61; | |
assign(J_educ_age, nil_index_list(), context__.vals_i("J_educ_age"), | |
"assigning variable J_educ_age"); | |
current_statement__ = 61; | |
for (int sym1__ = 1; sym1__ <= N; ++sym1__) { | |
current_statement__ = 61; | |
current_statement__ = 61; | |
check_greater_or_equal(function__, "J_educ_age[sym1__]", | |
J_educ_age[(sym1__ - 1)], 1);} | |
current_statement__ = 62; | |
validate_non_negative_index("J_educ_eth", "N", N); | |
current_statement__ = 63; | |
context__.validate_dims("data initialization","J_educ_eth","int", | |
context__.to_vec(N)); | |
J_educ_eth = std::vector<int>(N, std::numeric_limits<int>::min()); | |
current_statement__ = 63; | |
assign(J_educ_eth, nil_index_list(), context__.vals_i("J_educ_eth"), | |
"assigning variable J_educ_eth"); | |
current_statement__ = 63; | |
for (int sym1__ = 1; sym1__ <= N; ++sym1__) { | |
current_statement__ = 63; | |
current_statement__ = 63; | |
check_greater_or_equal(function__, "J_educ_eth[sym1__]", | |
J_educ_eth[(sym1__ - 1)], 1);} | |
current_statement__ = 64; | |
validate_non_negative_index("J_eth", "N", N); | |
current_statement__ = 65; | |
context__.validate_dims("data initialization","J_eth","int", | |
context__.to_vec(N)); | |
J_eth = std::vector<int>(N, std::numeric_limits<int>::min()); | |
current_statement__ = 65; | |
assign(J_eth, nil_index_list(), context__.vals_i("J_eth"), | |
"assigning variable J_eth"); | |
current_statement__ = 65; | |
for (int sym1__ = 1; sym1__ <= N; ++sym1__) { | |
current_statement__ = 65; | |
current_statement__ = 65; | |
check_greater_or_equal(function__, "J_eth[sym1__]", | |
J_eth[(sym1__ - 1)], 1);} | |
current_statement__ = 66; | |
validate_non_negative_index("J_male_eth", "N", N); | |
current_statement__ = 67; | |
context__.validate_dims("data initialization","J_male_eth","int", | |
context__.to_vec(N)); | |
J_male_eth = std::vector<int>(N, std::numeric_limits<int>::min()); | |
current_statement__ = 67; | |
assign(J_male_eth, nil_index_list(), context__.vals_i("J_male_eth"), | |
"assigning variable J_male_eth"); | |
current_statement__ = 67; | |
for (int sym1__ = 1; sym1__ <= N; ++sym1__) { | |
current_statement__ = 67; | |
current_statement__ = 67; | |
check_greater_or_equal(function__, "J_male_eth[sym1__]", | |
J_male_eth[(sym1__ - 1)], 1);} | |
current_statement__ = 68; | |
validate_non_negative_index("J_state", "N", N); | |
current_statement__ = 69; | |
context__.validate_dims("data initialization","J_state","int", | |
context__.to_vec(N)); | |
J_state = std::vector<int>(N, std::numeric_limits<int>::min()); | |
current_statement__ = 69; | |
assign(J_state, nil_index_list(), context__.vals_i("J_state"), | |
"assigning variable J_state"); | |
current_statement__ = 69; | |
for (int sym1__ = 1; sym1__ <= N; ++sym1__) { | |
current_statement__ = 69; | |
current_statement__ = 69; | |
check_greater_or_equal(function__, "J_state[sym1__]", | |
J_state[(sym1__ - 1)], 1);} | |
current_statement__ = 70; | |
context__.validate_dims("data initialization","prior_scale_sd", | |
"double",context__.to_vec()); | |
prior_scale_sd = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 70; | |
prior_scale_sd = context__.vals_r("prior_scale_sd")[(1 - 1)]; | |
current_statement__ = 70; | |
current_statement__ = 70; | |
check_greater_or_equal(function__, "prior_scale_sd", prior_scale_sd, | |
0.0); | |
current_statement__ = 71; | |
context__.validate_dims("data initialization","prior_scale_Intercept", | |
"double",context__.to_vec()); | |
prior_scale_Intercept = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 71; | |
prior_scale_Intercept = context__.vals_r("prior_scale_Intercept")[ | |
(1 - 1)]; | |
current_statement__ = 71; | |
current_statement__ = 71; | |
check_greater_or_equal(function__, "prior_scale_Intercept", | |
prior_scale_Intercept, 0.0); | |
current_statement__ = 72; | |
context__.validate_dims("data initialization","prior_scale_b","double", | |
context__.to_vec()); | |
prior_scale_b = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 72; | |
prior_scale_b = context__.vals_r("prior_scale_b")[(1 - 1)]; | |
current_statement__ = 72; | |
current_statement__ = 72; | |
check_greater_or_equal(function__, "prior_scale_b", prior_scale_b, 0.0); | |
current_statement__ = 73; | |
Kc = std::numeric_limits<int>::min(); | |
current_statement__ = 73; | |
Kc = (K - 1); | |
current_statement__ = 74; | |
validate_non_negative_index("Xc", "N", N); | |
current_statement__ = 75; | |
validate_non_negative_index("Xc", "Kc", Kc); | |
current_statement__ = 76; | |
Xc = Eigen::Matrix<double, -1, -1>(N, Kc); | |
stan::math::fill(Xc, std::numeric_limits<double>::quiet_NaN()); | |
current_statement__ = 77; | |
validate_non_negative_index("means_X", "Kc", Kc); | |
current_statement__ = 78; | |
means_X = Eigen::Matrix<double, -1, 1>(Kc); | |
stan::math::fill(means_X, std::numeric_limits<double>::quiet_NaN()); | |
current_statement__ = 79; | |
validate_non_negative_index("sds_X", "Kc", Kc); | |
current_statement__ = 80; | |
sds_X = Eigen::Matrix<double, -1, 1>(Kc); | |
stan::math::fill(sds_X, std::numeric_limits<double>::quiet_NaN()); | |
current_statement__ = 85; | |
for (int i = 2; i <= K; ++i) { | |
current_statement__ = 81; | |
assign(means_X, cons_list(index_uni((i - 1)), nil_index_list()), | |
mean( | |
rvalue(X, | |
cons_list(index_omni(), | |
cons_list(index_uni(i), nil_index_list())), "X")), | |
"assigning variable means_X"); | |
current_statement__ = 82; | |
assign(sds_X, cons_list(index_uni((i - 1)), nil_index_list()), | |
sd( | |
rvalue(X, | |
cons_list(index_omni(), | |
cons_list(index_uni(i), nil_index_list())), "X")), | |
"assigning variable sds_X"); | |
current_statement__ = 83; | |
assign(Xc, | |
cons_list(index_omni(), | |
cons_list(index_uni((i - 1)), nil_index_list())), | |
subtract( | |
rvalue(X, | |
cons_list(index_omni(), | |
cons_list(index_uni(i), nil_index_list())), "X"), | |
means_X[((i - 1) - 1)]), "assigning variable Xc");} | |
current_statement__ = 86; | |
validate_non_negative_index("b_varmat", "Kc", Kc); | |
current_statement__ = 87; | |
validate_non_negative_index("z_age_varmat", "N_age", N_age); | |
current_statement__ = 88; | |
validate_non_negative_index("z_educ_varmat", "N_educ", N_educ); | |
current_statement__ = 89; | |
validate_non_negative_index("z_educ_age_varmat", "N_educ_age", | |
N_educ_age); | |
current_statement__ = 90; | |
validate_non_negative_index("z_educ_eth_varmat", "N_educ_eth", | |
N_educ_eth); | |
current_statement__ = 91; | |
validate_non_negative_index("z_eth_varmat", "N_eth", N_eth); | |
current_statement__ = 92; | |
validate_non_negative_index("z_male_eth_varmat", "N_male_eth", | |
N_male_eth); | |
current_statement__ = 93; | |
validate_non_negative_index("z_state_varmat", "N_state", N_state); | |
current_statement__ = 94; | |
validate_non_negative_index("r_age_varmat", "N_age", N_age); | |
current_statement__ = 95; | |
validate_non_negative_index("r_educ_varmat", "N_educ", N_educ); | |
current_statement__ = 96; | |
validate_non_negative_index("r_educ_age_varmat", "N_educ_age", | |
N_educ_age); | |
current_statement__ = 97; | |
validate_non_negative_index("r_educ_eth_varmat", "N_educ_eth", | |
N_educ_eth); | |
current_statement__ = 98; | |
validate_non_negative_index("r_eth_varmat", "N_eth", N_eth); | |
current_statement__ = 99; | |
validate_non_negative_index("r_male_eth_varmat", "N_male_eth", | |
N_male_eth); | |
current_statement__ = 100; | |
validate_non_negative_index("r_state_varmat", "N_state", N_state); | |
} catch (const std::exception& e) { | |
stan::lang::rethrow_located(e, locations_array__[current_statement__]); | |
// Next line prevents compiler griping about no return | |
throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); | |
} | |
num_params_r__ = 0U; | |
try { | |
num_params_r__ += Kc; | |
num_params_r__ += 1; | |
num_params_r__ += 1; | |
num_params_r__ += 1; | |
num_params_r__ += 1; | |
num_params_r__ += 1; | |
num_params_r__ += 1; | |
num_params_r__ += 1; | |
num_params_r__ += 1; | |
num_params_r__ += N_age; | |
num_params_r__ += N_educ; | |
num_params_r__ += N_educ_age; | |
num_params_r__ += N_educ_eth; | |
num_params_r__ += N_eth; | |
num_params_r__ += N_male_eth; | |
num_params_r__ += N_state; | |
} catch (const std::exception& e) { | |
stan::lang::rethrow_located(e, locations_array__[current_statement__]); | |
// Next line prevents compiler griping about no return | |
throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); | |
} | |
} | |
template <bool propto__, bool jacobian__, typename T__> | |
inline T__ log_prob(std::vector<T__>& params_r__, | |
std::vector<int>& params_i__, | |
std::ostream* pstream__ = nullptr) const { | |
using var_value_matrix = std::conditional_t<stan::is_var<T__>::value, stan::math::var_value<Eigen::MatrixXd>, Eigen::MatrixXd>; | |
using local_scalar_t__ = T__; | |
T__ lp__(0.0); | |
stan::math::accumulator<T__> lp_accum__; | |
static const char* function__ = "glmr_model_namespace::log_prob"; | |
(void) function__; // suppress unused var warning | |
stan::io::reader<local_scalar_t__> in__(params_r__, params_i__); | |
local_scalar_t__ DUMMY_VAR__(std::numeric_limits<double>::quiet_NaN()); | |
(void) DUMMY_VAR__; // suppress unused var warning | |
try { | |
var_value_vector<local_scalar_t__> b_varmat; | |
b_varmat = Eigen::Matrix<double, -1, 1>(Kc); | |
stan::math::initialize_fill(b_varmat, DUMMY_VAR__); | |
current_statement__ = 1; | |
b_varmat = in__.var_vector(Kc); | |
local_scalar_t__ Intercept; | |
Intercept = DUMMY_VAR__; | |
current_statement__ = 2; | |
Intercept = in__.scalar(); | |
local_scalar_t__ sd_age; | |
sd_age = DUMMY_VAR__; | |
current_statement__ = 3; | |
sd_age = in__.scalar(); | |
current_statement__ = 3; | |
if (jacobian__) { | |
current_statement__ = 3; | |
sd_age = stan::math::lb_constrain(sd_age, 0, lp__); | |
} else { | |
current_statement__ = 3; | |
sd_age = stan::math::lb_constrain(sd_age, 0); | |
} | |
local_scalar_t__ sd_educ; | |
sd_educ = DUMMY_VAR__; | |
current_statement__ = 4; | |
sd_educ = in__.scalar(); | |
current_statement__ = 4; | |
if (jacobian__) { | |
current_statement__ = 4; | |
sd_educ = stan::math::lb_constrain(sd_educ, 0, lp__); | |
} else { | |
current_statement__ = 4; | |
sd_educ = stan::math::lb_constrain(sd_educ, 0); | |
} | |
local_scalar_t__ sd_educ_age; | |
sd_educ_age = DUMMY_VAR__; | |
current_statement__ = 5; | |
sd_educ_age = in__.scalar(); | |
current_statement__ = 5; | |
if (jacobian__) { | |
current_statement__ = 5; | |
sd_educ_age = stan::math::lb_constrain(sd_educ_age, 0, lp__); | |
} else { | |
current_statement__ = 5; | |
sd_educ_age = stan::math::lb_constrain(sd_educ_age, 0); | |
} | |
local_scalar_t__ sd_educ_eth; | |
sd_educ_eth = DUMMY_VAR__; | |
current_statement__ = 6; | |
sd_educ_eth = in__.scalar(); | |
current_statement__ = 6; | |
if (jacobian__) { | |
current_statement__ = 6; | |
sd_educ_eth = stan::math::lb_constrain(sd_educ_eth, 0, lp__); | |
} else { | |
current_statement__ = 6; | |
sd_educ_eth = stan::math::lb_constrain(sd_educ_eth, 0); | |
} | |
local_scalar_t__ sd_eth; | |
sd_eth = DUMMY_VAR__; | |
current_statement__ = 7; | |
sd_eth = in__.scalar(); | |
current_statement__ = 7; | |
if (jacobian__) { | |
current_statement__ = 7; | |
sd_eth = stan::math::lb_constrain(sd_eth, 0, lp__); | |
} else { | |
current_statement__ = 7; | |
sd_eth = stan::math::lb_constrain(sd_eth, 0); | |
} | |
local_scalar_t__ sd_male_eth; | |
sd_male_eth = DUMMY_VAR__; | |
current_statement__ = 8; | |
sd_male_eth = in__.scalar(); | |
current_statement__ = 8; | |
if (jacobian__) { | |
current_statement__ = 8; | |
sd_male_eth = stan::math::lb_constrain(sd_male_eth, 0, lp__); | |
} else { | |
current_statement__ = 8; | |
sd_male_eth = stan::math::lb_constrain(sd_male_eth, 0); | |
} | |
local_scalar_t__ sd_state; | |
sd_state = DUMMY_VAR__; | |
current_statement__ = 9; | |
sd_state = in__.scalar(); | |
current_statement__ = 9; | |
if (jacobian__) { | |
current_statement__ = 9; | |
sd_state = stan::math::lb_constrain(sd_state, 0, lp__); | |
} else { | |
current_statement__ = 9; | |
sd_state = stan::math::lb_constrain(sd_state, 0); | |
} | |
var_value_vector<local_scalar_t__> z_age_varmat; | |
z_age_varmat = Eigen::Matrix<double, -1, 1>(N_age); | |
stan::math::initialize_fill(z_age_varmat, DUMMY_VAR__); | |
current_statement__ = 10; | |
z_age_varmat = in__.var_vector(N_age); | |
var_value_vector<local_scalar_t__> z_educ_varmat; | |
z_educ_varmat = Eigen::Matrix<double, -1, 1>(N_educ); | |
stan::math::initialize_fill(z_educ_varmat, DUMMY_VAR__); | |
current_statement__ = 11; | |
z_educ_varmat = in__.var_vector(N_educ); | |
var_value_vector<local_scalar_t__> z_educ_age_varmat; | |
z_educ_age_varmat = Eigen::Matrix<double, -1, 1>(N_educ_age); | |
stan::math::initialize_fill(z_educ_age_varmat, DUMMY_VAR__); | |
current_statement__ = 12; | |
z_educ_age_varmat = in__.var_vector(N_educ_age); | |
var_value_vector<local_scalar_t__> z_educ_eth_varmat; | |
z_educ_eth_varmat = Eigen::Matrix<double, -1, 1>(N_educ_eth); | |
stan::math::initialize_fill(z_educ_eth_varmat, DUMMY_VAR__); | |
current_statement__ = 13; | |
z_educ_eth_varmat = in__.var_vector(N_educ_eth); | |
var_value_vector<local_scalar_t__> z_eth_varmat; | |
z_eth_varmat = Eigen::Matrix<double, -1, 1>(N_eth); | |
stan::math::initialize_fill(z_eth_varmat, DUMMY_VAR__); | |
current_statement__ = 14; | |
z_eth_varmat = in__.var_vector(N_eth); | |
var_value_vector<local_scalar_t__> z_male_eth_varmat; | |
z_male_eth_varmat = Eigen::Matrix<double, -1, 1>(N_male_eth); | |
stan::math::initialize_fill(z_male_eth_varmat, DUMMY_VAR__); | |
current_statement__ = 15; | |
z_male_eth_varmat = in__.var_vector(N_male_eth); | |
var_value_vector<local_scalar_t__> z_state_varmat; | |
z_state_varmat = Eigen::Matrix<double, -1, 1>(N_state); | |
stan::math::initialize_fill(z_state_varmat, DUMMY_VAR__); | |
current_statement__ = 16; | |
z_state_varmat = in__.var_vector(N_state); | |
var_value_vector<local_scalar_t__> r_age_varmat; | |
r_age_varmat = Eigen::Matrix<double, -1, 1>(N_age); | |
stan::math::initialize_fill(r_age_varmat, DUMMY_VAR__); | |
current_statement__ = 17; | |
assign(r_age_varmat, nil_index_list(), multiply(sd_age, z_age_varmat), | |
"assigning variable r_age_varmat"); | |
var_value_vector<local_scalar_t__> r_educ_varmat; | |
r_educ_varmat = Eigen::Matrix<double, -1, 1>(N_educ); | |
stan::math::initialize_fill(r_educ_varmat, DUMMY_VAR__); | |
current_statement__ = 18; | |
assign(r_educ_varmat, nil_index_list(), | |
multiply(sd_educ, z_educ_varmat), "assigning variable r_educ_varmat"); | |
var_value_vector<local_scalar_t__> r_educ_age_varmat; | |
r_educ_age_varmat = Eigen::Matrix<double, -1, 1>(N_educ_age); | |
stan::math::initialize_fill(r_educ_age_varmat, DUMMY_VAR__); | |
current_statement__ = 19; | |
assign(r_educ_age_varmat, nil_index_list(), | |
multiply(sd_educ_age, z_educ_age_varmat), | |
"assigning variable r_educ_age_varmat"); | |
var_value_vector<local_scalar_t__> r_educ_eth_varmat; | |
r_educ_eth_varmat = Eigen::Matrix<double, -1, 1>(N_educ_eth); | |
stan::math::initialize_fill(r_educ_eth_varmat, DUMMY_VAR__); | |
current_statement__ = 20; | |
assign(r_educ_eth_varmat, nil_index_list(), | |
multiply(sd_educ_eth, z_educ_eth_varmat), | |
"assigning variable r_educ_eth_varmat"); | |
var_value_vector<local_scalar_t__> r_eth_varmat; | |
r_eth_varmat = Eigen::Matrix<double, -1, 1>(N_eth); | |
stan::math::initialize_fill(r_eth_varmat, DUMMY_VAR__); | |
current_statement__ = 21; | |
assign(r_eth_varmat, nil_index_list(), multiply(sd_eth, z_eth_varmat), | |
"assigning variable r_eth_varmat"); | |
var_value_vector<local_scalar_t__> r_male_eth_varmat; | |
r_male_eth_varmat = Eigen::Matrix<double, -1, 1>(N_male_eth); | |
stan::math::initialize_fill(r_male_eth_varmat, DUMMY_VAR__); | |
current_statement__ = 22; | |
assign(r_male_eth_varmat, nil_index_list(), | |
multiply(sd_male_eth, z_male_eth_varmat), | |
"assigning variable r_male_eth_varmat"); | |
var_value_vector<local_scalar_t__> r_state_varmat; | |
r_state_varmat = Eigen::Matrix<double, -1, 1>(N_state); | |
stan::math::initialize_fill(r_state_varmat, DUMMY_VAR__); | |
current_statement__ = 23; | |
assign(r_state_varmat, nil_index_list(), | |
multiply(sd_state, z_state_varmat), | |
"assigning variable r_state_varmat"); | |
{ | |
current_statement__ = 25; | |
lp_accum__.add( | |
bernoulli_logit_glm_lpmf<propto__>(y, Xc, | |
add( | |
add( | |
add( | |
add( | |
add( | |
add( | |
add(Intercept, | |
rvalue(r_age_varmat, | |
cons_list(index_multi(J_age), nil_index_list()), | |
"r_age_varmat")), | |
rvalue(r_educ_varmat, | |
cons_list(index_multi(J_educ), nil_index_list()), | |
"r_educ_varmat")), | |
rvalue(r_educ_age_varmat, | |
cons_list(index_multi(J_educ_age), nil_index_list()), | |
"r_educ_age_varmat")), | |
rvalue(r_educ_eth_varmat, | |
cons_list(index_multi(J_educ_eth), nil_index_list()), | |
"r_educ_eth_varmat")), | |
rvalue(r_eth_varmat, | |
cons_list(index_multi(J_eth), nil_index_list()), | |
"r_eth_varmat")), | |
rvalue(r_male_eth_varmat, | |
cons_list(index_multi(J_male_eth), nil_index_list()), | |
"r_male_eth_varmat")), | |
rvalue(r_state_varmat, | |
cons_list(index_multi(J_state), nil_index_list()), | |
"r_state_varmat")), b_varmat)); | |
current_statement__ = 26; | |
lp_accum__.add( | |
normal_lpdf<propto__>(b_varmat, 0.0, | |
elt_divide(prior_scale_b, sds_X))); | |
current_statement__ = 27; | |
lp_accum__.add( | |
normal_lpdf<propto__>(Intercept, 0.0, prior_scale_Intercept)); | |
current_statement__ = 28; | |
lp_accum__.add(std_normal_lpdf<propto__>(z_age_varmat)); | |
current_statement__ = 29; | |
lp_accum__.add(std_normal_lpdf<propto__>(z_educ_varmat)); | |
current_statement__ = 30; | |
lp_accum__.add(std_normal_lpdf<propto__>(z_educ_age_varmat)); | |
current_statement__ = 31; | |
lp_accum__.add(std_normal_lpdf<propto__>(z_educ_eth_varmat)); | |
current_statement__ = 32; | |
lp_accum__.add(std_normal_lpdf<propto__>(z_eth_varmat)); | |
current_statement__ = 33; | |
lp_accum__.add(std_normal_lpdf<propto__>(z_male_eth_varmat)); | |
current_statement__ = 34; | |
lp_accum__.add(std_normal_lpdf<propto__>(z_state_varmat)); | |
current_statement__ = 35; | |
lp_accum__.add(exponential_lpdf<propto__>(sd_age, prior_scale_sd)); | |
current_statement__ = 36; | |
lp_accum__.add(exponential_lpdf<propto__>(sd_educ, prior_scale_sd)); | |
current_statement__ = 37; | |
lp_accum__.add( | |
exponential_lpdf<propto__>(sd_educ_age, prior_scale_sd)); | |
current_statement__ = 38; | |
lp_accum__.add( | |
exponential_lpdf<propto__>(sd_educ_eth, prior_scale_sd)); | |
current_statement__ = 39; | |
lp_accum__.add(exponential_lpdf<propto__>(sd_eth, prior_scale_sd)); | |
current_statement__ = 40; | |
lp_accum__.add( | |
exponential_lpdf<propto__>(sd_male_eth, prior_scale_sd)); | |
current_statement__ = 41; | |
lp_accum__.add(exponential_lpdf<propto__>(sd_state, prior_scale_sd)); | |
} | |
} catch (const std::exception& e) { | |
stan::lang::rethrow_located(e, locations_array__[current_statement__]); | |
// Next line prevents compiler griping about no return | |
throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); | |
} | |
lp_accum__.add(lp__); | |
return lp_accum__.sum(); | |
} // log_prob() | |
template <typename RNG> | |
inline void write_array(RNG& base_rng__, std::vector<double>& params_r__, | |
std::vector<int>& params_i__, | |
std::vector<double>& vars__, | |
bool emit_transformed_parameters__ = true, | |
bool emit_generated_quantities__ = true, | |
std::ostream* pstream__ = nullptr) const { | |
using local_scalar_t__ = double; | |
vars__.resize(0); | |
stan::io::reader<local_scalar_t__> in__(params_r__, params_i__); | |
static const char* function__ = "glmr_model_namespace::write_array"; | |
(void) function__; // suppress unused var warning | |
(void) function__; // suppress unused var warning | |
double lp__ = 0.0; | |
(void) lp__; // dummy to suppress unused var warning | |
stan::math::accumulator<double> lp_accum__; | |
local_scalar_t__ DUMMY_VAR__(std::numeric_limits<double>::quiet_NaN()); | |
(void) DUMMY_VAR__; // suppress unused var warning | |
try { | |
var_value_vector<double> b_varmat; | |
b_varmat = Eigen::Matrix<double, -1, 1>(Kc); | |
stan::math::initialize_fill(b_varmat, std::numeric_limits<double>::quiet_NaN()); | |
current_statement__ = 1; | |
b_varmat = in__.var_vector(Kc); | |
double Intercept; | |
Intercept = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 2; | |
Intercept = in__.scalar(); | |
double sd_age; | |
sd_age = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 3; | |
sd_age = in__.scalar(); | |
current_statement__ = 3; | |
sd_age = stan::math::lb_constrain(sd_age, 0); | |
double sd_educ; | |
sd_educ = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 4; | |
sd_educ = in__.scalar(); | |
current_statement__ = 4; | |
sd_educ = stan::math::lb_constrain(sd_educ, 0); | |
double sd_educ_age; | |
sd_educ_age = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 5; | |
sd_educ_age = in__.scalar(); | |
current_statement__ = 5; | |
sd_educ_age = stan::math::lb_constrain(sd_educ_age, 0); | |
double sd_educ_eth; | |
sd_educ_eth = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 6; | |
sd_educ_eth = in__.scalar(); | |
current_statement__ = 6; | |
sd_educ_eth = stan::math::lb_constrain(sd_educ_eth, 0); | |
double sd_eth; | |
sd_eth = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 7; | |
sd_eth = in__.scalar(); | |
current_statement__ = 7; | |
sd_eth = stan::math::lb_constrain(sd_eth, 0); | |
double sd_male_eth; | |
sd_male_eth = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 8; | |
sd_male_eth = in__.scalar(); | |
current_statement__ = 8; | |
sd_male_eth = stan::math::lb_constrain(sd_male_eth, 0); | |
double sd_state; | |
sd_state = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 9; | |
sd_state = in__.scalar(); | |
current_statement__ = 9; | |
sd_state = stan::math::lb_constrain(sd_state, 0); | |
var_value_vector<double> z_age_varmat; | |
z_age_varmat = Eigen::Matrix<double, -1, 1>(N_age); | |
stan::math::initialize_fill(z_age_varmat, std::numeric_limits<double>::quiet_NaN()); | |
current_statement__ = 10; | |
z_age_varmat = in__.var_vector(N_age); | |
var_value_vector<double> z_educ_varmat; | |
z_educ_varmat = Eigen::Matrix<double, -1, 1>(N_educ); | |
stan::math::initialize_fill(z_educ_varmat, std::numeric_limits<double>::quiet_NaN()); | |
current_statement__ = 11; | |
z_educ_varmat = in__.var_vector(N_educ); | |
var_value_vector<double> z_educ_age_varmat; | |
z_educ_age_varmat = Eigen::Matrix<double, -1, 1>(N_educ_age); | |
stan::math::initialize_fill(z_educ_age_varmat, std::numeric_limits<double>::quiet_NaN()); | |
current_statement__ = 12; | |
z_educ_age_varmat = in__.var_vector(N_educ_age); | |
var_value_vector<double> z_educ_eth_varmat; | |
z_educ_eth_varmat = Eigen::Matrix<double, -1, 1>(N_educ_eth); | |
stan::math::initialize_fill(z_educ_eth_varmat, std::numeric_limits<double>::quiet_NaN()); | |
current_statement__ = 13; | |
z_educ_eth_varmat = in__.var_vector(N_educ_eth); | |
var_value_vector<double> z_eth_varmat; | |
z_eth_varmat = Eigen::Matrix<double, -1, 1>(N_eth); | |
stan::math::initialize_fill(z_eth_varmat, std::numeric_limits<double>::quiet_NaN()); | |
current_statement__ = 14; | |
z_eth_varmat = in__.var_vector(N_eth); | |
var_value_vector<double> z_male_eth_varmat; | |
z_male_eth_varmat = Eigen::Matrix<double, -1, 1>(N_male_eth); | |
stan::math::initialize_fill(z_male_eth_varmat, std::numeric_limits<double>::quiet_NaN()); | |
current_statement__ = 15; | |
z_male_eth_varmat = in__.var_vector(N_male_eth); | |
var_value_vector<double> z_state_varmat; | |
z_state_varmat = Eigen::Matrix<double, -1, 1>(N_state); | |
stan::math::initialize_fill(z_state_varmat, std::numeric_limits<double>::quiet_NaN()); | |
current_statement__ = 16; | |
z_state_varmat = in__.var_vector(N_state); | |
var_value_vector<double> r_age_varmat; | |
r_age_varmat = Eigen::Matrix<double, -1, 1>(N_age); | |
stan::math::initialize_fill(r_age_varmat, std::numeric_limits<double>::quiet_NaN()); | |
var_value_vector<double> r_educ_varmat; | |
r_educ_varmat = Eigen::Matrix<double, -1, 1>(N_educ); | |
stan::math::initialize_fill(r_educ_varmat, std::numeric_limits<double>::quiet_NaN()); | |
var_value_vector<double> r_educ_age_varmat; | |
r_educ_age_varmat = Eigen::Matrix<double, -1, 1>(N_educ_age); | |
stan::math::initialize_fill(r_educ_age_varmat, std::numeric_limits<double>::quiet_NaN()); | |
var_value_vector<double> r_educ_eth_varmat; | |
r_educ_eth_varmat = Eigen::Matrix<double, -1, 1>(N_educ_eth); | |
stan::math::initialize_fill(r_educ_eth_varmat, std::numeric_limits<double>::quiet_NaN()); | |
var_value_vector<double> r_eth_varmat; | |
r_eth_varmat = Eigen::Matrix<double, -1, 1>(N_eth); | |
stan::math::initialize_fill(r_eth_varmat, std::numeric_limits<double>::quiet_NaN()); | |
var_value_vector<double> r_male_eth_varmat; | |
r_male_eth_varmat = Eigen::Matrix<double, -1, 1>(N_male_eth); | |
stan::math::initialize_fill(r_male_eth_varmat, std::numeric_limits<double>::quiet_NaN()); | |
var_value_vector<double> r_state_varmat; | |
r_state_varmat = Eigen::Matrix<double, -1, 1>(N_state); | |
stan::math::initialize_fill(r_state_varmat, std::numeric_limits<double>::quiet_NaN()); | |
for (int sym1__ = 1; sym1__ <= Kc; ++sym1__) { | |
vars__.emplace_back(b_varmat[(sym1__ - 1)]);} | |
vars__.emplace_back(Intercept); | |
vars__.emplace_back(sd_age); | |
vars__.emplace_back(sd_educ); | |
vars__.emplace_back(sd_educ_age); | |
vars__.emplace_back(sd_educ_eth); | |
vars__.emplace_back(sd_eth); | |
vars__.emplace_back(sd_male_eth); | |
vars__.emplace_back(sd_state); | |
for (int sym1__ = 1; sym1__ <= N_age; ++sym1__) { | |
vars__.emplace_back(z_age_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_educ; ++sym1__) { | |
vars__.emplace_back(z_educ_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_educ_age; ++sym1__) { | |
vars__.emplace_back(z_educ_age_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_educ_eth; ++sym1__) { | |
vars__.emplace_back(z_educ_eth_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_eth; ++sym1__) { | |
vars__.emplace_back(z_eth_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_male_eth; ++sym1__) { | |
vars__.emplace_back(z_male_eth_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_state; ++sym1__) { | |
vars__.emplace_back(z_state_varmat[(sym1__ - 1)]);} | |
if (logical_negation((primitive_value(emit_transformed_parameters__) || | |
primitive_value(emit_generated_quantities__)))) { | |
return ; | |
} | |
current_statement__ = 17; | |
assign(r_age_varmat, nil_index_list(), multiply(sd_age, z_age_varmat), | |
"assigning variable r_age_varmat"); | |
current_statement__ = 18; | |
assign(r_educ_varmat, nil_index_list(), | |
multiply(sd_educ, z_educ_varmat), "assigning variable r_educ_varmat"); | |
current_statement__ = 19; | |
assign(r_educ_age_varmat, nil_index_list(), | |
multiply(sd_educ_age, z_educ_age_varmat), | |
"assigning variable r_educ_age_varmat"); | |
current_statement__ = 20; | |
assign(r_educ_eth_varmat, nil_index_list(), | |
multiply(sd_educ_eth, z_educ_eth_varmat), | |
"assigning variable r_educ_eth_varmat"); | |
current_statement__ = 21; | |
assign(r_eth_varmat, nil_index_list(), multiply(sd_eth, z_eth_varmat), | |
"assigning variable r_eth_varmat"); | |
current_statement__ = 22; | |
assign(r_male_eth_varmat, nil_index_list(), | |
multiply(sd_male_eth, z_male_eth_varmat), | |
"assigning variable r_male_eth_varmat"); | |
current_statement__ = 23; | |
assign(r_state_varmat, nil_index_list(), | |
multiply(sd_state, z_state_varmat), | |
"assigning variable r_state_varmat"); | |
if (emit_transformed_parameters__) { | |
for (int sym1__ = 1; sym1__ <= N_age; ++sym1__) { | |
vars__.emplace_back(r_age_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_educ; ++sym1__) { | |
vars__.emplace_back(r_educ_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_educ_age; ++sym1__) { | |
vars__.emplace_back(r_educ_age_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_educ_eth; ++sym1__) { | |
vars__.emplace_back(r_educ_eth_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_eth; ++sym1__) { | |
vars__.emplace_back(r_eth_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_male_eth; ++sym1__) { | |
vars__.emplace_back(r_male_eth_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_state; ++sym1__) { | |
vars__.emplace_back(r_state_varmat[(sym1__ - 1)]);} | |
} | |
if (logical_negation(emit_generated_quantities__)) { | |
return ; | |
} | |
double b_Intercept; | |
b_Intercept = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 24; | |
b_Intercept = (Intercept - dot_product(means_X, b_varmat)); | |
vars__.emplace_back(b_Intercept); | |
} catch (const std::exception& e) { | |
stan::lang::rethrow_located(e, locations_array__[current_statement__]); | |
// Next line prevents compiler griping about no return | |
throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); | |
} | |
} // write_array() | |
inline void transform_inits(const stan::io::var_context& context__, | |
std::vector<int>& params_i__, | |
std::vector<double>& vars__, | |
std::ostream* pstream__) const | |
final { | |
using local_scalar_t__ = double; | |
vars__.clear(); | |
vars__.reserve(num_params_r__); | |
try { | |
int pos__; | |
pos__ = std::numeric_limits<int>::min(); | |
pos__ = 1; | |
var_value_vector<double> b_varmat; | |
b_varmat = Eigen::Matrix<double, -1, 1>(Kc); | |
stan::math::initialize_fill(b_varmat, std::numeric_limits<double>::quiet_NaN()); | |
{ | |
std::vector<local_scalar_t__> b_varmat_flat__; | |
current_statement__ = 1; | |
assign(b_varmat_flat__, nil_index_list(), | |
context__.vals_r("b_varmat"), "assigning variable b_varmat_flat__"); | |
current_statement__ = 1; | |
pos__ = 1; | |
current_statement__ = 1; | |
for (int sym1__ = 1; sym1__ <= Kc; ++sym1__) { | |
current_statement__ = 1; | |
assign(b_varmat, cons_list(index_uni(sym1__), nil_index_list()), | |
b_varmat_flat__[(pos__ - 1)], "assigning variable b_varmat"); | |
current_statement__ = 1; | |
pos__ = (pos__ + 1);} | |
} | |
double Intercept; | |
Intercept = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 2; | |
Intercept = context__.vals_r("Intercept")[(1 - 1)]; | |
double sd_age; | |
sd_age = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 3; | |
sd_age = context__.vals_r("sd_age")[(1 - 1)]; | |
double sd_age_free__; | |
sd_age_free__ = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 3; | |
sd_age_free__ = stan::math::lb_free(sd_age, 0); | |
double sd_educ; | |
sd_educ = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 4; | |
sd_educ = context__.vals_r("sd_educ")[(1 - 1)]; | |
double sd_educ_free__; | |
sd_educ_free__ = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 4; | |
sd_educ_free__ = stan::math::lb_free(sd_educ, 0); | |
double sd_educ_age; | |
sd_educ_age = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 5; | |
sd_educ_age = context__.vals_r("sd_educ_age")[(1 - 1)]; | |
double sd_educ_age_free__; | |
sd_educ_age_free__ = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 5; | |
sd_educ_age_free__ = stan::math::lb_free(sd_educ_age, 0); | |
double sd_educ_eth; | |
sd_educ_eth = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 6; | |
sd_educ_eth = context__.vals_r("sd_educ_eth")[(1 - 1)]; | |
double sd_educ_eth_free__; | |
sd_educ_eth_free__ = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 6; | |
sd_educ_eth_free__ = stan::math::lb_free(sd_educ_eth, 0); | |
double sd_eth; | |
sd_eth = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 7; | |
sd_eth = context__.vals_r("sd_eth")[(1 - 1)]; | |
double sd_eth_free__; | |
sd_eth_free__ = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 7; | |
sd_eth_free__ = stan::math::lb_free(sd_eth, 0); | |
double sd_male_eth; | |
sd_male_eth = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 8; | |
sd_male_eth = context__.vals_r("sd_male_eth")[(1 - 1)]; | |
double sd_male_eth_free__; | |
sd_male_eth_free__ = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 8; | |
sd_male_eth_free__ = stan::math::lb_free(sd_male_eth, 0); | |
double sd_state; | |
sd_state = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 9; | |
sd_state = context__.vals_r("sd_state")[(1 - 1)]; | |
double sd_state_free__; | |
sd_state_free__ = std::numeric_limits<double>::quiet_NaN(); | |
current_statement__ = 9; | |
sd_state_free__ = stan::math::lb_free(sd_state, 0); | |
var_value_vector<double> z_age_varmat; | |
z_age_varmat = Eigen::Matrix<double, -1, 1>(N_age); | |
stan::math::initialize_fill(z_age_varmat, std::numeric_limits<double>::quiet_NaN()); | |
{ | |
std::vector<local_scalar_t__> z_age_varmat_flat__; | |
current_statement__ = 10; | |
assign(z_age_varmat_flat__, nil_index_list(), | |
context__.vals_r("z_age_varmat"), | |
"assigning variable z_age_varmat_flat__"); | |
current_statement__ = 10; | |
pos__ = 1; | |
current_statement__ = 10; | |
for (int sym1__ = 1; sym1__ <= N_age; ++sym1__) { | |
current_statement__ = 10; | |
assign(z_age_varmat, | |
cons_list(index_uni(sym1__), nil_index_list()), | |
z_age_varmat_flat__[(pos__ - 1)], | |
"assigning variable z_age_varmat"); | |
current_statement__ = 10; | |
pos__ = (pos__ + 1);} | |
} | |
var_value_vector<double> z_educ_varmat; | |
z_educ_varmat = Eigen::Matrix<double, -1, 1>(N_educ); | |
stan::math::initialize_fill(z_educ_varmat, std::numeric_limits<double>::quiet_NaN()); | |
{ | |
std::vector<local_scalar_t__> z_educ_varmat_flat__; | |
current_statement__ = 11; | |
assign(z_educ_varmat_flat__, nil_index_list(), | |
context__.vals_r("z_educ_varmat"), | |
"assigning variable z_educ_varmat_flat__"); | |
current_statement__ = 11; | |
pos__ = 1; | |
current_statement__ = 11; | |
for (int sym1__ = 1; sym1__ <= N_educ; ++sym1__) { | |
current_statement__ = 11; | |
assign(z_educ_varmat, | |
cons_list(index_uni(sym1__), nil_index_list()), | |
z_educ_varmat_flat__[(pos__ - 1)], | |
"assigning variable z_educ_varmat"); | |
current_statement__ = 11; | |
pos__ = (pos__ + 1);} | |
} | |
var_value_vector<double> z_educ_age_varmat; | |
z_educ_age_varmat = Eigen::Matrix<double, -1, 1>(N_educ_age); | |
stan::math::initialize_fill(z_educ_age_varmat, std::numeric_limits<double>::quiet_NaN()); | |
{ | |
std::vector<local_scalar_t__> z_educ_age_varmat_flat__; | |
current_statement__ = 12; | |
assign(z_educ_age_varmat_flat__, nil_index_list(), | |
context__.vals_r("z_educ_age_varmat"), | |
"assigning variable z_educ_age_varmat_flat__"); | |
current_statement__ = 12; | |
pos__ = 1; | |
current_statement__ = 12; | |
for (int sym1__ = 1; sym1__ <= N_educ_age; ++sym1__) { | |
current_statement__ = 12; | |
assign(z_educ_age_varmat, | |
cons_list(index_uni(sym1__), nil_index_list()), | |
z_educ_age_varmat_flat__[(pos__ - 1)], | |
"assigning variable z_educ_age_varmat"); | |
current_statement__ = 12; | |
pos__ = (pos__ + 1);} | |
} | |
var_value_vector<double> z_educ_eth_varmat; | |
z_educ_eth_varmat = Eigen::Matrix<double, -1, 1>(N_educ_eth); | |
stan::math::initialize_fill(z_educ_eth_varmat, std::numeric_limits<double>::quiet_NaN()); | |
{ | |
std::vector<local_scalar_t__> z_educ_eth_varmat_flat__; | |
current_statement__ = 13; | |
assign(z_educ_eth_varmat_flat__, nil_index_list(), | |
context__.vals_r("z_educ_eth_varmat"), | |
"assigning variable z_educ_eth_varmat_flat__"); | |
current_statement__ = 13; | |
pos__ = 1; | |
current_statement__ = 13; | |
for (int sym1__ = 1; sym1__ <= N_educ_eth; ++sym1__) { | |
current_statement__ = 13; | |
assign(z_educ_eth_varmat, | |
cons_list(index_uni(sym1__), nil_index_list()), | |
z_educ_eth_varmat_flat__[(pos__ - 1)], | |
"assigning variable z_educ_eth_varmat"); | |
current_statement__ = 13; | |
pos__ = (pos__ + 1);} | |
} | |
var_value_vector<double> z_eth_varmat; | |
z_eth_varmat = Eigen::Matrix<double, -1, 1>(N_eth); | |
stan::math::initialize_fill(z_eth_varmat, std::numeric_limits<double>::quiet_NaN()); | |
{ | |
std::vector<local_scalar_t__> z_eth_varmat_flat__; | |
current_statement__ = 14; | |
assign(z_eth_varmat_flat__, nil_index_list(), | |
context__.vals_r("z_eth_varmat"), | |
"assigning variable z_eth_varmat_flat__"); | |
current_statement__ = 14; | |
pos__ = 1; | |
current_statement__ = 14; | |
for (int sym1__ = 1; sym1__ <= N_eth; ++sym1__) { | |
current_statement__ = 14; | |
assign(z_eth_varmat, | |
cons_list(index_uni(sym1__), nil_index_list()), | |
z_eth_varmat_flat__[(pos__ - 1)], | |
"assigning variable z_eth_varmat"); | |
current_statement__ = 14; | |
pos__ = (pos__ + 1);} | |
} | |
var_value_vector<double> z_male_eth_varmat; | |
z_male_eth_varmat = Eigen::Matrix<double, -1, 1>(N_male_eth); | |
stan::math::initialize_fill(z_male_eth_varmat, std::numeric_limits<double>::quiet_NaN()); | |
{ | |
std::vector<local_scalar_t__> z_male_eth_varmat_flat__; | |
current_statement__ = 15; | |
assign(z_male_eth_varmat_flat__, nil_index_list(), | |
context__.vals_r("z_male_eth_varmat"), | |
"assigning variable z_male_eth_varmat_flat__"); | |
current_statement__ = 15; | |
pos__ = 1; | |
current_statement__ = 15; | |
for (int sym1__ = 1; sym1__ <= N_male_eth; ++sym1__) { | |
current_statement__ = 15; | |
assign(z_male_eth_varmat, | |
cons_list(index_uni(sym1__), nil_index_list()), | |
z_male_eth_varmat_flat__[(pos__ - 1)], | |
"assigning variable z_male_eth_varmat"); | |
current_statement__ = 15; | |
pos__ = (pos__ + 1);} | |
} | |
var_value_vector<double> z_state_varmat; | |
z_state_varmat = Eigen::Matrix<double, -1, 1>(N_state); | |
stan::math::initialize_fill(z_state_varmat, std::numeric_limits<double>::quiet_NaN()); | |
{ | |
std::vector<local_scalar_t__> z_state_varmat_flat__; | |
current_statement__ = 16; | |
assign(z_state_varmat_flat__, nil_index_list(), | |
context__.vals_r("z_state_varmat"), | |
"assigning variable z_state_varmat_flat__"); | |
current_statement__ = 16; | |
pos__ = 1; | |
current_statement__ = 16; | |
for (int sym1__ = 1; sym1__ <= N_state; ++sym1__) { | |
current_statement__ = 16; | |
assign(z_state_varmat, | |
cons_list(index_uni(sym1__), nil_index_list()), | |
z_state_varmat_flat__[(pos__ - 1)], | |
"assigning variable z_state_varmat"); | |
current_statement__ = 16; | |
pos__ = (pos__ + 1);} | |
} | |
for (int sym1__ = 1; sym1__ <= Kc; ++sym1__) { | |
vars__.emplace_back(b_varmat[(sym1__ - 1)]);} | |
vars__.emplace_back(Intercept); | |
vars__.emplace_back(sd_age_free__); | |
vars__.emplace_back(sd_educ_free__); | |
vars__.emplace_back(sd_educ_age_free__); | |
vars__.emplace_back(sd_educ_eth_free__); | |
vars__.emplace_back(sd_eth_free__); | |
vars__.emplace_back(sd_male_eth_free__); | |
vars__.emplace_back(sd_state_free__); | |
for (int sym1__ = 1; sym1__ <= N_age; ++sym1__) { | |
vars__.emplace_back(z_age_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_educ; ++sym1__) { | |
vars__.emplace_back(z_educ_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_educ_age; ++sym1__) { | |
vars__.emplace_back(z_educ_age_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_educ_eth; ++sym1__) { | |
vars__.emplace_back(z_educ_eth_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_eth; ++sym1__) { | |
vars__.emplace_back(z_eth_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_male_eth; ++sym1__) { | |
vars__.emplace_back(z_male_eth_varmat[(sym1__ - 1)]);} | |
for (int sym1__ = 1; sym1__ <= N_state; ++sym1__) { | |
vars__.emplace_back(z_state_varmat[(sym1__ - 1)]);} | |
} catch (const std::exception& e) { | |
stan::lang::rethrow_located(e, locations_array__[current_statement__]); | |
// Next line prevents compiler griping about no return | |
throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); | |
} | |
} // transform_inits() | |
inline void get_param_names(std::vector<std::string>& names__) const { | |
names__.clear(); | |
names__.emplace_back("b_varmat"); | |
names__.emplace_back("Intercept"); | |
names__.emplace_back("sd_age"); | |
names__.emplace_back("sd_educ"); | |
names__.emplace_back("sd_educ_age"); | |
names__.emplace_back("sd_educ_eth"); | |
names__.emplace_back("sd_eth"); | |
names__.emplace_back("sd_male_eth"); | |
names__.emplace_back("sd_state"); | |
names__.emplace_back("z_age_varmat"); | |
names__.emplace_back("z_educ_varmat"); | |
names__.emplace_back("z_educ_age_varmat"); | |
names__.emplace_back("z_educ_eth_varmat"); | |
names__.emplace_back("z_eth_varmat"); | |
names__.emplace_back("z_male_eth_varmat"); | |
names__.emplace_back("z_state_varmat"); | |
names__.emplace_back("r_age_varmat"); | |
names__.emplace_back("r_educ_varmat"); | |
names__.emplace_back("r_educ_age_varmat"); | |
names__.emplace_back("r_educ_eth_varmat"); | |
names__.emplace_back("r_eth_varmat"); | |
names__.emplace_back("r_male_eth_varmat"); | |
names__.emplace_back("r_state_varmat"); | |
names__.emplace_back("b_Intercept"); | |
} // get_param_names() | |
inline void get_dims(std::vector<std::vector<size_t>>& dimss__) const | |
final { | |
dimss__.clear(); | |
dimss__.emplace_back(std::vector<size_t>{static_cast<size_t>(Kc)}); | |
dimss__.emplace_back(std::vector<size_t>{}); | |
dimss__.emplace_back(std::vector<size_t>{}); | |
dimss__.emplace_back(std::vector<size_t>{}); | |
dimss__.emplace_back(std::vector<size_t>{}); | |
dimss__.emplace_back(std::vector<size_t>{}); | |
dimss__.emplace_back(std::vector<size_t>{}); | |
dimss__.emplace_back(std::vector<size_t>{}); | |
dimss__.emplace_back(std::vector<size_t>{}); | |
dimss__.emplace_back(std::vector<size_t>{static_cast<size_t>(N_age)}); | |
dimss__.emplace_back(std::vector<size_t>{static_cast<size_t>(N_educ)}); | |
dimss__.emplace_back(std::vector<size_t>{static_cast<size_t>(N_educ_age)}); | |
dimss__.emplace_back(std::vector<size_t>{static_cast<size_t>(N_educ_eth)}); | |
dimss__.emplace_back(std::vector<size_t>{static_cast<size_t>(N_eth)}); | |
dimss__.emplace_back(std::vector<size_t>{static_cast<size_t>(N_male_eth)}); | |
dimss__.emplace_back(std::vector<size_t>{static_cast<size_t>(N_state)}); | |
dimss__.emplace_back(std::vector<size_t>{static_cast<size_t>(N_age)}); | |
dimss__.emplace_back(std::vector<size_t>{static_cast<size_t>(N_educ)}); | |
dimss__.emplace_back(std::vector<size_t>{static_cast<size_t>(N_educ_age)}); | |
dimss__.emplace_back(std::vector<size_t>{static_cast<size_t>(N_educ_eth)}); | |
dimss__.emplace_back(std::vector<size_t>{static_cast<size_t>(N_eth)}); | |
dimss__.emplace_back(std::vector<size_t>{static_cast<size_t>(N_male_eth)}); | |
dimss__.emplace_back(std::vector<size_t>{static_cast<size_t>(N_state)}); | |
dimss__.emplace_back(std::vector<size_t>{}); | |
} // get_dims() | |
inline void constrained_param_names( | |
std::vector<std::string>& param_names__, | |
bool emit_transformed_parameters__ = true, | |
bool emit_generated_quantities__ = true) const | |
final { | |
for (int sym1__ = 1; sym1__ <= Kc; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "b_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
param_names__.emplace_back(std::string() + "Intercept"); | |
param_names__.emplace_back(std::string() + "sd_age"); | |
param_names__.emplace_back(std::string() + "sd_educ"); | |
param_names__.emplace_back(std::string() + "sd_educ_age"); | |
param_names__.emplace_back(std::string() + "sd_educ_eth"); | |
param_names__.emplace_back(std::string() + "sd_eth"); | |
param_names__.emplace_back(std::string() + "sd_male_eth"); | |
param_names__.emplace_back(std::string() + "sd_state"); | |
for (int sym1__ = 1; sym1__ <= N_age; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "z_age_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_educ; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "z_educ_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_educ_age; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "z_educ_age_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_educ_eth; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "z_educ_eth_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_eth; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "z_eth_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_male_eth; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "z_male_eth_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_state; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "z_state_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
if (emit_transformed_parameters__) { | |
for (int sym1__ = 1; sym1__ <= N_age; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "r_age_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_educ; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "r_educ_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_educ_age; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "r_educ_age_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_educ_eth; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "r_educ_eth_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_eth; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "r_eth_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_male_eth; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "r_male_eth_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_state; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "r_state_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
} | |
if (emit_generated_quantities__) { | |
param_names__.emplace_back(std::string() + "b_Intercept"); | |
} | |
} // constrained_param_names() | |
inline void unconstrained_param_names( | |
std::vector<std::string>& param_names__, | |
bool emit_transformed_parameters__ = true, | |
bool emit_generated_quantities__ = true) const | |
final { | |
for (int sym1__ = 1; sym1__ <= Kc; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "b_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
param_names__.emplace_back(std::string() + "Intercept"); | |
param_names__.emplace_back(std::string() + "sd_age"); | |
param_names__.emplace_back(std::string() + "sd_educ"); | |
param_names__.emplace_back(std::string() + "sd_educ_age"); | |
param_names__.emplace_back(std::string() + "sd_educ_eth"); | |
param_names__.emplace_back(std::string() + "sd_eth"); | |
param_names__.emplace_back(std::string() + "sd_male_eth"); | |
param_names__.emplace_back(std::string() + "sd_state"); | |
for (int sym1__ = 1; sym1__ <= N_age; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "z_age_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_educ; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "z_educ_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_educ_age; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "z_educ_age_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_educ_eth; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "z_educ_eth_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_eth; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "z_eth_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_male_eth; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "z_male_eth_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_state; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "z_state_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
if (emit_transformed_parameters__) { | |
for (int sym1__ = 1; sym1__ <= N_age; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "r_age_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_educ; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "r_educ_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_educ_age; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "r_educ_age_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_educ_eth; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "r_educ_eth_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_eth; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "r_eth_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_male_eth; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "r_male_eth_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
for (int sym1__ = 1; sym1__ <= N_state; ++sym1__) { | |
{ | |
param_names__.emplace_back(std::string() + "r_state_varmat" + '.' + std::to_string(sym1__)); | |
}} | |
} | |
if (emit_generated_quantities__) { | |
param_names__.emplace_back(std::string() + "b_Intercept"); | |
} | |
} // unconstrained_param_names() | |
inline std::string get_constrained_sizedtypes() const { | |
stringstream s__; | |
s__ << "[{\"name\":\"b_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << Kc << "},\"block\":\"parameters\"},{\"name\":\"Intercept\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sd_age\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sd_educ\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sd_educ_age\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sd_educ_eth\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sd_eth\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sd_male_eth\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sd_state\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"z_age_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_age << "},\"block\":\"parameters\"},{\"name\":\"z_educ_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_educ << "},\"block\":\"parameters\"},{\"name\":\"z_educ_age_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_educ_age << "},\"block\":\"parameters\"},{\"name\":\"z_educ_eth_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_educ_eth << "},\"block\":\"parameters\"},{\"name\":\"z_eth_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_eth << "},\"block\":\"parameters\"},{\"name\":\"z_male_eth_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_male_eth << "},\"block\":\"parameters\"},{\"name\":\"z_state_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_state << "},\"block\":\"parameters\"},{\"name\":\"r_age_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_age << "},\"block\":\"transformed_parameters\"},{\"name\":\"r_educ_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_educ << "},\"block\":\"transformed_parameters\"},{\"name\":\"r_educ_age_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_educ_age << "},\"block\":\"transformed_parameters\"},{\"name\":\"r_educ_eth_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_educ_eth << "},\"block\":\"transformed_parameters\"},{\"name\":\"r_eth_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_eth << "},\"block\":\"transformed_parameters\"},{\"name\":\"r_male_eth_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_male_eth << "},\"block\":\"transformed_parameters\"},{\"name\":\"r_state_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_state << "},\"block\":\"transformed_parameters\"},{\"name\":\"b_Intercept\",\"type\":{\"name\":\"real\"},\"block\":\"generated_quantities\"}]"; | |
return s__.str(); | |
} // get_constrained_sizedtypes() | |
inline std::string get_unconstrained_sizedtypes() const { | |
stringstream s__; | |
s__ << "[{\"name\":\"b_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << Kc << "},\"block\":\"parameters\"},{\"name\":\"Intercept\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sd_age\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sd_educ\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sd_educ_age\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sd_educ_eth\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sd_eth\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sd_male_eth\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sd_state\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"z_age_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_age << "},\"block\":\"parameters\"},{\"name\":\"z_educ_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_educ << "},\"block\":\"parameters\"},{\"name\":\"z_educ_age_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_educ_age << "},\"block\":\"parameters\"},{\"name\":\"z_educ_eth_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_educ_eth << "},\"block\":\"parameters\"},{\"name\":\"z_eth_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_eth << "},\"block\":\"parameters\"},{\"name\":\"z_male_eth_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_male_eth << "},\"block\":\"parameters\"},{\"name\":\"z_state_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_state << "},\"block\":\"parameters\"},{\"name\":\"r_age_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_age << "},\"block\":\"transformed_parameters\"},{\"name\":\"r_educ_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_educ << "},\"block\":\"transformed_parameters\"},{\"name\":\"r_educ_age_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_educ_age << "},\"block\":\"transformed_parameters\"},{\"name\":\"r_educ_eth_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_educ_eth << "},\"block\":\"transformed_parameters\"},{\"name\":\"r_eth_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_eth << "},\"block\":\"transformed_parameters\"},{\"name\":\"r_male_eth_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_male_eth << "},\"block\":\"transformed_parameters\"},{\"name\":\"r_state_varmat\",\"type\":{\"name\":\"vector\",\"length\":" << N_state << "},\"block\":\"transformed_parameters\"},{\"name\":\"b_Intercept\",\"type\":{\"name\":\"real\"},\"block\":\"generated_quantities\"}]"; | |
return s__.str(); | |
} // get_unconstrained_sizedtypes() | |
// Begin method overload boilerplate | |
template <typename RNG> | |
inline void write_array(RNG& base_rng__, | |
Eigen::Matrix<double,Eigen::Dynamic,1>& params_r, | |
Eigen::Matrix<double,Eigen::Dynamic,1>& vars, | |
bool emit_transformed_parameters__ = true, | |
bool emit_generated_quantities__ = true, | |
std::ostream* pstream = nullptr) const { | |
std::vector<double> params_r_vec(params_r.size()); | |
for (int i = 0; i < params_r.size(); ++i) | |
params_r_vec[i] = params_r(i); | |
std::vector<double> vars_vec; | |
std::vector<int> params_i_vec; | |
write_array(base_rng__, params_r_vec, params_i_vec, vars_vec, | |
emit_transformed_parameters__, emit_generated_quantities__, pstream); | |
vars.resize(vars_vec.size()); | |
for (int i = 0; i < vars.size(); ++i) | |
vars(i) = vars_vec[i]; | |
} | |
template <bool propto__, bool jacobian__, typename T_> | |
inline T_ log_prob(Eigen::Matrix<T_,Eigen::Dynamic,1>& params_r, | |
std::ostream* pstream = nullptr) const { | |
std::vector<T_> vec_params_r; | |
vec_params_r.reserve(params_r.size()); | |
for (int i = 0; i < params_r.size(); ++i) | |
vec_params_r.push_back(params_r(i)); | |
std::vector<int> vec_params_i; | |
return log_prob<propto__,jacobian__,T_>(vec_params_r, vec_params_i, pstream); | |
} | |
inline void transform_inits(const stan::io::var_context& context, | |
Eigen::Matrix<double, Eigen::Dynamic, 1>& params_r, | |
std::ostream* pstream__ = nullptr) const { | |
std::vector<double> params_r_vec; | |
std::vector<int> params_i_vec; | |
transform_inits(context, params_i_vec, params_r_vec, pstream__); | |
params_r.resize(params_r_vec.size()); | |
for (int i = 0; i < params_r.size(); ++i) | |
params_r(i) = params_r_vec[i]; | |
} | |
}; | |
} | |
using stan_model = glmr_model_namespace::glmr_model; | |
#ifndef USING_R | |
// Boilerplate | |
stan::model::model_base& new_model( | |
stan::io::var_context& data_context, | |
unsigned int seed, | |
std::ostream* msg_stream) { | |
stan_model* m = new stan_model(data_context, seed, msg_stream); | |
return *m; | |
} | |
#endif |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
data { | |
int<lower=1> N; // number of observations | |
int y[N]; // response variable | |
int<lower = 1> K; // number of population-level effects | |
matrix[N, K] X; // population-level design matrix | |
int<lower = 1> N_age; | |
int<lower = 1> N_educ; | |
int<lower = 1> N_educ_age; | |
int<lower = 1> N_educ_eth; | |
int<lower = 1> N_eth; | |
int<lower = 1> N_male_eth; | |
int<lower = 1> N_state; | |
int<lower=1> J_age[N]; | |
int<lower=1> J_educ[N]; | |
int<lower=1> J_educ_age[N]; | |
int<lower=1> J_educ_eth[N]; | |
int<lower=1> J_eth[N]; | |
int<lower=1> J_male_eth[N]; | |
int<lower=1> J_state[N]; | |
real<lower=0.0> prior_scale_sd; | |
real<lower=0.0> prior_scale_Intercept; | |
real<lower=0.0> prior_scale_b; | |
} | |
transformed data { | |
int Kc = K - 1; | |
matrix[N, Kc] Xc; // centered version of X without an intercept | |
vector[Kc] means_X; // column means of X before centering | |
vector[Kc] sds_X; // scales of columns of X | |
for (i in 2:K) { | |
means_X[i - 1] = mean(X[, i]); | |
sds_X[i - 1] = sd(X[, i]); | |
Xc[, i - 1] = X[, i] - means_X[i - 1]; | |
} | |
} | |
parameters { | |
vector[Kc] b_varmat; // population-level effects | |
real Intercept; // intercept for centered predictors | |
real<lower=0> sd_age; | |
real<lower=0> sd_educ; | |
real<lower=0> sd_educ_age; | |
real<lower=0> sd_educ_eth; | |
real<lower=0> sd_eth; | |
real<lower=0> sd_male_eth; | |
real<lower=0> sd_state; | |
vector[N_age] z_age_varmat; | |
vector[N_educ] z_educ_varmat; | |
vector[N_educ_age] z_educ_age_varmat; | |
vector[N_educ_eth] z_educ_eth_varmat; | |
vector[N_eth] z_eth_varmat; | |
vector[N_male_eth] z_male_eth_varmat; | |
vector[N_state] z_state_varmat; | |
} | |
transformed parameters { | |
vector[N_age] r_age_varmat = sd_age * z_age_varmat; | |
vector[N_educ] r_educ_varmat = sd_educ * z_educ_varmat; | |
vector[N_educ_age] r_educ_age_varmat = sd_educ_age * z_educ_age_varmat; | |
vector[N_educ_eth] r_educ_eth_varmat = sd_educ_eth * z_educ_eth_varmat; | |
vector[N_eth] r_eth_varmat = sd_eth * z_eth_varmat; | |
vector[N_male_eth] r_male_eth_varmat = sd_male_eth * z_male_eth_varmat; | |
vector[N_state] r_state_varmat = sd_state * z_state_varmat; | |
} | |
model { | |
y ~ bernoulli_logit_glm(Xc, Intercept + r_age_varmat[J_age] | |
+ r_educ_varmat[J_educ] | |
+ r_educ_age_varmat[J_educ_age] | |
+ r_educ_eth_varmat[J_educ_eth] | |
+ r_eth_varmat[J_eth] | |
+ r_male_eth_varmat[J_male_eth] | |
+ r_state_varmat[J_state], b_varmat); | |
// rstanarm default priors | |
b_varmat ~ normal(0.0, prior_scale_b ./ sds_X); | |
Intercept ~ normal(0.0, prior_scale_Intercept); | |
z_age_varmat ~ std_normal(); | |
z_educ_varmat ~ std_normal(); | |
z_educ_age_varmat ~ std_normal(); | |
z_educ_eth_varmat ~ std_normal(); | |
z_eth_varmat ~ std_normal(); | |
z_male_eth_varmat ~ std_normal(); | |
z_state_varmat ~ std_normal(); | |
// custom sd priors -- rstanarm default is 1.0 | |
sd_age ~ exponential(prior_scale_sd); | |
sd_educ ~ exponential(prior_scale_sd); | |
sd_educ_age ~ exponential(prior_scale_sd); | |
sd_educ_eth ~ exponential(prior_scale_sd); | |
sd_eth ~ exponential(prior_scale_sd); | |
sd_male_eth ~ exponential(prior_scale_sd); | |
sd_state ~ exponential(prior_scale_sd); | |
} | |
generated quantities { | |
// actual population-level intercept | |
real b_Intercept = Intercept - dot_product(means_X, b_varmat); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment