在 R 中的逻辑回归模型中将虚拟变量的组合创建为单个变量

问题描述

我需要在使用 R 的逻辑回归中将 3 个虚拟变量的可能组合创建为一个类变量。 我手动进行了组合,如下所示:

new_variable_code 变量_1 变量_2 变量_3
1 0 0 0
2 0 1 0
3 0 1 1
4 1 0 0
5 1 1 0
6 1 1 1

我排除了其他两个选项 (0 0 1) 和 (1 0 1) 因为我不需要它们,它们不由数据表示。 然后,我将 new_variable_code 与其他预测变量一起用作逻辑回归中的一个因素。

我的问题是:是否有任何自动方式来创建相同的 new_variable_code?或者甚至是另一种计量经济学技术,将 3 个虚拟变量编码为逻辑回归模型中的 1 个分类变量

我的目标:了解哪个变量组合对结果变量的优势比最高(以及在同一模型中解释的其他预测变量)。

谢谢

解决方法

您可以通过以下方式使用 pmap_dbl 将虚拟变量重新编码为 1-6 级:

library(tidyverse)

# Reproducing your data
df1 <- tibble(
  variable_1 = c(0,1,1),variable_2 = c(0,variable_3 = c(0,1)
)

factorlevels <- c("000","010","011","100","110","111")

df1 <- df1 %>%
  mutate(
    new_variable_code = pmap_dbl(list(variable_1,variable_2,variable_3),~ which(paste0(..1,..2,..3) == factorlevels))
  )

输出:

# A tibble: 6 x 4
  variable_1 variable_2 variable_3 new_variable_code
       <dbl>      <dbl>      <dbl>             <dbl>
1          0          0          0                 1
2          0          1          0                 2
3          0          1          1                 3
4          1          0          0                 4
5          1          1          0                 5
6          1          1          1                 6
,

我只想使用 sep="." 创建一个带有粘贴的变量。并使其成为一个因素:

 newvar <- factor( paste(variable_1,variable_3,sep="."))

我认为将其设为连续值不是一个好主意,它已经是一个带级别的整数,因为这就是创建因子的方式。