如何让easystats parameters包对pscl模型返回变量标签?
解决parameters包处理zeroinfl模型不显示变量标签的问题
目前parameters包对pscl::zeroinfl这类双部分模型的变量标签提取逻辑尚未适配,不过可以通过手动替换的方式解决,以下是两种可行方案:
方案一:手动匹配变量标签替换参数列
通过提取数据框的变量标签,再替换model_parameters返回结果中的参数名称:
options(parameters_labels = TRUE) mydf <- pscl::bioChemists labelled::var_label(mydf) <- list(art="MyCount", fem="MyGender", mar="MyMarried") # 拟合零膨胀模型 model <- pscl::zeroinfl(art ~ fem + mar, data = mydf) params <- parameters::model_parameters(model) # 获取变量标签映射表 var_labels <- labelled::var_label(mydf) # 替换参数列中的变量名为对应标签 params$Parameter <- sapply(params$Parameter, function(param) { # 剥离模型部分前缀(如"Count: "或"Zero Inflation: ") clean_param <- gsub("^(Count: |Zero Inflation: )", "", param) # 匹配标签,无标签则保留原名称 if (clean_param %in% names(var_labels)) { var_labels[[clean_param]] } else { param } }) # 查看结果 print(params)
方案二:使用label_parameters函数辅助替换
利用parameters包内置的label_parameters函数,结合自定义标签映射完成替换:
options(parameters_labels = TRUE) mydf <- pscl::bioChemists labelled::var_label(mydf) <- list(art="MyCount", fem="MyGender", mar="MyMarried") model <- pscl::zeroinfl(art ~ fem + mar, data = mydf) params <- parameters::model_parameters(model) # 提取并替换标签 params$Parameter <- parameters::label_parameters( model, labels = labelled::var_label(mydf) ) print(params)
长期解决方案
如果需要更原生的支持,可以向easystats团队提交issue,请求添加对pscl::zeroinfl模型的变量标签识别适配。
内容的提问来源于stack exchange,提问作者robertspierre
相关产品推荐
相关产品推荐

