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