我正在尝试使用 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)
现在,我得到了这个状态的输出。假设我有一个带有给定邮政编码的州列表,并且我想在该列表上运行我的模型(数据库)并获得预测,我无法使用上述方法来做到这一点,因为这需要时间。还有其他方法可以做到这一点吗?我在一位绅士的帮助下做了同样的事情,这是我的代码:
pred <- sapply(1:nrow(first), function(row) { predict(basdata,first[row, ],estimator="BMA", interval = "predict", se.fit=TRUE)$Ybma })
basdata:我的模型优先:我正在预测区域的新数据集。现在,我面临的问题是代码需要很长时间才能预测值。它遍历每一行并计算面积。我的数据集中有 150000 行,我会请求是否有人可以帮助我优化此代码的性能。