【问题标题】:How does R make predictions using Bayesian regression models?R 如何使用贝叶斯回归模型进行预测?
【发布时间】:2020-07-02 16:24:56
【问题描述】:

我在 R 中构建了一个贝叶斯回归模型,并尝试使用它从不在训练集中的记录 X 进行预测。问题是,无论我如何更改 X 中一个自变量的值,预测都保持不变!有人可以阐明如何使用贝叶斯回归模型进行预测吗?这里有一些代码可以让你了解我在做什么:

install.packages("BMA")
library(BMA)

D_for_Bayes_tweaked <- D_for_Bayes

bfit1 <- bic.glm(f = as.formula('freq_iso_chng2 ~ cpi_gasoline_proj + vhcl_age_proj + vhcl_sale_ltruck_proj',), data = D_for_Bayes[D_for_Bayes$year >= 2003 & D_for_Bayes$year <= 2019,], glm.family = Gamma(link = "log"))

(p1 <- predict(bfit1, newdata = D_for_Bayes[D_for_Bayes$year >= 2003 & D_for_Bayes$year <= 2020,], type = "response"))

cpi_gasoline_proj_change <- 0.025

new_gas_cpi <- D_for_Bayes[D_for_Bayes$year == 2020,]$cpi_gasoline_proj + cpi_gasoline_proj_change

D_for_Bayes_tweaked[D_for_Bayes_tweaked$year == 2020,]$cpi_gasoline_proj <- new_gas_cpi

bfit2 <- bic.glm(f = as.formula('freq_iso_chng2 ~ cpi_gasoline_proj + vhcl_age_proj + vhcl_sale_ltruck_proj',), data = D_for_Bayes_tweaked[D_for_Bayes_tweaked$year >= 2003 & D_for_Bayes_tweaked$year <= 2019,], glm.family = Gamma(link = "log"))
(p2 <- predict(bfit2, newdata = D_for_Bayes_tweaked[D_for_Bayes_tweaked$year >= 2003 & D_for_Bayes_tweaked$year <= 2020,], type = "response"))

【问题讨论】:

  • 不熟悉BMA,但您是否正在为新X 安装第二个模型?如果是这样,可能是你的问题。尝试使用第一个模型来预测调整后的数据。
  • 不,唯一需要调整的数据是测试数据。 bfit1 和 bfit2 是相同的,但我将一组预测变量输入 bfit1 并将一组更改的预测变量输入 bfit2。无论如何,我确实尝试使用 bfit1 预测 D_for_Bayes_tweaked 中的值,当我使用 bfit1 预测 D_for_Bayes 中的值时,我得到了相同的预测。
  • 嗨!这个问题更多的是关于理论统计,可能不是 stack.overflow 主题。 2 cmets: 1 如果 ypu 正在运行贝叶斯回归,我真的建议使用包 rstanarm。 2 贝叶斯预测是通过后验预测分布来完成的,在贝叶斯正态正态相关性中很容易通过分析得到
  • 这并不是真正的理论。底线是,我需要知道这行代码在做什么: (p1 = 2003 & D_for_Bayes$year
  • “我将一组预测变量输入 bfit1 并将一组更改后的预测变量输入 bfit2” 这两个模型都会给您类似的答案,因为您正在拟合它们来预测相同的响应。他们可能有不同的系数估计,但预测可能几乎相同。在给定的情况下,模型总是尽可能地预测响应。

标签: r regression prediction bayesian


【解决方案1】:

好的,我想出了如何解决我的问题。这是根本问题:我试图预测 2020 年 freq_iso_chng2 的值,但最初,freq_iso_chng2 的 2020 年值是 NA。这会影响预测。如果您将 freq_iso_chng2 的“NA”值替换为任何特定数字,则预测会响应预测变量的变化。不知道为什么会这样,但确实如此。出于某种原因,R 使用贝叶斯模型的预测会根据目标是开始丢失还是开始时的数字而有所不同。

【讨论】:

    猜你喜欢
    • 2016-08-16
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 2016-09-15
    • 2023-04-09
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多