This is a kind of semi-elasticity, and can be interpreted as the percentage/proportionate change in the expected value of $y$ for a one unit change in $x$.

This is not exactly equivalent to running the logged outcome regression, though it will often yield fairly similar estimates. margins is a post-estimation command that relies on previous estimates and performs none of its own.

I have not delved into the code of -margins- so I cannot be 100% certain, but it would be very surprising if Stata went to all that trouble. I imagine -margins- relies on the fact that d(log y)/dx = (1/y)*dydx and calculates the right hand side of that equation.

If so, can I interpret the result as one unit increase in x leads to
0.295 unit increase in y?

No. First of all, "leads to" is causal language, so the appropriateness of that depends on your study design. But in general one should not use causal language in these situations. Putting issues of causal/non causal aside, because it is eydx, it means that a unit increase in x is associated with a 0.295 increase in log y. In turn, increasing log y by 0.295 corresponds to multiplying y by exp(0.295), which is approximately 1.34. So a unit increase in x is associated with a 34.3% relative increase in y.

I also notice that eydx is semi-elasticity. So should I interpret this
result as " 1 unit increase in x leads to 29.5% in y" or maybe "
0.295% increase in y"?

This is the general idea, but as I showed in the preceding paragraph, the actual percent increase is 34.3, not 29.5 When the number is small, the two will be very close. So if you had eydx = 0.10, exp(0.10_ = 1.105, so that there would be a 10.5% increase. For values up to about 0.10, the elasticity and the corresponding percentage increase are nearly identical. But as the elasticity gets larger, they start to diverge.

Another issue is if I regress y on x and obtain eyex=a, is it
equivalent to regress y on lgx and obtain eydx=b? In other words, does
a equal b?

No. To the extent that something like this would be true it would be "sort of" equivalent to regress log y on log x and expect that to approximate eyex calculated after regressing y on x. But the values will only be approximately equal because the modeling of error in the two regressions is different, and because at least one of the models y = b0 + b1*x and log y = c0 + c1* x must be a mis-specification of the x-y relationship. In particular, if the linear model y = b0 + b1*x + epsilon is correct, then the relationship between log y and log x is not linear and the elasticity ey/ex actually varies with the value of x. When you use -margins- to get ey/ex, if you do not specify the value of x that you want to get the elasticity at (using the -at()- option), then -margins- gives you an averaged value.

$\begingroup$It is considered polite to let people know that you have cross-posted a question. On Statalist, this is a requirement. This keeps resources from being misallocated. Please do that in the future!$\endgroup$
– Dimitriy V. MasterovNov 1 '16 at 17:20