如何在R中对参数估计设置约束?

时间:2018-06-12 00:17:25

标签: r mixed-models mlogit

我使用mlogit包在R上拟合logit模型。虚拟变量(var1,var2,var3)的所有参数都是正态分布的。如何对一个变量(var1)设置约束以使其参数为零均值?当前代码为var1返回非零均值。谢谢!

model <- mlogit(outcome ~ var1 + var2 + var3 | 0 , 
                 data=data, 
                 rpar = c(var1 = "n",
                          var2 = "n",
                          var3 = "n"), 
                 correlation = FALSE, 
                 R = 100, 
                 halton = NA)

我知道在STATA中对参数设置约束相对容易。对于我的模型,我在STATA中的代码是:

constraint 1 _b[var1]=0
mixlogit  choice var1 var2 var3, group(qid) id(id) constraint(1)

我只是想知道如何在R中做同样的事。谢谢!

1 个答案:

答案 0 :(得分:0)

基于gmnl包,我们可以使用maxLik约束估计。对于这个问题,

A <- matrix (c(1,0,0,0,0,0, -1,0,0,0,0,0))
B <- matrix (c(0, 0))

model <- gmnl(outcome ~ var1 + var2 + var3 | 0 , 
                 data=data, 
                 rpar = c(var1 = "n",
                          var2 = "n",
                          var3 = "n"), 
                 constraints = list (eqA=A, eqB=B),
                 model = "mixl",
                 correlation = FALSE, 
                 R = 100, 
                 halton = Null)

约束在数学上的含义

1* mean(var1) + 0*mean(var2) + 0*mean(var3) + 0*sd(var1) + 0*sd(var2) > + 0*sd(var3) = 0;

-1* mean(var1) + 0*mean(var2) + 0*mean(var3) + 0*sd(var1) + 0*sd(var2) + 0*sd(var3) = 0

,因此估算中var1的平均值必须为0。