首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >glmnet:在logistic回归中,我如何知道我的反应的哪个因素水平被编码为1。

glmnet:在logistic回归中,我如何知道我的反应的哪个因素水平被编码为1。
EN

Stack Overflow用户
提问于 2016-06-19 22:19:53
回答 1查看 3K关注 0票数 11

我使用glmnet包建立了一个logistic回归模型。我的响应变量被编码为一个因子,其中的级别将被称为"a“和"b”。

logistic回归的数学将两类中的一种称为"0“,另一种称为"1”。logistic回归模型的特征系数不是正的,就是负的,或者是零的。如果特征"f“的系数为正,则增加试验观测x的”f“值,增加模型将x分类为"1”类的概率。

我的问题是:给定一个glmnet模型,您如何知道glmnet如何将数据的因子标签{"a“、"b"}映射到基础数学的因子标签{"0”、"1"}?因为你需要知道这一点才能正确地解释模型的系数。

当应用于玩具观察时,您可以通过实验predict函数的输出来手动解决这个问题。但是,glmnet如何隐式地处理映射以加快解释过程将是一件好事。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-19 22:33:52

看看?glmnet (https://cran.r-project.org/web/packages/glmnet/glmnet.pdf的第9页):

代码语言:javascript
复制
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代码是如何自动生成的,或者您是如何自己编写这些因素级别的。看:

代码语言:javascript
复制
## 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(),都会发生同样的事情。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37912399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档