View source: R/residuals.glmb.R
| residuals.glmb | R Documentation |
Extract deviance residuals from fitted Bayesian GLM objects. The residuals
use the family's deviance residuals function as in residuals.glm
\insertCiteMcCullagh1989glmbayes.
## S3 method for class 'glmb'
residuals(object, ysim = NULL, ...)
## S3 method for class 'rglmb'
residuals(object, ysim = NULL, ...)
## S3 method for class 'lmb'
residuals(object, ysim = NULL, ...)
object |
an object of class |
ysim |
Optional simulated data for the data y. |
... |
further arguments to or from other methods |
These functions are all methods for class glmb, lmb, or summary.glmb objects.
A matrix DevRes of dimension n times p containing
the Deviance residuals for each draw. If ysim is provided, the residuals are based
on a comparison to the simulated data instead. The credible intervals
for residuals based on simulated data should be a more appropriate measure of
whether individual residuals represent outliers or not.
predict.glmb, summary.glmb, glmb,
glmbayes-package; rglmb, rlmb, lmb;
residuals.glm
data(menarche,package="MASS")
## ----Analysis Setup-----------------------------------------------------------
## Number of variables in model
Age=menarche$Age
nvars=2
## Reference Ages for setting of priors and Age_Difference
ref_age1=13 # user can modify this
ref_age2=15 ## user can modify this
## Define variables used later in analysis
Age2=menarche$Age-ref_age1
Age_Diff=ref_age2-ref_age1
mu1=as.matrix(c(0,1.098612),ncol=1)
V1<-1*diag(nvars)
V1[1,1]=0.18687882
V1[2,2]=0.10576217
V1[1,2]=-0.03389182
V1[2,1]=-0.03389182
Menarche_Model_Data=data.frame(Age=menarche$Age,Total=menarche$Total,
Menarche=menarche$Menarche,Age2)
glmb.out1<-glmb(n=1000,cbind(Menarche, Total-Menarche) ~Age2,family=binomial(logit),
pfamily=dNormal(mu=mu1,Sigma=V1),data=Menarche_Model_Data)
# Prediction from original model
pred1=predict(glmb.out1,type="response")
## Posterior predictive check (bayesplot): disabled in package examples.
## Former pp_check.glmb() lives in legacy_code/pp_check.glmb.R — source after
## install.packages("bayesplot") to restore, then:
## bayesplot::pp_check(glmb.out1, ndraws = 100L, fun = "hist")
## Get Original Residuals, their means, and credible bounds
res_out=residuals(glmb.out1)
colMeans(res_out, na.rm=TRUE)
## Set up to simulate new data and residuals
res_mean=colMeans(res_out, na.rm=TRUE)
res_low1=apply(res_out,2,FUN=quantile,probs=c(0.025),na.rm=TRUE)
res_high1=apply(res_out,2,FUN=quantile,probs=c(0.975),na.rm=TRUE)
## Simulate new data and get residuals for simulated data
ysim1=simulate(glmb.out1,nsim=1,seed=10401L,pred=pred1,family="binomial",
prior.weights=weights(glmb.out1))
res_ysim_out1=residuals(glmb.out1,ysim=ysim1)
res_low=apply(res_ysim_out1,2,FUN=quantile,probs=c(0.025),na.rm=TRUE)
res_high=apply(res_ysim_out1,2,FUN=quantile,probs=c(0.975),na.rm=TRUE)
oldpar <- par(no.readonly = TRUE)
par(mar = c(5, 4, 4, 2) + 0.1) # Standard margin setup
# Plot Credible Interval bounds for Deviance Residuals
plot(res_mean~Age,ylim=c(-2.5,2.5),
main="Credible Interval Bound for Menarche - Logit Model Deviance Residuals",
xlab = "Age", ylab = "Avg. Dev. Res")
lines(Age, 0*res_mean,lty=1)
lines(Age, res_low,lty=1)
lines(Age, res_high,lty=1)
lines(Age, res_low1,lty=2)
lines(Age, res_high1,lty=2)
par(oldpar)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.