R 中的贝叶斯建模
Bayesian Modelling in R
我正在尝试使用 bas 包在 R 中实现贝叶斯模型,并为我的模型设置这些值:
databas <- bas.lm(at_areabuilding ~ ., data = dataCOMMA, method = "MCMC", prior = "ZS-null", modelprior = uniform())
我正在尝试借助特定状态下存在的特定区域来预测给定状态的区域;但对于不同的邮政编码。我的模型基本上找到给定状态的数据中存在的各种邮政编码(为此使用状态索引),然后给出输出。
现在,每当我尝试预测一个州的面积时,我都会给出以下输入:
> UT <- data.frame(zip = 84321, loc_st_prov_cd = "UT" ,state_idx = 7)
> predict_1 <- predict(databas,UT, estimator="BMA", interval = "predict", se.fit=TRUE)
> data.frame('state' = 'UT','estimated area' = predict_1$Ybma)
现在,我得到了这个状态的输出。
假设我有一个带有给定邮政编码的州列表,我想 运行 我的模型 (databas) 在该列表上并获得预测,我不能通过使用上述方法,因为这需要时间。还有其他方法可以做到吗?
我在一位先生的帮助下做了同样的事情,这是我的代码:
pred <- sapply(1:nrow(first), function(row) { predict(basdata,first[row, ],estimator="BMA", interval = "predict", se.fit=TRUE)$Ybma })
basdata:我的模型
第一:我正在预测区域的新数据集。
现在,我面临的问题是代码需要很长时间才能预测值。它遍历每一行并计算面积。我的数据集中有 150000 行,如果有人可以帮助我优化此代码的性能,我会请求。
这样的事情将遍历状态、拉链和索引(我们称之为 states_and_zips
)和 return 预测列表的数据框的每一行。此列表的每个元素(我称之为 pred
)与 state_and_zips
的相应行对应:
pred = lapply(1:nrow(states_and_zips), function(row) {
predict(databas, ~ states_and_zips[row, ],
estimator="BMA", interval = "predict", se.fit=TRUE)$Ybma
})
如果 Ybma
是单个值,则使用 sapply
而不是 lapply
,它将 return 一个预测向量,每个预测向量对应 state_and_zips
,您可以将其作为新列添加到 states_and_zips
。
我正在尝试使用 bas 包在 R 中实现贝叶斯模型,并为我的模型设置这些值:
databas <- bas.lm(at_areabuilding ~ ., data = dataCOMMA, method = "MCMC", prior = "ZS-null", modelprior = uniform())
我正在尝试借助特定状态下存在的特定区域来预测给定状态的区域;但对于不同的邮政编码。我的模型基本上找到给定状态的数据中存在的各种邮政编码(为此使用状态索引),然后给出输出。
现在,每当我尝试预测一个州的面积时,我都会给出以下输入:
> UT <- data.frame(zip = 84321, loc_st_prov_cd = "UT" ,state_idx = 7)
> predict_1 <- predict(databas,UT, estimator="BMA", interval = "predict", se.fit=TRUE)
> data.frame('state' = 'UT','estimated area' = predict_1$Ybma)
现在,我得到了这个状态的输出。 假设我有一个带有给定邮政编码的州列表,我想 运行 我的模型 (databas) 在该列表上并获得预测,我不能通过使用上述方法,因为这需要时间。还有其他方法可以做到吗? 我在一位先生的帮助下做了同样的事情,这是我的代码:
pred <- sapply(1:nrow(first), function(row) { predict(basdata,first[row, ],estimator="BMA", interval = "predict", se.fit=TRUE)$Ybma })
basdata:我的模型 第一:我正在预测区域的新数据集。 现在,我面临的问题是代码需要很长时间才能预测值。它遍历每一行并计算面积。我的数据集中有 150000 行,如果有人可以帮助我优化此代码的性能,我会请求。
这样的事情将遍历状态、拉链和索引(我们称之为 states_and_zips
)和 return 预测列表的数据框的每一行。此列表的每个元素(我称之为 pred
)与 state_and_zips
的相应行对应:
pred = lapply(1:nrow(states_and_zips), function(row) {
predict(databas, ~ states_and_zips[row, ],
estimator="BMA", interval = "predict", se.fit=TRUE)$Ybma
})
如果 Ybma
是单个值,则使用 sapply
而不是 lapply
,它将 return 一个预测向量,每个预测向量对应 state_and_zips
,您可以将其作为新列添加到 states_and_zips
。