@@ -91,14 +91,14 @@ TEST(ProbDistributionsInvWishartCholesky, SpecialRNGTest) {
91
91
using stan::math::inv_wishart_cholesky_rng;
92
92
using stan::math::multiply_lower_tri_self_transpose;
93
93
94
- boost::random::mt19937 rng (1234U );
94
+ boost::random::mt19937 rng (92343U );
95
95
int N = 1e5 ;
96
96
double tol = 0.1 ;
97
97
for (int k = 1 ; k < 5 ; k++) {
98
- MatrixXd sigma = MatrixXd::Identity (k, k);
98
+ MatrixXd L = MatrixXd::Identity (k, k);
99
99
MatrixXd Z = MatrixXd::Zero (k, k);
100
100
for (int i = 0 ; i < N; i++) {
101
- Z += stan::math::crossprod (inv_wishart_cholesky_rng (k + 2 , sigma , rng));
101
+ Z += multiply_lower_tri_self_transpose (inv_wishart_cholesky_rng (k + 2 , L , rng));
102
102
}
103
103
Z /= N;
104
104
for (int j = 0 ; j < k; j++) {
@@ -111,3 +111,36 @@ TEST(ProbDistributionsInvWishartCholesky, SpecialRNGTest) {
111
111
}
112
112
}
113
113
}
114
+
115
+ TEST (ProbDistributionsInvWishartCholesky, compareToInvWishart) {
116
+ // Compare the marginal mean
117
+
118
+ using Eigen::MatrixXd;
119
+ using Eigen::VectorXd;
120
+ using stan::math::inv_wishart_cholesky_rng;
121
+ using stan::math::multi_normal_rng;
122
+ using stan::math::inv_wishart_rng;
123
+ using stan::math::lkj_corr_cholesky_rng;
124
+ using stan::math::qr_thin_R;
125
+ using stan::math::multiply_lower_tri_self_transpose;
126
+
127
+ boost::random::mt19937 rng (92343U );
128
+ int N = 1e5 ;
129
+ double tol = 0.1 ;
130
+ for (int k = 1 ; k < 5 ; k++) {
131
+ MatrixXd sigma = inv_wishart_rng (15 , MatrixXd::Identity (k, k), rng);
132
+ MatrixXd L = stan::math::cholesky_decompose (sigma);
133
+ MatrixXd Z_mean = sigma / (k + 3 );
134
+ MatrixXd Z_est = MatrixXd::Zero (k, k);
135
+ for (int i = 0 ; i < N; i++) {
136
+ Z_est += inv_wishart_cholesky_rng (k + 4 , L, rng);
137
+ }
138
+ Z_est /= N;
139
+ Z_est = multiply_lower_tri_self_transpose (Z_est);
140
+ for (int j = 0 ; j < k; j++) {
141
+ for (int i = 0 ; i < j; i++) {
142
+ EXPECT_NEAR (Z_est (i, j), Z_mean (i, j), tol);
143
+ }
144
+ }
145
+ }
146
+ }
0 commit comments