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

Using all variables of a data.frame in 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。正是出于这个原因,我不能简单地键入所有列名。

但是我收到以下错误:

invalid type (list) for variable 'log_X_train'

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

谢谢

解决方案 1

log_y_trainlog_X_train绑定到一个data.frame中,这样就可以在formula中使用" ~ ."来表示[=13=中的所有变量].

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)