#r #simulation #loess
#r #Симуляция #лесс
Вопрос:
Используя loess (y ~ x) и predict, я нашел оценку Лесса случайной величины в R. Теперь я хочу выполнить 100 симуляций по методу Монте-Карло, чтобы найти стандартную ошибку. Я использовал следующий R-код, но он возвращает одно и то же значение во всех 100 симуляциях. Пожалуйста, скажите мне, где я ошибся.
set.seed(6)
pn = replicate(100,predict(fit,data=data.frame(X=78)),simplify=FALSE)
plot(pn)
sd(pn)
Комментарии:
1. если вы всегда предоставляете один и тот же X (т. е. X = 78) и подгоняете, вы получите обратно то же значение. Что именно вы пытаетесь сделать
2. Если вы прогнозируете модель в той же точке
data.frame(X=78)
, результат будет таким же.3. Оценка Лесса является случайной величиной. Я пытаюсь найти стандартную ошибку оценки Лесса, выполнив 1000 симуляций по методу Монте-Карло.
4. Я подозреваю, что вы хотите найти стандартную ошибку прогнозирования? Обычным подходом был бы bootstrap.
Ответ №1:
Как было объяснено в комментариях: Если вы даете predict один и тот же fit
объект и одно и то же X
значение, он всегда будет возвращать один и тот же ответ. Есть два очевидных способа подойти к этому.
Первое: predict
функция, которую вы используете, действительно predict.loess
из stats
пакета. У нее есть аргумент, se
и при вызове predict(fit, ..., se = TRUE)
он вернет оценочную стандартную ошибку для каждого прогнозируемого значения. Итак, проверьте, делает ли это то, что вы хотите, без того, чтобы вы программировали это для себя: ср.http://www.rdocumentation.org/packages/stats/versions/3.6.2/topics/predict.loess
Второе: Если вы хотите получить разные прогнозы от вашего predict
вызова, вам нужно будет передать ему разные fit
объекты. Вы могли бы получить это, загрузив данные, которые вы передаете loess
als Roland, предложенные в комментариях.
Комментарии:
1. Спасибо вам всем. Большое вам спасибо @Bernhard