我正在尝试建立一个线性模型,然后根据该线性模型使用新数据进行预测。下面的代码块接受给定的数据集(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
的列的标签,其中每个元素都是模型对行中相关vs
和am
值的预测向量。