我使用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中做同样的事。谢谢!
答案 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。