bounty还有4天到期。回答此问题可获得+50声望奖励。user8460166希望引起更多关注此问题。
我正在使用Brms
软件包拟合贝叶斯模型来预测考试分数。我想知道如何使用LOO
软件包计算基于“留一法交叉验证”(LOO)的“平均绝对误差”,但我找不到任何与如何自己实现它相关的信息。
如果有人能向我演示如何根据LOO计算MAE,我将不胜感激。
下面是一个可复制的示例代码:
set.seed(123) # for reproducibility
n <- 100 # number of observations
predictor_1 <- rnorm(n)
predictor_2 <- rnorm(n)
test_score <- 5 + 2*predictor_1 + 3*predictor_2 + rnorm(n)
data <- data.frame(test_score, predictor_1, predictor_2)
head(data)
fit <- brm(test_score ~ predictor_1 + predictor_2, data = data)
predicted_test_score <- predict(fit)
# calculate mean absolute error
mae <- mean(abs(predicted_test_score - data$test_score))
mae
1条答案
按热度按时间rqmkfv5c1#
为了使用
loo
包基于LOO
计算MAE
,您需要使用brms
包中的brm
函数拟合贝叶斯模型,然后使用loo
函数执行留一法交叉验证。此外,需要从brmsfit
对象中提取逐点对数似然矩阵,并计算期望对数逐点预测密度(ELPD)差异使用loo::loo_compare
函数。最后,您必须计算LOO平均绝对误差。