Trying to find estimators for 3 parameters in a simple equation I came across the following equation (source):￼
$$
y=ax^be^{-cx}
$$
where a, b and c are parameters, and x, y are variables. I was curious to estimate the parameters a, b, c for a dataset of x,y pairs, but don't know how to proceed to get good estimators.
 A: Menzerath's law can easily be developed into a stochastic log-linear model as follows.  Taking the logarithm of both sides of your equation gives the form:
$$\log y = \log a + b \log x - cx.$$
A natural statistical extension is to add a stochastic error term to obtain the linear regression model:
$$\log y_i = \log a + b \log x_i - cx_i + \varepsilon_i.$$
This model can be written in matrix form as:
$$\log \mathbf{y} = \mathbf{m} \begin{bmatrix}
\log a \\
b \\
c \\
\end{bmatrix} + \boldsymbol{\varepsilon},$$
using the response vector and design matrix:
$$\log \mathbf{y} = \begin{bmatrix}
\log y_1 \\
\log y_2 \\
\vdots \\
\log y_n \\
\end{bmatrix}
\quad \quad \quad
\mathbf{m} = \begin{bmatrix}
1 & \log x_1 & -x_1 \\
1 & \log x_2 & -x_2 \\
\vdots & \vdots & \vdots \\
1 & \log x_n & -x_n \\
\end{bmatrix}.$$
Estimation can be done using the ordinary least squares method to obtain estimates of the parameters $\log a$, $b$ and $c$.  (We then back-transform to obtain a corresponding estimate and confidence interval for the original parameter $a$.)  This can easily be implemented in R using the lm function.
Now, if you have access to underlying data where the outcome variable is a positive integer (e.g., word length, syllable length, etc.) then it may be better to model this with a negative binomial GLM using a logarithmic link function.  This is an analogous discrete model to the above, but it is formed specifically for output that is count data.  My understanding is that most statistical analysis of Menzerath's law is done using this type of model.
A: This could be solved with nonlinear least squares. You might have to tune the optimization algorithm, providing lower and upper bounds. An example in R with toy mtcars dataset.
> nls(mpg~a*gear^x+exp(-cc*am),data=mtcars)

Nonlinear regression model
  model: mpg ~ a * gear^x + exp(-cc * am)
   data: mtcars
      a       x      cc 
13.9065  0.1288 -2.0255 
 residual sum-of-squares: 718.5

Number of iterations to convergence: 11 
Achieved convergence tolerance: 5.617e-06

