首页 > 解决方案 > r中训练和测试集的划分

问题描述

在 1937 - 1966 的多个时间序列中,我想在每个时间序列中运行一个循环,并在训练集上建立一个简单的模型(前 20 个集和其余 10 个集用作测试集,我使用测试集来预测一个简单的平均模型。我想按照我在第一行从最后一个训练集构建模型并应用于第一行测试集、第二行测试集、第四行测试集的方式来划分训练和测试集和第五行测试集,一种滚动基础,同样的事情继续使用最后一个训练集的第二行......。

Plot  Species Year    Count   Ppt Temp
A   BG  1937    81  33.90833333 14.13181818
A   BG  1938    45  48.18333333 15.14727273
A   BG  1939    96  39.95833333 14.92
A   BG  1940    44  48.36666667 14.27363636
A   BG  1941    24  57.975  14.02
A   BG  1942    8   59.55   13.65727273
A    BG  1943    28  38.3    14.28363636
…………………………………….
A BG 1966  30      33.5          12.366666

A  BD  1937    135 33.90833333 14.13181818
A   BD  1938    91  48.18333333 15.14727273
A   BD  1939    171 39.95833333 14.92
A   BD  1940    88  48.36666667 14.27363636
A   BD  1941    59  57.975  14.02
A   BD  1942    1   59.55   13.65727273
A   BD  1943    1   38.3    14.28363636
……………………………………………………..
A BD   1966   36     28         15.23658

B   BG  1937    34  33.90833333 14.13181818
B   BG  1938    16  48.18333333 15.14727273
B   BG  1939    19  39.95833333 14.92
B   BG  1940    35  48.36666667 14.27363636
B  BG  1941    32  57.975  14.02
B   BG  1942    7   59.55   13.65727273
B  BG  1943    2   38.3    14.28363636
------------------------------------
B BG 1966  4 25   12.259

我的代码是:

    data$groups <- paste(data$Plot, data$Species, sep = "_")
data_by_plot <- split (data$Count, data$groups)
ly <- lapply(data_by_plot, function(df) {
  Training<-df[1:20,]
  Testing<-df[21:30,]
  Mean_model<-lm(count~1, data = Training)
  Prediction<-Testing$Count[i]- Mean_model$coefficients
  return(Prediction)
})

标签: r

解决方案


推荐阅读