我正在尝试用 5 个方程估计一个非线性看似不相关的回归 (SUR) 模型R
,并且我正在研究包systemfit
。一切都很顺利,直到它需要对我的方程式设置一些限制。使用包systemfit
,nlsystemfit()
它适用于非线性方程的函数。restrict.matrix
但是不允许使用的选项/参数nlsystemfit()
(它适用于函数中的线性方程systemfit()
)。
一个简化的例子是(我认为显示数据在这里无关紧要):
EQ_1 <- Y1 ~ (c1 - x)*Q + c11*G11 + c12*G12 + c13*G13
EQ_2 <- Y2 ~ (c2 - x)*Q + c21*G11 + c22*G12 + c23*G13
EQ_3 <- Y3 ~ (c3 - x)*Q + c31*G11 + c32*G12 + c33*G13
start.values <- c(c1 = 0,c2= 0,c3 = 0,
c11 = 0,c12 = 0,c13 = 0,
c21 = 0,c22 = 0,c23 = 0,
c31 = 0,c32 = 0,c33 = 0)
model <- list(EQ_1 ,EQ_2 ,EQ_3)
model.sur <- nlsystemfit(method = "SUR",
eqns = model,
startvals = start.values,
data = as.data.frame(dat))
到目前为止,估计工作完美。但是现在,我需要设置以下约束:
Rest_1 <- c11 + c12 + c13 = 0
Rest_2 <- c21 + c22 + c23 = 0
Rest_3 <- c31 + c32 + c33 = 0
Rest_4 <- c1 + c2 + c3 = -1
显然,这里的模型是线性的,有 3 个方程,但这是因为我试图简化这个想法。但目前的模型有 5 个非线性方程和更多的参数。
请任何人都可以指导我如何在 R 中执行具有限制的非线性 SUR 估计?
提前非常感谢。