微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有 svyglm 的 predict() 问题用于因子自变量

如何解决带有 svyglm 的 predict() 问题用于因子自变量

我有以下逻辑回归模型,其中包含多个具有确定参考水平的因子变量。

logit <- svyglm(DTP1 ~ factor(underage_DTP1) + 
                  relevel(factor(v101),ref = 27) + 
                  relevel(factor(v025),ref = 2) + 
                  relevel(factor(v106),ref = 3) + 
                  relevel(factor(v190),ref = 5) + 
                  relevel(factor(b4),ref = 1) + 
                  relevel(factor(v481),ref = 1),design = design,family = binomial(link="logit"),data = data_DTP1)

模型运行良好并产生预期结果。

然后我想使用该模型中的系数来生成与 2 个新数据集中的观察相关的预测概率。

一个新数据集与原始模型拟合数据集相同,除了 underage_DTP1 对于所有观察结果恒定为 0 并且其他变量与原始数据集相同(因此 underage_DTP1 没有预测影响)然后我做以下预测命令

pred_probs_2 <- data.frame(hci_du = predict(logit,data_DTP1_unfair,type="response"))

这很好用,

对于第二个新数据集,我的 underage_DTP1 与原始模型数据集(0 和 1)相同,所有其他因子变量只有 1 个值,即该变量的参考水平。因此,例如在这个测试数据集中,v101 都是 27 秒,而 v106 都是 3 秒。 predict 的结果应该只有截距和 underage_DTP1 重要(就像在之前的测试数据集中 underage_DTP1 由于测试数据中全为 0 而退出一样)。

然而,当我尝试在这个新数据集上运行预测代码时,我收到一条错误消息:

"Error in relevel.factor(factor(v101),ref = 27) : 
  ref = 27 must be in 1L:1"

准确的预测代码如下。

pred_probs_3 <- data.frame(hci_fair = predict(logit,newdata = data_DTP1_fair,type="response"))

这似乎是在基础模型中编码为具有用户定义参考水平的因子的变量的问题,但无论我如何更改因子变量的格式,错误仍然存​​在。知道如何解决这个问题或替代方法来指定这个,而不必从系数中进行硬编码吗?

谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。