Данные здесь - это данные «продаж» с двумя столбцами цена и объем продаж и 16 строками, например,
price sales
49 81996
46 91735
50 70830
45 101192
51 78319
47 105369
47 68564
46 95523
49 88834
46 89511
45 107836
52 81410
50 67817
54 59207
50 83310
46 71431
в приведенном ниже коде. Используя «dim (my.boot.price)», это может бытьпоказал, что у нас есть 101 значения во входных данных, но результаты показывает нам, у нас есть 303 строки.Зачем?Пожалуйста, исправьте прилагаемый скрипт.
#=== bootstrapping prediction price range
library(boot)
# bootstrap function
my.boot <- function(formula, data, indices, price) {
d <- data[indices,]
fit <- lm(formula, data=d)
my.new.data<-data.frame(price)
pred_interval <- predict(fit, newdata=my.new.data, interval="prediction",
level = 0.95)
colnames(pred_interval)[2:3]<-c("pred.lwr","pred.upr")
# return the prediction
return(pred_interval)
}
###############################################
# run the bootstrap
# determine the single value to bootstrap
my.boot.price=data.frame(price=seq(45,55,.1))
dim(my.boot.price)
results <- boot(data=sales, statistic=my.boot,
R=2000, formula=sales~price, price=my.boot.price)
# view results
results