# Random variable is nan

**URL:** <https://discourse.mc-stan.org/t/random-variable-is-nan/13951>\
**Category:** Modeling\
**Created:** [March 31, 2020, 6:09am UTC](https://discourse.mc-stan.org/t/random-variable-is-nan/13951 "2020-03-31T06:09:25Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![766767](https://avatars.discourse-cdn.com/v4/letter/7/d9b06d/32.png) [@766767](https://discourse.mc-stan.org/u/766767)\
**Post date:** [March 31, 2020, 6:09am UTC](https://discourse.mc-stan.org/t/random-variable-is-nan/13951/1 "2020-03-31T06:09:25Z")

</div>

Hi,

> library(ggplot2)  
> When running the model below I get an error:

Initialization between (-2, 2) failed after 100 attempts.

Can you advise how to resolve?

Thank you.

> library(rstan)  
> set.seed(4)  
> N= 100  
> x = sample(1:100,N_2, replace = T)  
> y = c(x[1:100]_.4+rnorm(100,8,7),3+x[101:200]\*.9+rnorm(100,2,9))  
> g = rep(c(1,2), each = N)  
> data =data.frame(x=x, y = y,group = g)  
> ggplot(data , aes(x=x, y = y,group=g))+geom\_line()+geom\_point()  
> input = list( N= length(g), N\_group = 2, group = g, Y=y, X=log(x))  
> fit = stan(file = “exp.stan”,data=input,seed=1,chains = 1 ,control =list(adapt\_delta = .99))

> params = rstan::extract(fit)  
> names(params)  
> print(summary(fit))  
> y = y  
> pred =params$ypp  
> ppc\_stat\_grouped(y, pred, group = g, stat = “median”)  
> ppc\_stat\_grouped(y, pred, group = g, stat = “mean”)

> data{  
> int\<lower=0\> N;  
> int\<lower =1\> N\_group;  
> int\<lower=1,upper = N\_group\> group[N];  
> real X[N];  
> real Y[N];  
> }  
> parameters{  
> vector[N\_group] a;  
> real a\_mu;  
> real\<lower=0\> a\_s;
> 
> vector[N\_group] b;  
> real b\_mu;  
> real\<lower=0\> b\_s;
> 
> vector[N] mu;
> 
> vector[N] sigma0;  
> vector[N] sigma\_x;  
> }
> 
> transformed parameters{  
> vector[N] sigma;  
> for(n in 1:N){  
> sigma[n] = exp(sigma0[n]+ X[n]\*sigma\_x[n]);  
> }  
> }
> 
> model{  
> b\_mu~normal(0,2);  
> b\_s~normal(2,2);  
> b~normal(b\_mu,b\_s);
> 
> a\_mu~normal(0,1);  
> a\_s~normal(2,2);  
> a~normal(a\_mu,a\_s);
> 
> sigma0~normal(0,.2);  
> sigma\_x~normal(-5,1);
> 
> for(n in 1:N){  
> Y[n] ~ normal( a[group[n]]+X[n]\*b[group[n]],sigma[n]);  
> }
> 
> }

> generated quantities{  
> vector[N] ypp;  
> for(n in 1:N){  
> ypp[n] = normal\_rng( a[group[n]]+X[n]\*b[group[n]],sigma[n]);  
> }  
> }

---

<div class="post-metadata">

**Author:** ![bgoodri](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bgoodri/32/4451_2.png) [@bgoodri](https://discourse.mc-stan.org/u/bgoodri)\
**Post date:** [March 31, 2020, 6:24am UTC](https://discourse.mc-stan.org/t/random-variable-is-nan/13951/2 "2020-03-31T06:24:42Z")

</div>

> [@766767](#):
>
> Can you advise how to resolve?

Call `stan` with `init_r = ` something less than 2 in order to reduce the dispersion of the starting values.

---

<div class="post-metadata">

**Author:** ![andrjohns](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/andrjohns/32/15297_2.png) [@andrjohns](https://discourse.mc-stan.org/u/andrjohns)\
**Post date:** [March 31, 2020, 6:56am UTC](https://discourse.mc-stan.org/t/random-variable-is-nan/13951/3 "2020-03-31T06:56:41Z")

</div>

I think the issue is this line:

```
for(n in 1:N){
vector[N] y;
y[n] ~ normal( a[group[n]]+X[n]*b[group[n]],sigma[n]);
}

```

Here you’ve declared an uninitialised vector `y` (which defaults to nan for each entry), and then tried to model it. I can see that you’ve passed `Y[N]` as data, should this instead be:

```
for(n in 1:N){
Y[n] ~ normal( a[group[n]]+X[n]*b[group[n]],sigma[n]);
}

```
