221{
222
223 const std::size_t nsamp = 1000;
224 const std::size_t nval = 26;
225 std::vector<NormalSampler> samplers;
227 samplers.emplace_back( 1993 + 42 * k, 27 + 7 * k, 1945);
228
229
230 const unsigned int replicates = 1e4;
231 const std::vector<Real> levels = {0.05, 0.1, 0.2, 0.8, 0.9, 0.95};
232
233
234 Parallel::Communicator comm;
236
237
239 auto mean_calc = makeCalculator<std::vector<std::vector<Real>>, std::vector<Real>>(calc[0], po);
240 auto std_calc = makeCalculator<std::vector<std::vector<Real>>, std::vector<Real>>(calc[1], po);
241
242
244 auto mean_boot_calc = makeBootstrapCalculator<std::vector<std::vector<Real>>, std::vector<Real>>(
245 boot, po, levels, replicates, 2613, *mean_calc);
246 auto std_boot_calc = makeBootstrapCalculator<std::vector<std::vector<Real>>, std::vector<Real>>(
247 boot, po, levels, replicates, 2613, *std_calc);
248
249
250 std::vector<std::vector<Real>> data(nsamp);
251 for (auto & dt : data)
252 for (const auto & samp : samplers)
253 dt.push_back(samp.sample());
254 const std::vector<Real> mean_samp = mean_calc->compute(data, false);
255 const std::vector<Real> std_samp = std_calc->compute(data, false);
256 const std::vector<std::vector<Real>> mean_ci = mean_boot_calc->compute(data, false);
257 const std::vector<std::vector<Real>> std_ci = std_boot_calc->compute(data, false);
258
259
263 {
264 const Real mean_ref = samplers[k].meanConfidence(levels[l], nsamp);
265 const Real std_ref = samplers[k].stdConfidence(levels[l], nsamp);
266 EXPECT_NEAR(mean_ci[l][k] - mean_samp[k], mean_ref, std::abs(mean_ref *
tol));
267 EXPECT_NEAR(std_ci[l][k] - std_samp[k], std_ref, std::abs(std_ref *
tol));
268 }
269}
for(PetscInt i=0;i< nvars;++i)
IntRange< T > make_range(T beg, T end)