Hello, I am trying to convert an existing model in JAGS into a stan model. I believe the models are identical but when I run the stan model I get the following error:
“Log probability evaluates to log(0), i.e. negative infinity.
Chain 1:   Stan can’t start sampling from this initial value.”
and after 100 attempts it fails.
The stan code is below:
// Poisson model example
 data {
   // Define variables in data
   // Number of observations (an integer)
   int<lower=0> T;
   int<lower=0> X;
   int<lower=0> C;
   // Number of beta parameters
   int<lower=0> p;
   int<lower=0> pop[X,T,C];
  
   // Covariates
   real PC[X,3];
   // Count outcome
   int<lower=0> y[X,T,C];
 }
 parameters {
   // Define parameters to estimate
   real beta[T,C,p];
   real mu_beta[T,p];
   real<lower=0> tau_beta[T,p];
   real<lower=0> tau_mu[p];
   real<lower=0> tau_u[X];
   real epsl_x[X,T,C];
   
      // offset
 }
 transformed parameters  {
   //
   real lp[X,T,C];
   // real mu[N];
   real<lower=0> mx[X,T,C];
   for (t in 1:T) {
      for(x in 1:X){
         for(a in 1:C){
     // Linear predictor
     lp[x,t,a] = beta[t,a,1]*PC[x,1] + beta[t,a,2]*PC[x,2] + beta[t,a,3]*PC[x,3] + epsl_x[x,t,a];
     mx[x,t,a] = exp(lp[x,t,a]);
         }
      }
   }
 }
 model {
   // Prior part of Bayesian inference
   // Flat prior for mu (no need to specify if non-informative)
   // Likelihood part of Bayesian inference
   for(t in 1:T){
      for(x in 1:X){
         for(a in 1:C){
   y[x,t,a]~ poisson(pop[x,t,a]*mx[x,t,a]);
   }
 }
}
for(t in 1:T){
   for(a in 1:C){
for(j in 1:p){
 beta[t,a,j] ~normal(mu_beta[t,p],tau_beta[t,p]^2);
   }
}
}
//hyper priors
for(j in 1:p){
  for(t in 1:2){
    mu_beta[t,j] ~ normal(0,tau_mu[j]^2);
  }
  for(t in 3:T){
    mu_beta[t,j] ~ normal(2*mu_beta[t-1,j] - mu_beta[t-2,j],tau_mu[j]^2); //AR(2) function for PC coefficients
  }
}
// prior
for(a in 1:C){
  for(x in 1:X){
    for(t in 1:T){
      epsl_x[x,t,a] ~ normal(0,tau_u[x]^2); //for constant in logmx (small variance)
    }
  }
}
for(x in 1:X){
  tau_u[x] ~ uniform(0,0.1); //epsilon has very informative (don't want to vary)
}
for(j in 1:p){
      tau_mu[j] ~ uniform(0,40);
      for(t in 1:T){
         tau_beta[t,j] ~ uniform(0,40);
      }
}
}
And the working JAGS model I copied is:
## pooled LC-type model with 1-3 PCs
## smoothing parameters through time with non-informative priors
model{
  for (x in 1:X){ #age
    for (t in 1:T){ #time
      for (s in 1:S){ #state
        for (a in 1:n.a[s]){ #counties within state
          y.xtas[x,t,a,s] ~ dpois(mu.xtas[x,t,a,s]) #deaths are poisson distributed
          yrep.xtas[x,t,a,s] ~ dpois(mu.xtas[x,t,a,s]) #draws from posterior predictive distribution (to construct PIs)
          mu.xtas[x,t,a, s] <- pop.xtas[x,t,a, s]*mx.xtas[x,t,a, s] # pop x mortality rate
          mx.xtas[x,t,a,s] <- exp(logmx.xtas[x,t,a,s])
        }
        for (a in n.a[s]+1:n.amax){ #this is required when states have different number of counties (nothing estimated, just getting rid of errors)
          mu.xtas[x,t,a, s] <- 0
        }
      }
    }
  }
  
  for (x in 1:X){ #age
    for (t in 1:T){
      for (s in 1:S){
        for (a in 1:n.a[s]){
          logmx.xtas[x,t,a,s]<- beta.tas[t,a,s,1]*Yx[x,1] + beta.tas[t,a,s,2]*Yx[x,2] + beta.tas[t,a,s,3]*Yx[x,3] +u.xtas[x,t,a,s]
        }
      }
    }
  }
  
  #priors
  for (s in 1:S){
      for (a in 1:n.a[s]){
        for(p in 1:P){
          for(t in 1:T){
            beta.tas[t,a,s,p] ~ dnorm(mu.beta[s,t,p], tau.beta[s,t,p])
          }
        }
      }
      for(t in 1:T){
      for (a in n.a[s]+1:n.amax){
        for(p in 1:P){
          beta.tas[t,a,s,p] <- 0
        }
      }
      
      for(p in 1:P){
        tau.beta[s,t,p] <- pow(sigma.beta[s,t,p], -2)
        sigma.beta[s,t,p] ~ dunif(0,40)
        
      }
      }
      
  }
  
  for(s in 1:S){
      for (a in 1:n.a[s]){
        for(x in 1:X){
        for(t in 1:T){
          u.xtas[x,t,a,s] ~ dnorm(0, tau.u[x,s])
        }
        
      }
  }
    
    for(t in 1:2){
      
      for(p in 1:P){
        mu.beta[s,t,p] ~ dnorm(0, tau.mu[s,p])
      }
      
      
    }
    for(t in 3:(T)){
      
      for(p in 1:P){
        mu.beta[s,t,p] ~ dnorm(2*mu.beta[s,t-1,p] - mu.beta[s,t-2,p], tau.mu[s,p])
      }
      
    }
    
    for(p in 1:P){
      tau.mu[s,p] <- pow(sigma.mu[s,p], -2)
      sigma.mu[s,p] ~ dunif(0,40)
    }
    
      for(x in 1:X){
        tau.u[x,s] <- pow(sigma.u[x,s], -2)
        sigma.u[x,s] ~ dunif(0,0.1)
      }
  }
  
  
}
Can anyone identify the issue? Thank you!