Skip to content

Error with sim when using shorthand in quap #473

Description

@samuelb2301

I was completing the exercise 5H2 which makes reference to a function on page 140:

data(WaffleDivorce)
d <- list()
d$A <- standardize( WaffleDivorce$MedianAgeMarriage )
d$D <- standardize( WaffleDivorce$Divorce )
d$M <- standardize( WaffleDivorce$Marriage )
m5.3_A <- quap(
 alist(
  ## A -> D <- M
  D ~ dnorm( mu , sigma ) ,
  mu <- a + bM*M + bA*A ,
  a ~ dnorm( 0 , 0.2 ) ,
  bM ~ dnorm( 0 , 0.5 ) ,
  bA ~ dnorm( 0 , 0.5 ) ,
  sigma ~ dexp( 1 ),
 ## A -> M
  M ~ dnorm( mu_M , sigma_M ),
  mu_M <- aM + bAM*A,
  aM ~ dnorm( 0 , 0.2 ),
  bAM ~ dnorm( 0 , 0.5 ),
  sigma_M ~ dexp( 1 )
 ) , data = d )

A_seq <- seq( from=-2 , to=2 , length.out=30 )

# prep data
sim_dat <- data.frame( A=A_seq )
 
# simulate M and then D, using A_seq
s <- sim( m5.3_A , data=sim_dat , vars=c(“M”,”D”)

And wrote my own code using the shorthand c(bM, bA) ~ dnorm(0, 0.5), however on calling sim I got the following error:
Error in if (left == var) { : the condition has length > 1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions