# ValueError: Bad initial energy: inf. The model might be misspecified

**URL:** <https://discourse.pymc.io/t/valueerror-bad-initial-energy-inf-the-model-might-be-misspecified/1144>\
**Category:** Questions\
**Created:** [April 26, 2018, 7:19pm UTC](https://discourse.pymc.io/t/valueerror-bad-initial-energy-inf-the-model-might-be-misspecified/1144 "2018-04-26T19:19:45Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![erim](https://avatars.discourse-cdn.com/v4/letter/e/74df32/32.png) [@erim](https://discourse.pymc.io/u/erim)\
**Post date:** [April 26, 2018, 7:19pm UTC](https://discourse.pymc.io/t/valueerror-bad-initial-energy-inf-the-model-might-be-misspecified/1144/1 "2018-04-26T19:19:45Z")

</div>

Hi, I have the following model but I am getting the bad initial energy error. I checked similar questions but cannot fix the problem. Any pointers would be greatly appreciated. Basically I am trying to use the radon example with some additional variables. I have panel data.

with pm.Model() as hierarchical\_model:  
#hyperpriors:  
mu\_constant = pm.Normal(‘mean\_for\_constants’, mu=0., sd= 1)  
sigma\_constant = pm.Uniform(‘sigma\_for\_constants’, lower = 0, upper = 1)

```
mu_tr_coefs = pm.Normal('mean_for_trend_coefs', mu=0., sd= 1)
sigma_tr_coefs = pm.Uniform('sigma_for_tr_coefs', lower = 0, upper = 1)

mu_var_coefs = pm.Normal('mean_for_var_coefs', mu=0., sd= 1)
sigma_var_coefs = pm.Uniform('sigma_for_var_coefs', lower = 0, upper = 1)

#intercept for geos
c = pm.Normal('constant', mu=mu_constant, sd=sigma_constant, shape=len(data.geo.unique()))
              
#coefs for trend
b = pm.Normal('trend_coefs', mu=mu_tr_coefs, sd=sigma_tr_coefs, shape=len(data.geo.unique()))
              
#coefs for var
g = pm.Normal('var_coefs', mu=mu_var_coefs, sd=sigma_var_coefs, shape=len(data.geo.unique()))
              
#error
epsilon = pm.Normal('epsilon', mu=0., sd= 100)

#expectation
exp_value = c[geo_ids] + b[geo_ids]*data.time.values + g[geo_ids]*data.Total_var.values

#likelihood
outcome_likelihood = pm.Normal('outcome_likelihood', mu = exp_value, sd = epsilon, observed = data.output)

```

Here is the result of model.test\_point

(‘mean\_for\_constants’, array(-5.524108719192764))  
(‘sigma\_for\_constants\_interval\_\_’, array(-1.3862943611198906))  
(‘mean\_for\_trend\_coefs’, array(-0.9189385332046727))  
(‘sigma\_for\_tr\_coefs\_interval\_\_’, array(-1.3862943611198906))  
(‘mean\_for\_var\_coefs’, array(-0.9189385332046727))  
(‘sigma\_for\_var\_coefs\_interval\_\_’, array(-1.3862943611198906))  
(‘constant’, array(-1014.5019231128882))  
(‘trend\_coefs’, array(-1014.5019231128882))  
(‘var\_coefs’, array(-1014.5019231128882))  
(‘epsilon’, array(-5.524108719192764))  
(‘outcome\_likelihood\_missing’, array(0))  
(‘outcome\_likelihood’, array(-inf))

Any help is greatly appreciated.

---

<div class="post-metadata">

**Author:** ![junpenglao](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.pymc.io/junpenglao/32/8_2.png) [@junpenglao](https://discourse.pymc.io/u/junpenglao)\
**Post date:** [April 26, 2018, 7:48pm UTC](https://discourse.pymc.io/t/valueerror-bad-initial-energy-inf-the-model-might-be-misspecified/1144/2 "2018-04-26T19:48:54Z")

</div>

> [@erim](#):
>
> (‘outcome\_likelihood’, array(-inf))

This is what causing the issue - you should not use `epsilon = pm.Normal('epsilon', mu=0., sd= 100)` as sigma for Normal distribution should be larger than 0. Try `epsilon = pm.HalfNormal('epsilon', sd= 100)`
