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