问题描述
我的目标是在 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
(检查数学是否正确)