如何在 R 中对超过 2 个响应类执行逻辑回归

机器算法验证 r 回归 物流 预测模型
2022-03-13 20:10:07

我想预测油价对哥伦比亚石油公司股价的影响。我计划对此使用带有分类变量的逻辑回归(根据股价的方向向上或向下)。这是我的数据集的一部分:

Minute  ecopet  profit  sum_profit   direccion  cl1_chg   sum_cl1    direccion_cl1
571     2160     0       10           Up         -0.03     0.00      Down
572     2160     0        0           Neutral     0.07    -0.03      Down
573     2160     0       -5           Down       -0.08     0.04      Up
574     2160     0       -5           Down       -0.07    -0.04      Down
575     2160     5       -5           Down       -0.08    -0.11      Down
576     2165     0       -25          Down        0.00    -0.19      Down
577     2165     0       -25          Down       -0.05    -0.19      Down
578     2165     0       -15          Down       -0.17    -0.24      Down
579     2165     5       -15          Down       -0.06    -0.41      Down
580     2170     0       -20          Down        0.03    -0.47      Down
581     2170    -10       0           Neutral     0.04    -0.44      Down

我的因变量是“方向”。但正如你所见,它有 3 个响应类。我知道要在 R 中实现二元逻辑回归,代码是:

glm.fit=glm(direccion~direccion_cl1, data=datos, family=binomial)

我正在处理盘中信息,并计划预测当油价上涨/下跌时(在前 10 分钟内)会发生什么,以及它如何在接下来的 10 分钟内影响股价。

谁能告诉我我该怎么做?我真的不知道如何使用 3 个响应类执行逻辑回归。谢谢!

1个回答

看一下Rmultinom中包nnet的作用:

glm.fit=multinom(direccion~., data=datos)
summary(glm.fit)
#Prediction
predict(glm.fit, newdata, "probs")

您还应该考虑将数据集分为两组:训练和测试,基于训练集构建模型,并在测试集上对其进行测试:

alpha=0.7
d = sort(sample(nrow(datos), nrow(datos)*alpha))
train = datos[d,]
test = datos[-d,]
glm.fit=multinom(direccion~., data=train)
predict(glm.fit, test, "probs")

然后通过将测试集上的预测趋势与实际趋势进行比较来衡量模型的性能。

您可能还需要选择相关阈值以根据您的预测概率做出决定。