1

我的目标是创建多个模型,然后使用新的数据集,为该新数据集创建预测值,并在每个新拟合点周围创建相应的预测区间。

拉入图书馆:

library(purrr)
library(dplyr)
library(modelr)

将 data_1 指定为来自 R 的 DNase 数据集:

data_1 <- DNase

为每次运行创建一个独特的模型:

model_dna <- data_1 %>% group_by(Run) %>% 
  do(model_dna = lm(conc ~ density, data = .)) %>% ungroup()

然后我想用一个新的数据集预测一组点,我们称之为 data_2,对于每个模型,然后围绕每个拟合点建立预测区间(每个点的预测区间的上限和下限,由包含参数区间=“预测”时的函数预测()。我成功地生成了这样的拟合值:

data_2 <- map(model_dna$model_dna, ~ spread_predictions(data = data_2, models = .x) 

但是随后很难为这些新拟合的值添加“upr”和“lwr”列。在拟合这些新点时,有没有办法同时“spread_prediction_intervals”?了解如何对多个数据集执行此操作将非常有帮助,并且如果给定用于生成预测值的模型和一组这些预测值,则能够生成 upr 和 lwr 边界预测区间。非常感谢您提前提供的帮助。

4

1 回答 1

1

显然,您可以使用 的结果自己构建置信区间predict

data_2 <- map(model_dna$model_dna, function(x) {
  preds=predict(x, data_1, se.fit=TRUE)
  mutate(data_1, fit=preds$fit, lwr=fit-preds$se.fit*1.96, upr=fit+preds$se.fit*1.96)
})

如果您不关心置信区间,您可以使用mapwithadd_predictions或 usespread_predictions创建一个大数据框。


data_2 <- map(model_dna$model_dna, ~ add_predictions(data = data_1, model = .x))

data_2=spread_predictions(data_1, mods[[1]], mods[[2]], mods[[3]], mods[[4]], mods[[5]], mods[[6]], 
                          mods[[7]], mods[[8]], mods[[9]], mods[[10]], mods[[11]])
于 2021-03-22T22:31:28.937 回答