【问题标题】:Convert coefficients from log odds to marginal effects with imputed data in R使用 R 中的估算数据将系数从对数几率转换为边际效应
【发布时间】:2021-07-25 07:05:21
【问题描述】:

我对缺失数据使用多重插补,然后使用 pool_mi 函数获取系数。由于我的数据是集群的,我还必须使用 lm.cluster 函数计算我的回归模型的集群稳健 SE。然而,我相信系数的输出是对数赔率形式。如何将系数转换为边际效应?或者,如果这不可能是概率?我试图关注这篇文章(链接here)但无法弄清楚,因为我的情况有点复杂......下面是我对函数和输出图像所做的示例代码.谢谢!

library(mitools)
library(miceadds)
data(data.ma05)
dat <- data.ma05

# imputation of the dataset: use six imputations
resp <- dat[, - c(1:2) ]
imp <- mice::mice( resp, method="norm", maxit=3, m=6 )
datlist <- miceadds::mids2datlist( imp )

# linear regression with cluster robust standard errors
mod <- lapply(  datlist, FUN=function(data){
            miceadds::lm.cluster( data=data, formula=denote ~ migrant+ misei,
                    cluster=dat$idclass )
            }  )
# extract parameters and covariance matrix
betas <- lapply( mod, FUN=function(rr){ coef(rr) } )
vars <- lapply( mod, FUN=function(rr){ vcov(rr) } )
# conduct statistical inference
summary( miceadds::pool_mi( qhat=betas, u=vars ) )

【问题讨论】:

    标签: r regression cluster-analysis logistic-regression glm


    【解决方案1】:

    使用for loop 循环遍历datlist,以使用lm_robust 函数计算回归模型的集群稳健SE。在默认情况下使用 lapply 分配 mod 时需要一个不可子集的闭包类型对象:

    library(estimatr)
    mod <- vector('list', length(datlist))
    for(i in seq_along(datlist)){
      for(j in seq_along(datlist[[i]])){
        mod[[i]]<- lm_robust( data=datlist[[i]], formula=denote ~ migrant+ misei,
                              cluster=dat$idclass )
      }
    }
    

    现在使用margins 函数求边际效应:

    library(margins)
    mod_margins <- list()
    for(i in seq_along(mod)){
      mod_margins[[i]] <- margins::marginal_effects(mod[[i]])
    }
    
    # For single model in `mod`:
    mar_cl <- margins::margins(mod[[1]])
    mar_cl
    

    输出:

    migrant    misei
       0.5186 -0.01396
    

    【讨论】:

    • 太棒了!太感谢了。所以这就是平均边际效应吧?有没有办法让最终输出在以下列中也显示 p 值和 SE?
    • 所有都包含在mod 向量中。当您在终端中运行 mod 时,对于六个插补中的每一个,您将获得与您相同的输出。对于单个模型:mod[[1]]$p-value,SE:mod[[1]]$std.error
    • 我明白了。谢谢!
    • 为您提供另一个后续问题。在最后几行代码中,您展示了如何从一个插补试验中显示单个模型的 ME,但是有没有办法在汇集所有 6 个插补的结果后获得边际效应?
    猜你喜欢
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2020-03-05
    • 2011-08-13
    • 2016-11-24
    • 2016-05-21
    • 1970-01-01
    • 2014-12-16
    相关资源
    最近更新 更多