使用 R 中的估算数据将系数从对数几率转换为边际效应

Convert coefficients from log odds to marginal effects with imputed data in R

我对缺失数据使用多重插补,然后使用 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 ) )

使用 for loop 循环遍历 datlist,使用 lm_robust 函数计算回归 model 的聚类稳健 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