-
-
Notifications
You must be signed in to change notification settings - Fork 23
Open
Description
Hi,
This work shows that we can extend the use of the Bayesian R-square in the bayes_R2 function to a wider range of models. I've suggested some changes to the bayes_R2 function, which you can find below and in the attached file. It is not an issue, but I wanted to know whether to create an issue or submit a direct pull request.
BayesRsquared.pdf
Thank you for considering this.
Best regards,
Abdollah
bayes_R2_new <- function(fit)
{
fam <- family(fit) # family dist. of the response
eta <- posterior_linpred(fit) # linear predictor: eta
mu <- fam$linkinv(eta) # conditional mean
varfit <- apply(mu, 1, var)
varres <- switch(fam$family, gaussian={
as.matrix(fit, pars="sigma")^2
}, binomial={
v <- fam$variance(mu)
apply(v, 1, mean)
}, poisson={
v <- fam$variance(mu)
apply(v, 1, mean)
}, Gamma={
v <- fam$variance(mu)
apply(v, 1, mean) / as.matrix(fit, pars="shape")
}, beta={
v <- fam$variance(mu)
apply(v, 1, mean)
}, neg_binomial_2={
size <- as.matrix(fit, pars="reciprocal_dispersion")
v <- fam$variance(mu, theta=c(size))
apply(v, 1, mean)
}, inverse.gaussian={
v <- family(fit)$variance(mu)
apply(v, 1, mean) / as.matrix(fit, pars="lambda")
}, stop("the speciefied family is not implemented"))
R2 <- varfit / (varres + varfit) # Bayesian R-squared
attributes(R2) <- list(varfit=varfit, varres=varres)
return(R2)
}Metadata
Metadata
Assignees
Labels
No labels