# Example 1
N = 10; s1=exp(1); s2=exp(2)
y = rbetabin.ab(n=100, size=N, shape1=s1, shape2=s2)
fit = vglm(cbind(y,N-y) ~ 1, betabin.ab, trace=TRUE)
coef(fit, matrix=TRUE)
Coef(fit)
head(fit@misc$rho) # The correlation parameter
head(cbind(fit@y, weights(fit, type="prior")))
# Example 2
fit = vglm(cbind(R,N-R) ~ 1, betabin.ab, data=lirat, tra=TRUE, subset=N>1)
coef(fit, matrix=TRUE)
Coef(fit)
fit@misc$rho # The correlation parameter
t(fitted(fit))
t(fit@y)
t(weights(fit, type="prior"))
# A "loge" link for the 2 shape parameters is a logistic regression:
all.equal(c(fitted(fit)),
c(logit(predict(fit)[,1] - predict(fit)[,2], inverse=TRUE)))
# Example 3, which is more complicated
lirat = transform(lirat, fgrp = factor(grp))
summary(lirat) # Only 5 litters in group 3
fit2 = vglm(cbind(R,N-R) ~ fgrp + hb, betabin.ab(zero=2),
data=lirat, trace=TRUE, subset=N>1)
coef(fit2, matrix=TRUE)
Coef(fit2)
coef(fit2, matrix=TRUE)[,1] - coef(fit2, matrix=TRUE)[,2] # logit(p)
with(lirat, plot(hb[N>1], fit2@misc$rho,
xlab="Hemoglobin", ylab="Estimated rho",
pch=as.character(grp[N>1]), col=grp[N>1]))
# cf. Figure 3 of Moore and Tsiatis (1991)
with(lirat, plot(hb, R/N, pch=as.character(grp), col=grp, las=1,
xlab="Hemoglobin level", ylab="Proportion Dead",
main="Fitted values (lines)"))
smalldf = with(lirat, lirat[N>1,])
for(gp in 1:4) {
xx = with(smalldf, hb[grp==gp])
yy = with(smalldf, fitted(fit2)[grp==gp])
ooo = order(xx)
lines(xx[ooo], yy[ooo], col=gp)
}
Run the code above in your browser using DataLab