stan-dev / stan-dev/rstanarm

posterior_predict fails for binomial models response as cbind(success, failure)

Open
#585 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
R
Stars
401
Forks
136
PR merge metrics
No merged PRs in 30d

Description

Summary:

posterior_predict errors when supplying a stan_gamm4 binomial model with response specified as cbind(success, failure).
The error:

Error in cbind(incidence, size - incidence) : 
  object 'incidence' not found
Reproducible Steps:
dat <- structure(list(Group = c("b_t", "c_b", "crp", "eqm", "frs", "gro", 
"mil", "min", "mmi", "mvo", "nmm", "oap", "ocr", "ofd", "omf", 
"omt", "osd", "p_c", "pcr", "pfb", "sgr", "twl", "vol", "wht", 
"wol", "wpp"), incidence = c(2, 0, 161, 427, 0, 0, 0, 1, 171, 
204, 94, 0, 6, 4, 50, 0, 0, 8, 0, 0, 0, 18, 0, 0, 0, 35), size = c(52814, 
17661, 224917, 328780, 1798, 1584, 1686, 7102, 190150, 267264, 
60457, 208, 22534, 270418, 236736, 2177, 5830, 1236, 12196, 308, 
3665, 105708, 5946, 112, 284, 79895), var1 = c(5245.67753079493, 
0.953564060294559, 82343.9289806345, 197659.209119104, 63.2736859428056, 
22.4404105569735, 1351.14684575416, 2769.92896596882, 44712.1423586455, 
105171.025085931, 7071.26242155988, 119.660910329725, 430.228890875555, 
14324.9500484617, 31603.4704954223, 1934.99222081046, 82.3389473082238, 
42959.0387724196, 134.618019333429, 9.01855742076216, 349.877180671831, 
39542.0596111563, 2196.30701684163, 6.25454990709854, 112.068551483099, 
14049.389438344)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-26L))

mod <-rstanarm::stan_gamm4(cbind(incidence, size  - incidence) ~ s(var1),
                            random = ~
                              (1|Group),
                            data = dat,
                            family = binomial)

rstanarm::posterior_predict(mod)

Error message

Error in cbind(incidence, size - incidence) : 
  object 'incidence' not found

I think the issue is that the variables in cbind aren't correct in the model data object

names(mod$data)
[1] "cbind(incidence, size - incidence)" "var1"                               "Group"                             
[4] "temp_y"      

It is important to note that this error does not occur when random effects are not included in the model.

mod2 <-rstanarm::stan_gamm4(cbind(incidence, size  - incidence) ~ s(var1),
                            data = dat,
                            family = binomial)

rstanarm::posterior_predict(mod2)

Also note that the model data object in the non-random effect model is correctly specified

names(mod2$data)
[1] "Group"     "incidence" "size"      "var1"      "temp_y"   
RStanARM Version:
packageVersion("rstanarm")
[1] ‘2.21.3’
R Version:
getRversion()
[1] ‘4.2.0’
Operating System:

MacOS 12.5.1

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the posterior_predict entry point for stan_gamm4 models and compare how mod$data is assembled with and without random effects. Reproduce the cbind(incidence, size - incidence) case using stan_gamm4, then verify that posterior_predict(mod) completes without the missing-object error.

Written by the indexing model from the issue text.

Assessment

Tech stack
r
Domain
data
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.