コード例 #1
0
ファイル: CUBS_update.cpp プロジェクト: vinash85/GOAL
void utest_binom_transform(double r, double s)
{
  double rs[2]; rs[0] = r; rs[1] = s;
  double fq[2] = {0, 0};
  double out[2];

  binom_transform(rs, fq, out);
  Rprintf("r=%g, s=%g, f=%g, q=%g\n", rs[0], rs[1], out[0], out[1]);
}
コード例 #2
0
ファイル: CUBS_binom.cpp プロジェクト: jwindle/BayesLogit
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);
}
コード例 #3
0
ファイル: CUBS_update.cpp プロジェクト: vinash85/GOAL
// Update
void BinomUpdate::update(const double* prior, double* post, double y, double n, double epsrel, int max_iter)
{
  double rs[2];
  double zero[2] = {0, 0};
  cs.solve(prior, rs, 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);
}
コード例 #4
0
ファイル: CUBS_update.cpp プロジェクト: vinash85/GOAL
void NBinomUpdate::update(const double* prior, double* post, double y, double n, 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);
  cs.solve(fq, rs, 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);
}
コード例 #5
0
ファイル: CUBS_update.cpp プロジェクト: vinash85/GOAL
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);
}
コード例 #6
0
ファイル: CUBS_update.cpp プロジェクト: vinash85/GOAL
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);
}
コード例 #7
0
ファイル: CUBS_update.cpp プロジェクト: vinash85/GOAL
int binom_transform_gsl (const gsl_vector* x, void* p, gsl_vector* f) {
  double rs[2];
  double out[2];
  double* fq = (double *)p;

  rs[0] = gsl_vector_get(x, 0);
  rs[1] = gsl_vector_get(x, 1);

  binom_transform(rs, fq, out);

  gsl_vector_set (f, 0, out[0]);
  gsl_vector_set (f, 1, out[1]);

  return GSL_SUCCESS;
}