Interpret eydx, eyex in margins, Stata Suppose the regression is y=beta_0+beta_1*x + epsilon. I obtain the eydx=.295 by magins eydx(x) command.
What does Stata really do? Does Stata actually regress logy on x? If so, can I interpret the result as one unit increase in x leads to 0.295 unit increase in y?
Stata manual suggests "proportional change in y for a change in x". Then should I interpret the result as "there is 0.295 unit proportional change in y for a change in x"?
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"?
Are the three interpretation equivalent?
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?
 A: I got an answer from statalist.
Here is the answer by Clyde Schechter.

What does Stata really do? Does Stata actually regress logy on x?

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.
