我使用glmnet包建立了一个logistic回归模型。我的响应变量被编码为一个因子,其中的级别将被称为"a“和"b”。
logistic回归的数学将两类中的一种称为"0“,另一种称为"1”。logistic回归模型的特征系数不是正的,就是负的,或者是零的。如果特征"f“的系数为正,则增加试验观测x的”f“值,增加模型将x分类为"1”类的概率。
我的问题是:给定一个glmnet模型,您如何知道glmnet如何将数据的因子标签{"a“、"b"}映射到基础数学的因子标签{"0”、"1"}?因为你需要知道这一点才能正确地解释模型的系数。
当应用于玩具观察时,您可以通过实验predict函数的输出来手动解决这个问题。但是,glmnet如何隐式地处理映射以加快解释过程将是一件好事。
谢谢!
发布于 2016-06-19 22:33:52
看看?glmnet (https://cran.r-project.org/web/packages/glmnet/glmnet.pdf的第9页):
y
response variable. ... For family="binomial" should be either a factor
with two levels, or a two-column matrix of counts or proportions (the
second column is treated as the target class; for a factor, the last
level in alphabetical order is the target class) ...现在不是很清楚吗?如果您的因子级别为"a"和"b",则"a"编码为0,而"b"编码为1。
这种待遇是非常标准的。这关系到R代码是如何自动生成的,或者您是如何自己编写这些因素级别的。看:
## automatic coding by R based on alphabetical order
set.seed(0); y1 <- factor(sample(letters[1:2], 10, replace = TRUE))
## manual coding
set.seed(0); y2 <- factor(sample(letters[1:2], 10, replace = TRUE),
levels = c("b", "a"))
# > y1
# [1] b a a b b a b b b b
# Levels: a b
# > y2
# [1] b a a b b a b b b b
# Levels: b a
# > levels(y1)
# [1] "a" "b"
# > levels(y2)
# [1] "b" "a"无论您使用glmnet(),还是简单地使用glm(),都会发生同样的事情。
https://stackoverflow.com/questions/37912399
复制相似问题