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