makeadj<-function(nei,k) { nnei<-length(nei) adj<-matrix(nrow=1,ncol=k,0) adj[1,nei]<-1 return(adj) } makeadjfull<-function(nei) { #passfunctiona'connection'matrixi.e. # #(2,3,4,0 #3,4,7,0 # 5,6,7,8 #impliestheneighboursof1are2,3,4etc k<-nrow(nei) adj<-matrix(nrow=k,ncol=k,0) for(i in 1:k) { adj[i,nei[,i]]<-1 } return(adj) } global.lb<-function(obs,exd) { # # returnsestimatedrrusinggloballinearbayesofmarshall(1991) # # smrhat=estimatedrelativerisks # sumexd<-sum(exd) mbar<-sum(obs)/sumexd s2<-sum(exd*(obs/exd-mbar)^2)/sumexd s2<-max(0,s2) cbar<-(s2-mbar/sumexd)/(s2-mbar/sumexd+mbar/exd) smrhat<-mbar+cbar*(obs/exd-mbar) return(smrhat) } gampoi<-function(niter,obs,exd) { # # returnsestimatedrr'susingmomentmatching # #smrhat=estimatedrelativerisks #a,v=estimatedpriorparameters v<-1.0 a<-1.0 n<-length(obs) for(i in 1:niter) { smrhat<-(obs+v)/(exd+a) lhs1<-sum(smrhat)/n priormean<-v/a var1<-1+a/exd var2<-smrhat-priormean var2<-var2*var2 lhs2<-sum(var1*var2) a<-lhs1/lhs2 v<-lhs1*a } return(smrhat,a,v) } local.lb<-function(obs,exd,adj) { # # returnsestimatedrrusinglocallinearbayesofmarshall(1991) # # smrhat=estimatedrelativerisks # n<-length(obs) smrhat<-vector(length=n) for(i in 1:n) { sumexd<-sum(exd*adj[,i]) mbar<-sum(obs*adj[,i])/sumexd s2<-sum(exd*(obs/exd-mbar)^2*adj[,i])/sumexd s2<-max(0,s2) cbar<-(s2-mbar/sumexd)/(s2-mbar/sumexd+mbar/exd) smrhat[i]<-(mbar+cbar*(obs/exd-mbar))[i] } return(smrhat) }