使用 caret::train 包计算具有 beta-binomial 误差的 glmms 的预测误差 (MdAE)
Using the caret::train package for calculating prediction error (MdAE) of glmms with beta-binomial errors
问题大致如题。我想将 caret::train
函数与使用 glmmTMB
包制作的 beta-binomial 模型一起使用(尽管我不反对其他能够拟合 beta-binomial 模型的函数)来计算中值绝对误差 (MdAE)通过折叠刀(留一法)交叉验证进行估计。 glmmTMBControl
函数已经能够估计最佳色散参数,但我希望也能以某种方式保留此信息……或者让 caret 进行计算?
我正在使用的数据集如下所示:
df <- data.frame(Effect = rep(seq(from = 0.05, to = 1, by = 0.05), each = 5), Time = rep(seq(1:20), each = 5))
理想情况下,我可以像这样将 glmmTMB
函数传递给 trainControl
:
BB.glmm1 <- train(Time ~ Effect,
data = df, method = "glmmTMB",
method = "", metric = "MAD")
输出将与 train 中包含的示例相同,尽管可能包含对色散参数的估计。
尽管我绝不反对变通办法 - 在此先感谢您!
我不确定如何在不创建自定义方法的情况下使用插入符号执行所需的操作,但我相信使用 for
(lapply
) 循环很容易实现它。
在示例中,我将使用 sleepstudy
数据集,因为您的示例数据会引发一堆警告。
library(glmmTMB)
执行 LOOCV - 对于每一行,创建一个没有该行的模型并对该行进行预测:
data(sleepstudy,package="lme4")
LOOCV <- lapply(1:nrow(sleepstudy), function(x){
m1 <- glmmTMB(Reaction ~ Days + (Days|Subject),
data = sleepstudy[-x,])
return(predict(m1, sleepstudy[x,], type = "response"))
})
获取残差的中位数(我认为这是 MdAE?如果不是 post 请评论其计算方式):
median(abs(unlist(LOOCV) - sleepstudy$Reaction))
问题大致如题。我想将 caret::train
函数与使用 glmmTMB
包制作的 beta-binomial 模型一起使用(尽管我不反对其他能够拟合 beta-binomial 模型的函数)来计算中值绝对误差 (MdAE)通过折叠刀(留一法)交叉验证进行估计。 glmmTMBControl
函数已经能够估计最佳色散参数,但我希望也能以某种方式保留此信息……或者让 caret 进行计算?
我正在使用的数据集如下所示:
df <- data.frame(Effect = rep(seq(from = 0.05, to = 1, by = 0.05), each = 5), Time = rep(seq(1:20), each = 5))
理想情况下,我可以像这样将 glmmTMB
函数传递给 trainControl
:
BB.glmm1 <- train(Time ~ Effect,
data = df, method = "glmmTMB",
method = "", metric = "MAD")
输出将与 train 中包含的示例相同,尽管可能包含对色散参数的估计。
尽管我绝不反对变通办法 - 在此先感谢您!
我不确定如何在不创建自定义方法的情况下使用插入符号执行所需的操作,但我相信使用 for
(lapply
) 循环很容易实现它。
在示例中,我将使用 sleepstudy
数据集,因为您的示例数据会引发一堆警告。
library(glmmTMB)
执行 LOOCV - 对于每一行,创建一个没有该行的模型并对该行进行预测:
data(sleepstudy,package="lme4")
LOOCV <- lapply(1:nrow(sleepstudy), function(x){
m1 <- glmmTMB(Reaction ~ Days + (Days|Subject),
data = sleepstudy[-x,])
return(predict(m1, sleepstudy[x,], type = "response"))
})
获取残差的中位数(我认为这是 MdAE?如果不是 post 请评论其计算方式):
median(abs(unlist(LOOCV) - sleepstudy$Reaction))