在逻辑回归中使用data.frame的所有变量

时间:2020-07-21 09:43:16

标签: r logistic-regression

我对R语言中的ml很陌生,并尝试在模型训练中简单地添加X_train中的所有变量以预测y_train。我遇到问题,因为他们不在同一个data.frame中。我的代码是这样的:

logitmod <- glm(log_y_train ~ log_X_train, family = "binomial")

log_y_train是长度200386的因数,而log_X_train是174个变量和200386行的data.frame。因此,我不能简单地键入所有列名。

但是我遇到以下错误:

变量'log_X_train'的无效类型(列表)

我以为这是一个数据帧,但是在告诉我长度不同时尝试了unlist()。任何人都可以帮助解决此问题以在logit中使用这两个变量。

谢谢

1 个答案:

答案 0 :(得分:3)

解决方案1 ​​

log_y_trainlog_X_train绑定到data.frame中,以便可以在" ~ ."中使用formula来表示log_X_train中的所有变量。

glm(log_y_train ~ ., family = binomial(), data = cbind(log_y_train, log_X_train))

解决方案2

使用reformulate()创建一个formula,并将log_X_train中的所有变量作为预测变量,并将log_y_train作为响应。这不需要绑定log_y_trainlog_X_train

glm(reformulate(names(log_X_train), "log_y_train"), family = binomial(), data = log_X_train)