R:具有趋势和约束系数的聚合 Cobb-Douglas 生产函数估计

问题描述

我的目标是在 R 中估计以下等式:

Y_t = const + alpha_1 * (labor_t + theta_1 *trend1_t + theta_2 *trend2_t) + (1 - alpha_1) * capital_t

我尝试了以下方法

library(stats4)

LL <- function(par){
  beta0 <- par[1]
  alpha1 <- par[2]
  theta1 <- par[3]
  theta2 <- par[4]
  sigma2 <- par[5]
  
  rhs <- beta0 + alpha1 * (log_lab + theta1*t80 + theta2*t95) + (1-alpha1)*log_cap
  # rhs <- beta0 + alpha1 * log_lab + (1-alpha1)*log_cap
  lhs <- y
  
  rval <- sum(-lhs + dnorm(lhs,mean = rhs,sd = sqrt(sigma2),log = TRUE))
  
  return(-rval)
}

par0 = as.vector(c(4.5,0.65,0.0014,0.0023,0.01)) 

fit <- optim(par0,LL,hessian = TRUE,method = "L-BFGS-B",lower = 0.00001,upper = 10)
summary(fit)

不幸的是,我选择了以下错误Error in optim(par0,lower = 1e-05,: non-finite finite-difference value [5]

我已经尝试过使用 MLE() 和其他规范的不同方法,但没有成功。我必须如何解决估计具有约束系数的最小二乘回归的问题,即 alpha_1 * beta_1 = 1,使得 beta_1 == (1-alpha_1)?

解决方法

可以使用以下线性模型:

 Y1(t) = α0 + α1*L1(t) + β1*T(1,t) + β2*T(2,t)
 where
   Y1(t) = Y(t)-C(t)
   L1(t) = L(t)-C(t)      

然后恢复:

  θ1 = β1/α1
  θ2 = β2/α1 

(检查数学是否正确)