解释 R 如何在逻辑回归中编码虚拟响应变量
Interpreting how R codifies dummy response variable in Logistic Regression
我是新手,在解释逻辑回归的输出时遇到了问题。
我的响应变量有两个值——“multiplex”和“subterraneus”。当在“microtus.train”数据框上使用 factor() 函数时,我按顺序得到“mutiplex and subterraneus”。在我拟合模型并预测响应后,我无法理解概率的含义。这些概率是否意味着观测是“地下”的概率?当我使用“contrasts(microtus.train$Group)”语句时,我得到了下面的 table。
> contrasts(microtus.train$Group)
subterraneus
multiplex 0
subterraneus 1
基于此 table,我认为该模型试图预测“地下”的概率(而不是“多重”的概率),因为“1”是“地下”的虚拟编码。我的假设正确吗?
下面给出了我的代码,在此先感谢您的帮助。
library(Flury)
data(microtus, package = "Flury")
str(microtus)
summary(microtus)
# Creating training & test data frames
microtus.train <- subset(microtus,
microtus$Group %in% c("multiplex", "subterraneus"),
select = c("Group", "M1Left", "M2Left", "M3Left",
"Foramen", "Pbone","Length", "Height",
"Rostrum") )
# Drop 3rd factor level
microtus.train$Group = droplevels(microtus.train$Group)
factor(microtus.train$Group)
nullModel.GLM <- glm(Group ~ 1, data = microtus.train,
family = binomial())
fullModel.GLM <- glm(Group ~ ., data = microtus.train,
family = binomial())
summary(nullModel.GLM)
summary(fullModel.GLM)
stepFwd.GLM <- step(nullModel.GLM, scope = list(upper = fullModel.GLM),
direction = 'forward', k = 2)
stepFwd.GLM.fitResults <- predict(stepFwd.GLM, type = 'response')
stepFwd.GLM.fitResults
contrasts(microtus.train$Group)
重要的不是对比,而是因子水平的顺序(对比指定 预测变量 变量如何编码为虚拟变量)。来自 ?glm
:
For ‘binomial’ and ‘quasibinomial’ families the response can also
be specified as a ‘factor’ (when the first level denotes failure
and all others success)
由于 R 默认按字母顺序定义因子水平,"multiplex"(可能)是第一水平,"subterraneus" 是第二水平,因此逻辑回归预测 "subterraneus"。您可以使用 levels(microtus$Group)
检查它,并在必要时通过使用 factor()
和显式设置 levels
参数来调整它。
我是新手,在解释逻辑回归的输出时遇到了问题。 我的响应变量有两个值——“multiplex”和“subterraneus”。当在“microtus.train”数据框上使用 factor() 函数时,我按顺序得到“mutiplex and subterraneus”。在我拟合模型并预测响应后,我无法理解概率的含义。这些概率是否意味着观测是“地下”的概率?当我使用“contrasts(microtus.train$Group)”语句时,我得到了下面的 table。
> contrasts(microtus.train$Group)
subterraneus
multiplex 0
subterraneus 1
基于此 table,我认为该模型试图预测“地下”的概率(而不是“多重”的概率),因为“1”是“地下”的虚拟编码。我的假设正确吗?
下面给出了我的代码,在此先感谢您的帮助。
library(Flury)
data(microtus, package = "Flury")
str(microtus)
summary(microtus)
# Creating training & test data frames
microtus.train <- subset(microtus,
microtus$Group %in% c("multiplex", "subterraneus"),
select = c("Group", "M1Left", "M2Left", "M3Left",
"Foramen", "Pbone","Length", "Height",
"Rostrum") )
# Drop 3rd factor level
microtus.train$Group = droplevels(microtus.train$Group)
factor(microtus.train$Group)
nullModel.GLM <- glm(Group ~ 1, data = microtus.train,
family = binomial())
fullModel.GLM <- glm(Group ~ ., data = microtus.train,
family = binomial())
summary(nullModel.GLM)
summary(fullModel.GLM)
stepFwd.GLM <- step(nullModel.GLM, scope = list(upper = fullModel.GLM),
direction = 'forward', k = 2)
stepFwd.GLM.fitResults <- predict(stepFwd.GLM, type = 'response')
stepFwd.GLM.fitResults
contrasts(microtus.train$Group)
重要的不是对比,而是因子水平的顺序(对比指定 预测变量 变量如何编码为虚拟变量)。来自 ?glm
:
For ‘binomial’ and ‘quasibinomial’ families the response can also be specified as a ‘factor’ (when the first level denotes failure and all others success)
由于 R 默认按字母顺序定义因子水平,"multiplex"(可能)是第一水平,"subterraneus" 是第二水平,因此逻辑回归预测 "subterraneus"。您可以使用 levels(microtus$Group)
检查它,并在必要时通过使用 factor()
和显式设置 levels
参数来调整它。