首页 > 解决方案 > 预测序列 R 中的下一个值

问题描述

我正在寻找一个模型来预测下面序列的下一个值。原始数据为:

structure(list(job1category = c(5, 1, 5, 5, 1, 1, 2, 1, 1, 1, 
1, 1, 1, 1, 5, 1, 1, 5, 1, 1, 5, 5, 5, 1, 1, 5, 1, 1, 2, 5, 1, 
5, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 5, 3, 5, 5, 1, 5, 5, 
5, 5, 4, 5, 1, 4, 1, 1, 1, 1, 4, 1, 5, 3, 1, 5, 5, 5, 5, 5, 5, 
5, 5, 5, 5, 1, 5, 3, 5, 5, 1, 5, 1, 5, 1, 5, 1, 1, 1, 1, 1, 3, 
1, 1, 1, 5, 5, 5), job2category = c(5, 5, 1, 2, 5, 1, 2, 2, 5, 
1, 1, 5, 2, 1, 5, 5, 5, 1, 1, 1, 1, 1, 5, 1, 1, 1, 5, 5, 5, 5, 
1, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 1, 1, 5, 5, 5, 3, 1, 1, 
5, 3, 1, 1, 5, 5, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 
5, 5, 5, 5, 5, 5, 3, 3, 3, 5, 5, 5, 5, 5, 1, 5, 1, 1, 5, 5, 5, 
3, 1, 1, 1, 5, 5, 5), job3category = c(5, 5, 1, 2, 5, 1, 2, 2, 
5, 1, 1, 5, 2, 1, 5, 5, 5, 1, 1, 1, 1, 1, 5, 1, 1, 1, 5, 5, 5, 
5, 1, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 1, 1, 5, 5, 5, 3, 1, 
1, 5, 3, 1, 1, 5, 5, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 
3, 5, 5, 5, 5, 5, 5, 3, 3, 3, 5, 5, 5, 5, 5, 1, 5, 1, 1, 5, 5, 
5, 3, 1, 1, 1, 5, 5, 5), job4category = c(5, 5, 1, 2, 5, 1, 2, 
2, 5, 1, 1, 5, 2, 1, 5, 5, 5, 1, 1, 1, 1, 1, 5, 1, 1, 1, 5, 5, 
5, 5, 1, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 1, 1, 5, 5, 5, 3, 
1, 1, 5, 3, 1, 1, 5, 5, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
3, 3, 5, 5, 5, 5, 5, 5, 3, 3, 3, 5, 5, 5, 5, 5, 1, 5, 1, 1, 5, 
5, 5, 3, 1, 1, 1, 5, 5, 5)), row.names = c(NA, -100L), class = c("tbl_df", 
"tbl", "data.frame"))

在将 4 列的值合并为一个字符串后,我探索了最常见的数字对,发现 5 5 是第一。

structure(list(Var1 = structure(1:5, .Label = c("5 5", "1 1", 
"1 5", "3 3", "2 2"), class = "factor"), Freq = c(125L, 104L, 
21L, 18L, 9L)), class = "data.frame", row.names = c(NA, -5L))

现在我想预测 5 5 发生后的下一个值。因此,我发现所有序列中任何位置都有 5 5 的序列,并且只查看前 5 个之后的所有内容:

Freq_Top1 <- 
structure(list(data_rel1 = c("5 5 5 5", "1 5 5 5", "1 5 5 5", 
"1 5 5 5", "1 5 5 5", "5 5 5 5", "1 5 5 5", "1 5 5 5", "5 5 5 5", 
"1 5 5 5", "1 5 5 5", "2 5 5 5", "5 5 5 5", "5 5 5 5", "1 5 5 5", 
"1 5 5 5", "1 5 5 5", "5 5 5 5", "3 5 5 5", "5 5 5 5", "5 5 5 5", 
"5 5 5 5", "1 5 5 5", "1 5 5 5", "4 5 5 5", "1 5 5 5", "5 5 5 5", 
"3 5 5 5", "1 5 5 5", "5 5 5 5", "5 5 5 5", "5 5 5 5", "5 5 5 5", 
"5 5 5 5", "5 5 5 5", "5 5 5 5", "5 5 5 5", "1 5 5 5", "5 5 5 5", 
"1 5 5 5", "5 5 5 5", "1 5 5 5", "5 5 5 5", "5 5 5 5", "1 5 5 5", 
"1 5 5 5", "1 5 5 5", "5 5 5 5", "5 5 5 5", "5 5 5 5")), row.names = c(NA, 
-50L), class = c("tbl_df", "tbl", "data.frame"))

我曾尝试使用 PSF 库,但以下代码给了我一个错误。我是否需要对数据进行更多预处理?还是有更好的方法来预测下一个值?

nottem_model <- psf(Freq_Top1)
Error in data - dmin : non-numeric argument to binary operator

由于我提供给模型的数据不平衡,预测的结果显然会显示值 5,但我仍在寻找可以进行预测的模型。任何提示表示赞赏!

标签: rsequencepredictforecast

解决方案


推荐阅读