从 R 中的多个模型的一个数据集中获取预测

Getting predictions from one dataset for multiple models in R

我正在尝试执行以下任务:获取一个数据集,并将其输入多个预先设计的模型,以便我可以了解基于不同模型的预测有何不同。以下是数据大致的样子:

data_1:

  Year day station1 station2 station3 hour minute avtemp
1 2020   1    1.124    1.018    0.852   00     30        0.998
2 2020   1    1.123    1.020    0.848   01      0        0.997
3 2020   1    1.119    1.013    0.842   01     30        0.991
4 2020   1    1.124    1.016    0.845   02      0        0.995
5 2020   1    1.124    1.016    0.842   02     30        0.994
6 2020   1    1.124    1.017    0.840   03      0        0.994

然后,模型是使用结构非常相似的单独数据集生成的(除了它们被“stand”划分的事实,我需要为每个实验单元都有一个模型,因此多个模型),使用以下代码:


models_temp <- data_2 %>% 
  group_by(stand) %>% 
  do(modeltt = lm(projectedtemp ~ avtemp, data = .)) %>% 
  ungroup()

如您所见,模型中的自变量与 data_1 中的一列相匹配,因此假设它应该清晰地读取。然后这段代码生成一个包含两列的数据集:一列是支架,一列是每个支架的模型,每个模型的大量数据都以 list() 格式存储,如下所示:

stand             model
trees             list(coefficients = c(`(Intercept)` = 0.66135577718....)
shrubs            list(coefficients = c(`(Intercept)` = 0.6468382809102...)

然后我尝试使用各种版本的 add_predictions,如下所示,使用列表中的这些模型从数据集生成预测:


data_3 <- spread_predictions(data = data_1, models = models_temp)

唉,我收到以下错误:


Error in UseMethod("predict") : 
  no applicable method for 'predict' applied to an object of class "list"


我搜索了 Whosebug,但找不到尝试这样做的具体示例,至少在必须大幅重组模型的情况下是这样。有谁知道可能有更好的功能来完成我认为相对简单的任务,更好的方法来构建我的 models/data,或者对我遇到的这个错误的简单修复?提前谢谢大家。

加载的所有库如下,我相信大部分这些东西都依赖于“modelr”包:

library(dplyr)
library(ggplot2)
library(tidyverse)
library(gridExtra)

我们可以用 map 遍历 list 并应用函数

library(purrr)
map(models_temp$modeltt, ~ spread_predictions(data = data_1, models = .x))