Handle parameters ofCobb-Douglas with three inputs

Hello everyone,

I am replicating a model in which the parameters of a Cobb-Douglas function with three inputs are estimated and the Cobb-Douglas function is claimed to have constant returns to scale:

Y = A_t*N_t^{\alpha} *K_{t-1}^{\beta} *E_t^{1-\alpha-\beta}

However the posterior values of the original paper suggest increasing returns to scale. My intuition is that these parameters should be restricted to sum to one in the code - my thoughts thus far were:

  • Redefine \gamma\equiv1-\alpha-\beta in the steady state file and use \gamma in the .mod file
  • Somehow restrict \alpha + \beta < 1

I am not sure how and where such restriction usually takes place and would appreciate any help with this.

Best,
Fabian

  1. Yes, if you want to impose CRS then \gamma is not an independent object to be estimated, but rather a dependent object.
  2. The easiest way to impose this restriction is via a steady state file where you can return an error code if the restriction is violated.

Thank you very much for the quick and helpful response!

Unfortunately, I ran into problems when running my script with the new additions. I get an error message of Output argument “params” (and possibly others) not assigned a value in the execution with “EnvironmentA_steadystate” function. I have seen in "bnds" not assigned, that parameters or variables named the same as Matlab functions may cause the problem, but checking all variables with the which function implies that this does not seem to cause the problem.

I have made the following changes:

  1. Redefined two occurances of exponents in the manner described above (pii and zetta)
  2. Replaced these occurances in the .mod file model equations
  3. Added the following to the steady state file:
    \pi = 1 - \alpha - \beta \quad \& \quad \zeta = 1 - \iota - \kappa
    And an if statement to check whether \alpha + \beta \geq 1 or \iota + \kappa \geq 1

The code ran fine before, and I do not know what causes the error. Can you spot something or have a hunch?

Thank you so much in advance.

EnvironmentA.mod (7.3 KB)
EnvironmentA_steadystate.m (8.5 KB)

Put

params=NaN(M_.param_nbr,1);

somewhere at the beginning. It makes sure params was set when you use return (similar to line 60 in your file)

Thank you so much, the code now runs again.