Joh*_*eve 6 regression r glmnet logistic-regression
我有一个使用glmnet
包制作的逻辑回归模型.我的响应变量被编码为一个因子,我将其称为"a"和"b".
逻辑回归的数学将两个类中的一个标记为"0",将另一个标记为"1".逻辑回归模型的特征系数为正,负或零.如果特征"f"的系数是正的,则增加测试观察x的"f"的值增加了模型将x分类为类"1"的概率.
我的问题是:给定一个glmnet
模型,你怎么知道如何glmnet
将数据的因子标签{"a","b"}映射到基础数学'因子标签{"0","1"}?因为您需要知道正确解释模型的系数.
您可以通过predict
在应用于玩具观察时试验函数的输出来手动解决这个问题.但是如何glmnet
隐式处理映射以加速解释过程会很好.
谢谢!
请查看?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) ...
Run Code Online (Sandbox Code Playgroud)
现在不清楚吗?如果您有"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"
Run Code Online (Sandbox Code Playgroud)
无论你是使用glmnet()
,还是简单地glm()
发生同样的事情.