Skip to content

lccdf of beta overflows at reasonably normal values #3377

Description

@aakhmetz

Dear all,

I am sorry for giving reference to Claude AI in advance, but it was flagged by it recently.

transformed data { real y = 0.865169; }
generated quantities {
  real lccdf = beta_lccdf(y | 1, 19);   //   -inf
  real truth = 19 * log1m(y);           //  -38.0709
}

Analytically that's beta_lccdf(y | 1, 19) = 19·log1m(x) = −38.07, entirely finite. Stan evaluates it as log(1 − inc_beta(...)), and (1−0.865)^19 = 3e-17 vanishes against 1.0 in double precision, so it returns log(0), which leads to initialization error.

Technically, I have also had similar problems working with log_diff_exp for _lcdf. So I replaced it with log(CDF1 - CDF2) and it worked quite fine.

Sorry if I disturbed you without a good reason in advance.

Best wishes,
Andrei

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions