我正在尝试执行以下任务:获取一个数据集,并将其提供给多个预先设计的模型,以便我可以看到预测如何根据不同的模型而有所不同。以下是数据通常的样子:
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"
我搜索了 StackOverflow 并找不到尝试这样做的人的具体示例,至少在不必大幅重组他们的模型的情况下是这样。有谁知道可能有一个更好的功能来使我认为是一项相对简单的任务工作,一种更好的方式来构建我的模型/数据,或者对我遇到的这个错误进行简单的修复?提前非常感谢大家。
加载的所有库如下,我相信大部分这些东西都依赖于“modelr”包:
library(dplyr)
library(ggplot2)
library(tidyverse)
library(gridExtra)