一个令人费解的问题,我不确定我是否尽可能简洁地表达它,但是......
我处于想要拟合多元广义线性模型的位置 - 由于我的模型的大小和复杂性,我不得不rxGlm()
从RevoScaleR
包中使用而不是内置glm()
函数。
重要的是模型中的每个因素都有我选择的参考水平,我relevel()
当然可以使用它来设置。然而,这里令人讨厌的是因子水平被重新排序,因此它使 GLM 模型输出难以使用。出于演示目的,我希望能够在拟合模型后检索原始因子水平排序。
一个简单的例子:
library(RevoScaleR) # from Microsoft R Client
x <- data.frame(country = c("Australia", "Belgium", "Chile", "Belgium", "Belgium"),
degree = c("Y", "Y", "N", "Y", "N"),
salary = c(10000, 15000, 5000, 20000, 4000))
model <- rxGlm(salary ~ country + degree, data = x, dropFirst = TRUE)
model$coefficients
这给
(Intercept) country=Australia country=Belgium country=Chile degree=N degree=Y
-3500 NA 7500 8500 NA 13500
这两个因素在这里按字母顺序排列,因此参考水平是country = Australia
, degree = N
。假设我希望我的参考水平为country = Belgium
, degree = Y
。我可以这样做,然后重新运行模型:
x$country <- relevel(x$country, ref = "Belgium")
x$degree <- relevel(x$degree, ref = "Y")
model <- rxGlm(salary ~ country + degree, data = x, dropFirst = TRUE)
model$coefficients
这现在给出了相同的模型,但呈现方式不同:
(Intercept) country=Belgium country=Australia country=Chile degree=Y degree=N
17500 NA -7500 1000 NA -13500
这些是我想要的系数,但现在排序错误。有没有一种简单的方法可以使用我在命令之前的因子排序来重新排列这个项目relevel()
?
谢谢你。