【问题标题】:how to put constraints on parameter estimation in R?如何在R中对参数估计施加约束?
【发布时间】:2023-03-27 04:45:02
【问题描述】:

我正在使用 mlgit 包在 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 中做同样的事情。谢谢!

【问题讨论】:

    标签: r mixed-models mlogit


    【解决方案1】:

    基于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。

    【讨论】:

      猜你喜欢
      • 2015-11-26
      • 1970-01-01
      • 2016-06-21
      • 2020-01-26
      • 2022-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-08
      相关资源
      最近更新 更多