使用 map() 在 R 中"spread_predictions"时继续识别特征?



我正在尝试建立一个线性模型,然后根据该线性模型使用新数据进行预测。下面的代码块接受给定的数据集(data1),并根据以下事实生成20个模型:当我按ID和plot分组时,有20个组:

modelobject <- data_1 %>% 
group_by(ID, plot) %>% 
do(model = lm(air_temp ~ water_temp, data = .)) %>% 
ungroup()

现在模型已经设计好了,我想使用map()函数为每个模型跨一组新数据(data_2)进行预测:

modelled_values <- map(modelobject$model, ~ spread_predictions(data = data_2, models = .x))

这工作得很好,除了后续对象modelled_values不具有原始模型的识别特征(即它们给定的ID和绘图),这可以从以下Value列的输出中看到(它产生11列,其中没有一个是识别特征):

Value
List of length 20
A data.frame with 52606 rows and 11 columns
....

我最终不得不假设它们只是按照我产生它们的顺序,并用以下代码样式手动标记每个模型对象:

modelled_values[[1]]$ID <- "ID1"
modelled_values[[2]]$ID <- "ID1"
modelled_values[[3]]$ID <- "ID2"
modelled_values[[4]]$ID <- "ID2"
...

我是否可以将原始模型的识别特征带入这些预测数据?

这样怎么样:

modelobject <- mtcars %>% 
group_by(vs, am) %>% 
do(model = lm(mpg ~ hp, data = .)) 
preds <- modelobject %>% 
group_by(vs, am) %>% 
rowwise %>% 
summarise(preds = list(predict(model, newdata=mtcars)))
preds
# # A tibble: 4 x 3
# # Groups:   vs, am [4]
#     vs    am preds     
# <dbl> <dbl> <list>    
# 1     0     0 <dbl [32]>
# 2     0     1 <dbl [32]>
# 3     1     0 <dbl [32]>
# 4     1     1 <dbl [32]>

在上面的代码中,preds现在是一个具有称为preds的列的标签,其中每个元素都是模型对行中相关vsam值的预测向量。

最新更新