示例#1
0
void binom_post(const double* prior, double* post, double y, double n, double epsrel, int max_iter)
{
  double rs[2];
  double fq[2] = {0, 0};
  binom_solver(prior, rs, 0.0, epsrel, max_iter);
  rs[0] = rs[0] + y;
  rs[1] = rs[1] + n - y;
  binom_transform(rs, fq, post);
}
示例#2
0
void binom_post(const double* prior, double* post, double y, double n, const double* ival, double epsrel, int max_iter)
{
  double rs[2];
  double zero[2] = {0, 0};
  // solver(prior, rs, ival, 0.0, epsrel, max_iter, &binom_transform_gsl);
  binom_solver(prior, rs, ival, 0.0, epsrel, max_iter);
  rs[0] = rs[0] + y;
  rs[1] = rs[1] + n - y;
  binom_transform(rs, zero, post);
  // Rprintf("fq: %g, %g; rs: %g, %g\n", post[0], post[1], rs[0], rs[1]);
  // Rprintf("epsrel: %g, max_iter, %i\n", epsrel, max_iter);
}
示例#3
0
void nbinom_post(const double* prior, double* post, double y, double n, const double* ival, double epsrel, int max_iter)
{
  double rs[2];
  double zero[2] = {0, 0};
  double fq[2]; memmove(fq, prior, 2 * sizeof(double));
  fq[0] = fq[0] - log(n);
  // solver(fq, rs, ival, 0.0, epsrel, max_iter, &binom_transform_gsl);
  binom_solver(fq, rs, ival, 0.0, epsrel, max_iter);
  rs[0] = rs[0] + y;
  rs[1] = rs[1] + n;
  binom_transform(rs, zero, post);
  post[0] = post[0] + log(n);
}
示例#4
0
int main(int argc, char** argv)
{
  utest_binom_transform(1, 1);
  utest_binom_transform_gsl(1, 1);

  double prior[2] = {0.0, 3.3};
  double post[2];
  double rs[2];

  binom_solver(prior, rs, 0.0, 1e-8, 100);
  printf("rs = %g, %g\n", rs[0], rs[1]);

  binom_post(prior, post, 1, 1, 1e-8, 100);
  printf("post = %g, %g\n", post[0], post[1]);

  return 0;
}
示例#5
0
int main(int argc, char** argv)
{
  // Function tests
  utest_binom_transform_gsl(1, 1);
  utest_binom_transform(1, 1);

  double prior[2] = {0.0, 3.3};
  double post[2];
  double rs[2];
  double ival[2] = {0.1, 0.1};

  // Exact
  Rprintf("Exact...\n");
  solver(prior, rs, ival, 0.0, 1e-8, 100, &binom_transform_gsl);
  Rprintf("rs = %g, %g\n", rs[0], rs[1]);

  binom_post(prior, post, 1, 1, ival, 1e-8, 100);
  Rprintf("post = %g, %g\n", post[0], post[1]);

  // Newton
  Rprintf("Exact with Jacobian...\n");
  binom_solver(prior, rs, ival, 0.0, 1e-8, 100);
  Rprintf("rs = %g, %g\n", rs[0], rs[1]);

  binom_post(prior, post, 1, 1, ival, 1e-8, 100);
  Rprintf("post = %g, %g\n", post[0], post[1]);

  // Class tests
  Rprintf("Exact (by class)...\n");
  CUBSSolver cs(&binom_transform_gsl);
  cs.solve(prior, rs, 0.0, 1e-8, 100);
  Rprintf("rs = %g, %g\n", rs[0], rs[1]);

  BinomUpdate binom;
  binom.update(prior, post, 1, 1, 1e-8, 100);
  Rprintf("post = %g, %g\n", post[0], post[1]);

  return 0;
}