When can I suppress the intercept using treatreg? Can I suppress the intercept if I know the treatment will be zero if the independent variables are zero.  Also, can I suppress the intercept if I know the right hand side of the primary regression equation CANNOT equal zero.
Example:
treatreg y1 x1 x2 x3, treat(y*=x4 x5, noconstant) noconstant

Can I do this if I know for sure x1, x2 and x3 cannot combine to equal zero?  Also if x4 and x5 combine to zero then y* MUST be zero.  Is this an appropriate use of noconstant?
 A: The use of noconstant in the treatment equation appears justified. If you specify noconstant in the main equation, as well, then this prescribes that when x1==x2==x3==y*==0, then y==0.
There are two or three good reasons to specify noconstant.


*

*You have a regression through origin. E.g., you measured the same distance with a ruler, and by riding a bike and measuring the number of rotations (that's how they used to measure the marathon distances before GPS and Google Earth). So the two measurements are proportional to one another, and the intercept just does not make sense. Zero intercept comes up in finance, too, in fully effective markets, but that is more likely to be viewed as a testable hypothesis.

*If you have variables that sum up to 1, e.g., all dummies out of a categorical variable (xi, noomit in Stata slang; ibn.factor in Stata 11+ factor variable notation)

*If somehow you already have an intercept that came out from another part of a model -- that's often an issue with gllamm and all the complicated equations that may have an intercept sneaking in from levels higher than one.


Beyond that, you need very serious reasons to omit the intercept, and the information you provided is insufficient to judge what it is exactly that allows you to omit the intercept.
See also: When is it ok to remove the intercept in a linear regression model?
