我在 R 中工作,使用 glm.nb(MASS 包的)用负二项式回归模型对计数数据进行建模。我想比较我的每个预测变量对响应变量的影响的相对重要性(注意:每个预测变量都有完全不同的尺度 - 有时是数量级)。不幸的是,R 的输出给我的结果是非标准化的 ( b ) 系数(“估计值”)。我希望有人能给我一个提示,告诉我如何从 NB 回归模型中获取标准化(beta)系数......或另一种“更好”的方式来确定我的每个预测变量对我的响应变量的相对重要性.
我研究了几种可能的方法,例如:
- 使用 R 包“relimpo”(如对https://stats.stackexchange.com/a/7118的评论中所建议),但它不适用于 NB 回归模型,因此完全改变了我应该考虑的假设并使结果大不相同;
- 均值居中和缩放我的数据,这会改变解释并使其无法使用 NB 模型,因为响应变量现在具有负值;
- 仅缩放,这样我仍然可以运行 NB 模型......我认为这只会影响系数的比例而不改变它们的方向(即,https://stats.stackexchange.com/a/29784) -但我确实得到了一些翻转为负的正系数。反之亦然……这对我来说似乎很奇怪,让我怀疑我是否犯了错误。
我受益于查看当进行多元回归时,何时应将预测变量居中以及何时应将它们标准化?(以及有关问题的评论中的建议链接,例如http://andrewgelman.com/2009/07/when_to_standar/和何时以及如何在线性回归中使用标准化解释变量,并且在进行变量之前经常调整(例如标准化)模型——什么时候这是个好主意,什么时候是坏主意?)。
底线:我还没有找到在 R 中使用 NB 模型的方法(我在统计上证实它比 lm、glm 或 poisson 更适合对我的数据进行建模)并且仍然具有相对重要性 - 或者至少是标准化的贝塔系数 - 对于我的预测者......
R 脚本是这样的:
library("MASS")
nb = glm.nb(responseCountVar ~ predictor1 + predictor2 +
predictor3, data=myData, control=glm.control(maxit=125))
summary(nb)
scaled_nb = glm.nb(scale(responseCountVar, center = FALSE) ~ scale(predictor1, center = FALSE) + scale(predictor2, center = FALSE) +
scale(predictor3, center = FALSE), data=myData, control=glm.control(maxit=125))
summary(scaled_nb)