Not quite.
Your interpretation for the first model is correct, but your explanation isn't quite right. Note that
$$ \begin{equation*} \beta_1 = \frac{\partial \log y}{\partial x}, \end{equation*}$$
but that isn't very easy to interpret. So, we recall the calculus result that
$$ \begin{equation*} \frac{\partial \log y}{\partial y} = \frac{1}{y} \end{equation*}$$
or
$$ \begin{equation*} \partial \log y = \frac{\partial y}{y}. \end{equation*}$$
Plugging this into the equation for $\beta_1$, we have
$$ \begin{equation*} \beta_1 = \frac{\partial y / y}{\partial x}. \end{equation*}$$
If we multiply both sides by 100, we have
$$ \begin{equation*} 100\beta_1 = \frac{100 \times \partial y / y}{\partial x}. \end{equation*}$$
We realize that $100 \times \partial y/y$ is just the percentage change in $y$, giving the interpretation that $100 \beta_1$ is the percentage change in the outcome for a one unit increase in $x$.
The correct interpretation for your second model would be that a 1 unit increase in GDP leads to a 10 percentage point increase in sales. It's easiest to understand this by thinking of your outcome as being measured in percentage points, rather than percent. Then, a 1 unit change in $x$ leads to a $\beta_1$ unit change in $y$, just as we normally get.
This is an important distinction. An increase in sales from 1% to 5% is a $5 - 1 = 4$ percentage point increase, but a $(5 - 1)/1 \times 100 =400$ percent change.
The question concerns models of the form
$$\log(y) = \cdots + \beta \log(x) + \cdots$$
(where none of the omitted terms involves anything that changes with $x$). When we change $x$ by $100\delta\%$ we multiply it by $1+\delta$. According to the laws of logarithms, when $1 + \delta \gt 0$,
$$\log(x(1+\delta)) = \log(x) + \log(1 + \delta).$$
Therefore if such a change in $x$ changes $y$ to $y^\prime$,
$$\eqalign{
\log(y^\prime) &= \cdots + \beta \log(x(1+\delta)) + \cdots \\
&= \cdots + \beta\left(\log(x) + \log(1 + \delta)\right) + \cdots \\
&= \cdots + \beta\log(x) + \beta\log(1 + \delta) + \cdots .
}$$
The change in $\log(y)$ is $$\log(y^\prime) - \log(y) = \beta\log(1 + \delta).$$
When $\delta$ is nearly zero (say, $10\%$ or smaller in size), $\log(1 + \delta) \approx \delta$ is a good approximation. When in turn $\beta\delta$ is also close to zero, this is the basis for the approximate interpretation "a $\delta$ percent change in $x$ corresponds to a $\beta\delta$ percent change in $y$."
For larger $\delta$ or $\beta$, however, this approximation fails. The fully general relationship is obtained by noting that adding $\beta\log(1+\delta)$ to $\log{y}$ is tantamount to multiplying $y$ by
$$\exp(\beta\log(1+\delta)) = (1+\delta)^\beta.$$
Therefore, when working with logarithms, think multiplicatively. We may memorialize the result of this analysis with a simple rule:
When $x$ is multiplied by any positive amount $c$, $y$ is multiplied by $c^\beta$.
In other words, log-log relationship are power relationships. Let's look at some examples:
When $\beta=2$, multiplying $x$ by $c$ multiplies $y$ by $c^2$. For instance, tripling $x$ will multiply $y$ by $9$.
When $\beta=1/3$, multiplying $x$ by $c$ multiplies $y$ by $c^{1/3} = \sqrt[3]{c}$. For instance, doubling $x$ will only multiply $y$ by $\sqrt[3]{2}\approx 1.26$.
When $\beta = -1$, multiplying $x$ by $c$ multiplies $y$ by $c^{-1} = 1/c$; that is, $y$ is divided by $c$.
Best Answer
As you're going through this, keep in mind that the interpretation of a "unit change in a logarithm" as a "percent change" is a local approximation.
1.
You're looking at a percent change in percentage points. Say $x$ measures how full a glass of water is. Some glasses are 25% full, others are 26% full. Un-logged, a 1-unit change in $x$ (i.e. moving from 25% to 26%) is associated with a $b$-unit change in $y$. The fact that the unit is a percentage point is irrelevant here.
Now take the log of $x$ and $y$. A 1-unit change in $\log{x}$ is associated with a $b$-unit change in $\log{y}$. So in the percent-change interpretation, a 1-percent change in $x$ is associated with a $b$-percent change in $y$. That is, moving from a glass that is 25% full to one that is 25.25% full is associated with a $b$% change in $y$.
What if $x$ is already a percent change in something else? Let's say, instead of "glass fullness," $x$ is now how much water has evaporated from a glass over some period of time, measured as a percentage of the original water level. Then a 1% change in $x$, i.e. going from 25% change to 25.25% change, is associated with a $b$% change in $y$.
Is that meaningful? Sure, if it's what you want to model. And chances are good that taking a logarithm to "correct skew" is unnecessary for the independent variable in a regression.
2.
Recall that $\log{u}-\log{v}=\log{u/v}$. So in the "percent change" interpretation, a 1% increase in the ratio of $x_t$ and $x_{t-1}$ is associated with a $b_1$% increase in the ratio of $y_t$ and $y_{t-1}$. This is a slightly messier case than before, but it's still a percent change in percentage points as above. Let's say $x_t=1$ and $x_{t-1}=2$. Then their ratio is $0.5$. Moving from $log{0.5}$ to $log{0.5}+1$ is the same thing as moving that ratio from $0.5$ to $0.5e^{1}=0.5e$, since $\log{e^1}=1$. By the same expansion, this is associated with moving the $y$ ratio from $r$ to $re^b$.
This, of course, is completely different from taking the logarithm of the first differences.
3.
There's no "bias" to correct for. I'm going to assume you mean to ask whether the predict functions automatically transform the data back to original scale. They don't.
R's built-in
lm
function doesn't (and in some sense can't, and probably shouldn't) keep track of any transformations you apply to your variables. Sopredict
will just take whatever $x$ you feed it and plug it into the fitted line. So if you fitl = lm(log(y) ~ log(x))
,predict(l,x)
will give you $\widehat{\log{y}}$ and it will assumex
is already on a log scale. That doesn't mean you can't write a wrapper function forlm
that allows you to keep track of such transformations and a correspondingpredict
method that undoes these transformations, but that's one for StackOverflow.The same is even more true in Stata, where a command like
reg log(y) log(x)
is downright invalid. You have to first do something likegen logx = log(x)
,gen logy = log(y)
, and finallyreg logy logx
. Sopredict yhat
will, as in R, return a log scale variable and assume you are feeding it a log scale variable.