I have estimated a model of the following form using NL:

y=exp(xB)*(P^{gamma}) * (I^{theta}) + epsilon

where y (expenditures) is strictly positive, x is a set of control vars, P is price, and I is income, epsilon~IID(0, sigma). My main problem is that the model generates negative predicted values, while gamma (price elasticity) and theta (income elasticity) have the right sign and magnitudes. I have also estimated this model using log-log transformation with OLS. Finally, I have tried Poisson and GLM [link(log) and family(gamma or Poisson)] but the sign of elasticities change and the estimated coefficients no longer make any sense.

I really would like to estimate this model using MLE so that I could conduct likelihood ratio tests. In that case, I would specify the model properly as:

1. y=exp(xB)*(P^{gamma}) * (I^{theta}) * epsilon, epsilon~IID(1, sigma) [Perhaps choosing a distribution for epsilon with strictly positive supports]

OR

2. y=exp(xB)*(P^{gamma}) * (I^{theta}) + epsilon, epsilon~IID-log-normal (0, sigma) [or some distribution for epsilon with strictly positive outcome and mean zero]

I am new to MLE programming and have spent much time trying to implement (1) above. I would really appreciate any pointers or suggestions.

Thank you!

Cyrus