【发布时间】:2019-05-02 04:09:58
【问题描述】:
我正在尝试根据调查数据集构建逻辑回归模型。我有兴趣查看激励类型(例如礼品卡)和学生年级(大一、大二等)的影响,以预测她/他是否完成了调查。数据框有数百个变量,所以我的第一步是只使用我需要的,在tidyverse中使用管道运算符:
1) 选择四个感兴趣的变量:如果学生完成了调查(FINISHED)、校园位置(CAMPUS)、激励类型(INCENTIVE)和每个学生的年级(LEVEL) )。
2) 过滤仅来自一个感兴趣的校园(“smith”)和过滤只查看三种激励类型,因为“其他”不是很有意义在这种情况下。
我尝试运行模型,但在我将字符串重新编码为数字变量(0、1、2...)并指定它们是因子之前,它不会工作。我在其他论坛上广泛阅读,您可以对每个变量使用“as.factor”和“recode”。但是对每个变量都这样做似乎很麻烦,分配给一个新的变量,并做同样的事情来设置as.factor。
我能否将管道运算符中的字符串重新编码为数字变量(例如,新生 = 0、大二 = 1、初中 = 2 等),然后使用 as.factor() 将其设置为因子?我尝试在管道操作员中执行此操作,但我收到一条错误消息作为回报。还是在过滤之前需要做这些操作?
任何人都可以提供任何指示吗?以下是我正在使用的代码:
survey <- read.csv("SURVEY2017.csv")
survey1 <- survey %>%
select(FINISHED, CAMPUS, INCENTIVE, LEVEL) %>%
filter(CAMPUS == "smith") %>%
filter(INCENTIVE %in% c("A chance to win one of ten $100 Visa
gift cards",
"A chance to win one of three $500 Visa gift cards",
"I wanted my opinions to be heard by faculty, staff, and
the administration"))
model <- glm(FINISHED ~ INCENTIVE + LEVEL, family = "binomial",
data = survey1)
谢谢!
【问题讨论】:
-
请包含可重现的样本数据。这将使其他人更容易提供有针对性的帮助;另请参阅如何提供minimal reproducible example/attempt。
-
您能解释一下为什么需要将
LEVEL变量重新编码为数字吗?对我来说... %>% mutate(LEVEL=factor(LEVEL,level=c("freshman","sophomore",...)))似乎更自然(您可以将其设为有序因子,或设置连续差异对比,具体取决于您希望如何构建模型) -
@BenBolker 谢谢,本。我认为最好将我的变量重新编码为 0、1、2 等。我想这没有必要。我会使用你提到的 mutate 函数。