为 R 中的拟合点生成多组预测和预测区间
Generating multiple sets of predictions and prediction intervals for fitted points in R
我的目标是创建多个模型,然后使用一个新的数据集,为该新数据集创建预测值以及围绕每个新拟合点的相应预测区间。
引入库:
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,对于每个模型,然后围绕每个拟合点建立预测区间(上界和下界每个点的预测区间,由函数 predict() 生成,当包含参数 interval = "prediction" 时。我成功生成了这样的拟合值:
data_2 <- map(model_dna$model_dna, ~ spread_predictions(data = data_2, models = .x)
但是随后很难为这些新拟合的值添加“upr”和“lwr”列。有没有办法在拟合这些新点时同时“spread_prediction_intervals”?了解如何对多个数据集执行此操作以及如果给定用于生成预测值的模型和一组这些预测值,将能够生成预测区间。非常感谢您的提前帮助。
显然,您可以使用 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)
})
如果您不关心置信区间,可以使用 map
和 add_predictions
或使用 spread_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]])
我的目标是创建多个模型,然后使用一个新的数据集,为该新数据集创建预测值以及围绕每个新拟合点的相应预测区间。
引入库:
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,对于每个模型,然后围绕每个拟合点建立预测区间(上界和下界每个点的预测区间,由函数 predict() 生成,当包含参数 interval = "prediction" 时。我成功生成了这样的拟合值:
data_2 <- map(model_dna$model_dna, ~ spread_predictions(data = data_2, models = .x)
但是随后很难为这些新拟合的值添加“upr”和“lwr”列。有没有办法在拟合这些新点时同时“spread_prediction_intervals”?了解如何对多个数据集执行此操作以及如果给定用于生成预测值的模型和一组这些预测值,将能够生成预测区间。非常感谢您的提前帮助。
显然,您可以使用 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)
})
如果您不关心置信区间,可以使用 map
和 add_predictions
或使用 spread_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]])