## ----echo=FALSE,eval=FALSE----------------------------------------------------
# options(width=80)

## ----eval=FALSE---------------------------------------------------------------
# library(catdata)
# data(medcare)
# 
# library(MASS)
# library(pscl)

## ----eval=FALSE---------------------------------------------------------------
# medmale <- medcare[medcare$male==1,]
# medmale <-medmale[medmale$ofp<=30,]

## ----eval=FALSE---------------------------------------------------------------
# set.seed(5)
# 
# subs<-1:nrow(medmale)
# 
# reps <- 50
# 
# squerror1<-squerror3<-squerror4<-squerror5<-squerror6<-squerror7<-c()
# abserror1<-abserror3<-abserror4<-abserror5<-abserror6<-abserror7<-c()
# 
# 
# for(i in 1:reps){
# learn <- sample(subs,600)
# test <- subs[-learn]
# 
# ###########################
# med=glm(ofp ~ hosp+healthpoor+healthexcellent+numchron+age+married+school,
#         family=poisson,data=medmale[learn,])
# l <- predict(med, newdata=medmale[test,], type="response")
# 
# a<-rep(0,length(medmale[test,1]))
# 
# for(j in 1:length(medmale[test,1])){
# while(ppois(a[j],lambda=l[j])<0.5){
# a[j] <- a[j] + 1
# }
# }
# diffs <- a - medmale[test,1]
# squerror1[i]<-mean(diffs^2)
# abserror1[i]<-mean(abs(diffs))
# 
# ######################
# med3=glm.nb(ofp ~ hosp+healthpoor+healthexcellent+numchron+age+married+school,
#             data=medmale[learn,])
# l <- predict(med3, newdata=medmale[test,], type="response")
# a<-rep(0,length(medmale[test,1]))
# 
# for(j in 1:length(medmale[test,1])){
# 
# while((pnbinom(a[j],mu=l[j],size=med3$theta))<0.5){
# a[j] <- a[j]+1
# }
# }
# 
# diffs <- a - medmale[test,1]
# squerror3[i]<-mean(diffs^2)
# abserror3[i]<-mean(abs(diffs))
# 
# ##################
# med4=zeroinfl(ofp ~ hosp+healthpoor+healthexcellent+numchron+age+married+school|1,
#               data=medmale[learn,])
# pii <- 1-predict(med4, newdata=medmale[test,], type="zero")
# mui <- predict(med4, newdata=medmale[test,], type="count")
# a<-rep(0,length(medmale[test,1]))
# 
# for(j in 1:length(medmale[test,1])){
# cdis <- 0
# 
# while(cdis<0.5){
# 
# cdis <- cdis + pii[j]*exp(-mui[j])*((mui[j]^a[j])/factorial(a[j])) + (1-pii[j])*
#   I(a[j]==0)
# a[j] <- a[j]+1
# }
# a[j]<-a[j] - 1
# }
# diffs <- a - medmale[test,1]
# squerror4[i]<-mean(diffs^2)
# abserror4[i]<-mean(abs(diffs))
# 
# ################################
# med5=zeroinfl(ofp ~ hosp+healthpoor+healthexcellent+numchron+age+married+school,
#               data=medmale[learn,])
# 
# pii <- 1-predict(med5, newdata=medmale[test,], type="zero")
# mui <- predict(med5, newdata=medmale[test,], type="count")
# a<-rep(0,length(medmale[test,1]))
# 
# for(j in 1:length(medmale[test,1])){
# cdis <- 0
# 
# while(cdis<0.5){
# 
# cdis <- cdis + pii[j]*exp(-mui[j])*((mui[j]^a[j])/factorial(a[j])) + (1-pii[j])*
#   I(a[j]==0)
# a[j] <- a[j]+1
# }
# a[j]<-a[j] - 1
# }
# 
# diffs <- a - medmale[test,1]
# 
# squerror5[i]<-mean(diffs^2)
# abserror5[i]<-mean(abs(diffs))
# 
# ####################
# med6=hurdle(ofp ~ hosp+healthpoor+healthexcellent+numchron+age+married+school|1,
#             data=medmale[learn,])
# mui <- predict(med6, newdata=medmale[test,], type="count")
# gammai <- predict(med6, newdata=medmale[test,], type="zero")
# pii2<-1-gammai*(1-exp(-mui))
# 
# 
# fa<-function(z,a){
# ((z^a)/factorial(a))*exp(-z) }
# 
# a<-rep(0,length(medmale[test,1]))
# 
# for(j in 1:length(medmale[test,1])){
# cdis <- pii2[j]
# 
# if(cdis<0.5){
# while(cdis<0.5){
# #while((1-cumdist)>eps){
# cdis <- cdis + fa(z=mui[j],a=(a[j]+1))*gammai[j]
# a[j]<-a[j]+1
# #a <- a+1
# }
# }
# else{a[j]<-0}
# }
# 
# diffs <- a - medmale[test,1]
# 
# squerror6[i]<-mean(diffs^2)
# abserror6[i]<-mean(abs(diffs))
# 
# #######################
# med7=hurdle(ofp ~ hosp+healthpoor+healthexcellent+numchron+age+married+school,
#             data=medmale[learn,])
# mui <- predict(med7, newdata=medmale[test,], type="count")
# gammai <- predict(med7, newdata=medmale[test,], type="zero")
# pii2<-1-gammai*(1-exp(-mui))
# 
# fa<-function(z,a){
# ((z^a)/factorial(a))*exp(-z) }
# 
# a<-rep(0,length(medmale[test,1]))
# 
# for(j in 1:length(medmale[test,1])){
# cdis <- pii2[j]
# 
# if(cdis<0.5){
# while(cdis<0.5){
# #while((1-cumdist)>eps){
# cdis <- cdis + fa(z=mui[j],a=(a[j]+1))*gammai[j]
# a[j]<-a[j]+1
# }
# }
# else{a[j]<-0}
# }
# 
# diffs <- a - medmale[test,1]
# 
# squerror7[i]<-mean(diffs^2)
# abserror7[i]<-mean(abs(diffs))
# 
# }

## ----fig.width=12,eval=FALSE--------------------------------------------------
# par(mgp=c(0,3,0))
# boxplot(abserror1,abserror3,abserror4,abserror5,abserror6,abserror7,
# names=c("Poisson","Negative\nBinomial","Zero\nInflated 1","Zero\nInflated 2",
#         "Hurdle 1","Hurdle 2"),cex=1.3,cex.axis=1.6)

## ----eval=FALSE---------------------------------------------------------------
# library(catdata)
# data(medcare)
# #attach(medcare)
# 
# library(MASS)
# library(pscl)
# 
# medmale <- medcare[medcare$male==1,]
# medmale <-medmale[medmale$ofp<=30,]
# set.seed(5)
# 
# subs<-1:nrow(medmale)
# 
# reps <- 50
# 
# eps <- 1e-5
# 
# lrps <- lrps3 <- lrps4 <- lrps5 <- lrps6 <- lrps7 <- rep(0,reps)
# 
# for(i in 1:reps){
# learn <- sample(subs,600)
# test <- subs[-learn]
# 
# 
# med=glm(ofp ~ hosp+healthpoor+healthexcellent+numchron+age+married+school,
#         family=poisson,data=medmale[learn,])
# 
# l <- predict(med, newdata=medmale[test,], type="response")
# 
# 
# for(j in 1:length(medmale[test,1])){
# for(a in 0:100){
# #while((1-ppois(a,lambda=l[j]))>eps){
# lrps[i] <- lrps[i] + (ppois(a,lambda=l[j]) - I(medmale[test,1][j] <= a))^2
# #a <- a+1
# }
# }
# 
# 
# med3=glm.nb(ofp ~ hosp+healthpoor+healthexcellent+numchron+age+married+school,
#             data=medmale[learn,])
# l <- predict(med3, newdata=medmale[test,], type="response")
# 
# for(j in 1:length(medmale[test,1])){
# #a <- 0
# for (a in 0:100){
# #while((1-pnbinom(a,mu=l[j],size=med3$theta))>eps){
# lrps3[i] <- lrps3[i] + (pnbinom(a,mu=l[j],size=med3$theta) -
#   I(medmale[test,1][j] <= a))^2
# #a <- a+1
# }
# }
# 
# 
# med4=zeroinfl(ofp ~ hosp+healthpoor+healthexcellent+numchron+age+married+school|1,
#               data=medmale[learn,])
# pii <- 1-predict(med4, newdata=medmale[test,], type="zero")
# mui <- predict(med4, newdata=medmale[test,], type="count")
# 
# 
# for(j in 1:length(medmale[test,1])){
# a <- 0
# cumdist<-(1-pii[j])
# #cumdist <- 0
# for (a in 0:100){
# #while((1-cumdist)>eps){
# cumdist <- cumdist + pii[j]*exp(-mui[j])*(mui[j]^a)*(factorial(a)^(-1))
# lrps4[i] <- lrps4[i] + as.numeric((cumdist - I(medmale[test,1][j] <= a))^2)
# #a <- a+1
# }
# }
# 
# 
# med5=zeroinfl(ofp ~ hosp+healthpoor+healthexcellent+numchron+age+married+school,
#               data=medmale[learn,])
# pii <- 1-predict(med5, newdata=medmale[test,], type="zero")
# mui <- predict(med5, newdata=medmale[test,], type="count")
# 
# for(j in 1:length(medmale[test,1])){
# a <- 0
# cumdist<-(1-pii[j])
# #cumdist <- 0
# for (a in 0:100){
# #while((1-cumdist)>eps){
# cumdist <- cumdist + pii[j]*exp(-mui[j])*(mui[j]^a)*(factorial(a)^(-1))
# lrps5[i] <- lrps5[i] + as.numeric((cumdist - I(medmale[test,1][j] <= a))^2)
# #a <- a+1
# }
# }
# 
# 
# med6=hurdle(ofp ~ hosp+healthpoor+healthexcellent+numchron+age+married+school|1,
#             data=medmale[learn,])
# mui <- predict(med6, newdata=medmale[test,], type="count")
# gammai <- predict(med6, newdata=medmale[test,], type="zero")
# pii2<-1-gammai*(1-exp(-mui))
# 
# #rr<-coef(med6,model="zero")
# 
# #pii<-exp(rr)/(1+exp(rr))
# 
# #ga<-(1-pii)/(1-exp(-mui))
# 
# fa<-function(z,a){
# ((z^a)/factorial(a))*exp(-z) }
# 
# for(j in 1:length(medmale[test,1])){
# cumdist <- pii2[j]
# 
# for(a in 1:100){
# #while((1-cumdist)>eps){
# cumdist <- cumdist + fa(z=mui[j],a=a)*gammai[j]
# lrps6[i] <- lrps6[i] + as.numeric((cumdist - I(medmale[test,1][j] <= a))^2)
# 
# #a <- a+1
# }
# }
# 
# 
# 
# med7=hurdle(ofp ~ hosp+healthpoor+healthexcellent+numchron+age+married+school,
#             data=medmale[learn,])
# mui <- predict(med7, newdata=medmale[test,], type="count")
# gammai <- predict(med7, newdata=medmale[test,], type="zero")
# pii2<-1-gammai*(1-exp(-mui))
# 
# fa<-function(z,a){
# ((z^a)/factorial(a))*exp(-z) }
# 
# for(j in 1:length(medmale[test,1])){
# cumdist <- pii2[j]
# 
# for(a in 1:100){
# #while((1-cumdist)>eps){
# cumdist <- cumdist + fa(z=mui[j],a=a)*gammai[j]
# lrps7[i] <- lrps7[i] + as.numeric((cumdist - I(medmale[test,1][j] <= a))^2)
# 
# #a <- a+1
# }
# }
# 
# }
# 
# 
# lrps <-lrps/length(medmale[test,1])
# lrps3 <-lrps3/length(medmale[test,1])
# lrps4 <-lrps4/length(medmale[test,1])
# lrps5 <-lrps5/length(medmale[test,1])
# lrps6 <-lrps6/length(medmale[test,1])
# lrps7 <-lrps7/length(medmale[test,1])

## ----fig.width=12,eval=FALSE--------------------------------------------------
# par(mgp=c(0,3,0))
# boxplot(lrps,lrps3,lrps4,lrps5,lrps6,lrps7,
# names=c("Poisson","Negative\nBinomial","Zero\nInflated 1","Zero\nInflated 2",
#         "Hurdle 1","Hurdle 2"),cex=1.3,cex.axis=1.6)
# 

## ----echo=FALSE,results='hide',eval=FALSE-------------------------------------
# detach(package:pscl)

