Não foi possível enviar o arquivo. Será algum problema com as permissões?
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior Próxima revisão Ambos lados da revisão seguinte | ||
pessoais:eder [2011/09/12 21:02] eder [section 2] |
pessoais:eder [2011/09/26 08:01] eder [section 5] |
||
---|---|---|---|
Linha 12: | Linha 12: | ||
* Estatística Espacial | * Estatística Espacial | ||
* [[http://www.leg.ufpr.br/doku.php/projetos:gem2|GEM²]] Grupo de estudos em modelos mistos | * [[http://www.leg.ufpr.br/doku.php/projetos:gem2|GEM²]] Grupo de estudos em modelos mistos | ||
- | * {{:pessoais:inlarrblup.r|GWS}} Seleção Genomica Ampla Via ML REML INLA | + | * {{:pessoais:inlarrblup.r|GWS}} Seleção Genômica Ampla Via ML REML INLA |
+ | * {{:pessoais:reml_inla.r|Script}} Modelo seleção Genótipo ambiente via REML ML INLA | ||
+ | * {{:pessoais:linearregression.rnw|Script}} Regressão Linear - inferência via Mínimos quadrados, ML, REML, Gibbs, Metropolis, INLA, dclone ... (Em construção) | ||
===== Disciplinas 2011/1 ===== | ===== Disciplinas 2011/1 ===== | ||
* [[http://www.leg.ufpr.br/doku.php/disciplinas:ce210-2010-02|CE-210: Inferência estatística II]] | * [[http://www.leg.ufpr.br/doku.php/disciplinas:ce210-2010-02|CE-210: Inferência estatística II]] | ||
Linha 22: | Linha 25: | ||
* [[http://www.leg.ufpr.br/doku.php/pessoais:eder:planejamentofito|Planejamento de experimento PG Produção Vegetal UFPR]] | * [[http://www.leg.ufpr.br/doku.php/pessoais:eder:planejamentofito|Planejamento de experimento PG Produção Vegetal UFPR]] | ||
* [[http://www.leg.ufpr.br/doku.php/pessoais:eder:exptempo| Análise de Experimentos de longa duração]] II Reunião Paranaense Ciência do Solo | * [[http://www.leg.ufpr.br/doku.php/pessoais:eder:exptempo| Análise de Experimentos de longa duração]] II Reunião Paranaense Ciência do Solo | ||
- | ===== Códigos ===== | + | ===== Códigos (Em construção) ===== |
<code R> | <code R> | ||
###-----------------------------------------------------------------### | ###-----------------------------------------------------------------### | ||
- | ### Agulha de buffon | + | ### Reversible jump MCMC |
- | buffon <- function(n,l=1,a=1){ | + | ### Modelo 1 y ~ N(b0+b1*x,sigma) |
- | if(a<l){cat('Erro: a < l, deve ser a > l\n')} | + | ### Modelo 1 y ~ N(b0+b1*x+b2*x²,sigma) |
- | if(a>=l){ | + | #browseURL('http://www.icmc.usp.br/~ehlers/bayes/cap4.pdf') |
- | theta <- runif(n,0,pi) | + | # pg 76 |
- | dist <- runif(n,0,a/2) | + | require(MASS)#mvnorm() |
- | inter <- sum(dist <= l/2*sin(theta)) | + | require(MCMCpack)#rinvgamma() dinvgamma() |
- | phi_est <- round((n/inter)*(2*l/a),12) | + | require(coda)#as.mcmc |
- | cat('Número Simulação',n,'phi_estimado',phi_est,'Erro',round(pi-phi_est,12),'\n') | + | rm(list=ls()) |
- | return(c(n,phi_est)) | + | ### Ajustar Prioris |
- | }} | + | ### conferir jacobiano |
+ | |||
+ | rj.modelo <- function(y,x,b0,b1,sigma,b01,b11,b21,sigma1,model,mu=mu,sd=sd,mu0=mu0, | ||
+ | mu02=mu02,V0=V0,V02=V02,v0=v0,tau0=tau0,v02=v02,tau02=tau02){ | ||
+ | if (model == 1){ | ||
+ | u <- rnorm(1, mu,sd) | ||
+ | b0_n <- b0 | ||
+ | b1_n <- b1 | ||
+ | sigma_n <- sigma | ||
+ | b01_n <- b0 * u | ||
+ | b11_n <- b1 * u | ||
+ | b21_n <- u | ||
+ | sigma1_n <- sigma * (u^2) | ||
+ | } | ||
+ | if (model == 2){ | ||
+ | u <- b21 | ||
+ | b0_n <- b01 / u | ||
+ | b1_n <- b11 / u | ||
+ | sigma_n <- sigma1 / (u^2) | ||
+ | b01_n <- b01 | ||
+ | b11_n <- b11 | ||
+ | b21_n <- b21 | ||
+ | sigma1_n <- sigma1 | ||
+ | } | ||
+ | num <- (sum(dnorm(y,b0_n+b1_n*x,sigma_n,log=TRUE))#+ | ||
+ | #sum(dnorm(b0_n,mu0[1],V0[1,1],log=TRUE))+ | ||
+ | #sum(dnorm(b1_n,mu0[1],V0[2,2],log=TRUE))+ | ||
+ | #sum(log(dinvgamma(sigma_n,v0,tau0))) | ||
+ | ) * u^4 | ||
+ | den <- (sum(dnorm(y,b01_n+b11_n*x+b21_n*x^2,sigma1_n,log=TRUE))#+ | ||
+ | # sum(dnorm(b01_n,mu02[1],V02[1,1],log=TRUE))+ | ||
+ | # sum(dnorm(b11_n,mu02[2],V02[2,2],log=TRUE))+ | ||
+ | # sum(dnorm(b21_n,mu02[3],V02[3,3],log=TRUE))+ | ||
+ | # sum(log(dinvgamma(sigma1_n,v02,tau02))) | ||
+ | ) * dnorm(u,0,2) | ||
+ | u = runif(1, 0, 1) | ||
+ | if (model == 1) { | ||
+ | aceita = min(1, num/den) | ||
+ | if (u < aceita) { | ||
+ | model = 2 | ||
+ | b0 <- b0_n | ||
+ | b1 <- b1_n | ||
+ | sigma <- sigma_n | ||
+ | } | ||
+ | } | ||
+ | if (model == 2){ | ||
+ | aceita = min(1, den/num) | ||
+ | if (u < aceita) { | ||
+ | model = 1 | ||
+ | b01 <- b01_n | ||
+ | b11 <- b11_n | ||
+ | b21 <- b21_n | ||
+ | sigma1 <- sigma1_n | ||
+ | } | ||
+ | } | ||
+ | if (model == 1){return(list(model = model,b0=b0,b1=b1,sigma=sigma))} | ||
+ | if (model == 2){return(list(model = model,b01=b01,b11=b11,b21=b21,sigma1=sigma1))} | ||
+ | } | ||
- | n <- seq(10000,1000000,by=20000) | ||
- | res <- matrix(NA,ncol=2,nrow=length(n)) | ||
- | con <- 1 | ||
- | for (i in n){ | ||
- | res[con,] <- buffon(i) | ||
- | con <- con+1 | ||
- | } | ||
- | plot(res,type='l',ylab=expression(pi),xlab='Simulações') | ||
- | abline(h=pi,col='red') | ||
- | ###-----------------------------------------------------------------### | ||
- | ### MOnte carlo | ||
- | ## Calcula a área via simulação de monte carlo | ||
- | ## args: r= raio, s vetor com numero de simulação, plotS plotar a simulação | ||
- | MCcirculo<-function(r,s,plotS=TRUE){ | ||
- | ns<-area<-s | ||
- | r<-r | ||
- | con <- 1 | ||
- | for (j in ns) { | ||
- | #pontos aleatorios | ||
- | x<-runif(j, min=-r, max=r) | ||
- | y<-runif(j, min=-r, max=r) | ||
- | ponto<-cbind(x,y) | ||
- | cont <- sum(apply(ponto,1,function(x){sqrt(sum(x^2))})<r) | ||
- | #plotando Simulação | ||
- | if(plotS==TRUE){ | ||
- | plot(x,y,col="red",type="p",asp=1,lwd=1,xlim=c(-r,r),ylim=c(-r,r), main="Simulação Monte Carlo",sub=j) | ||
- | ang <- seq(0, 2*pi, length = 100) | ||
- | xx <- r * cos(ang);yy <- r * sin(ang) | ||
- | polygon(xx, yy,border = "dark blue",lwd=2) | ||
- | } | ||
- | #Calculo de Area | ||
- | area[con]<-(cont/j)*(r^2)*4 | ||
- | cat(paste(round(area[con],6),j,'\n')) | ||
- | con <- con+1 | ||
- | } | ||
- | plot(ns,area,main="Simulação Monte Carlo",xlab='Número da amostra',ylab='Area') | ||
- | abline(h=pi*r^2,col='red',lwd=2) | ||
| | ||
+ | rjmcmc <- function(nI, x,y,burnIN,mu=mu,sd=sd) { | ||
+ | chain = matrix(NA, nrow = nI, ncol = 8) | ||
+ | nv <- c(0,0) | ||
+ | chain[1,1:8] = c(1) | ||
+ | model = 1 | ||
+ | n <- length(y) | ||
+ | ###----------------------------------------------------------### | ||
+ | ###MOdel 1 | ||
+ | X <- model.matrix(~x) | ||
+ | k<-ncol(X) | ||
+ | #beta | ||
+ | mu0<-rep(0,k) | ||
+ | V0<-100*diag(k) | ||
+ | #sigma2 | ||
+ | v0<-3 | ||
+ | tau0<-100 | ||
+ | #Valores iniciais | ||
+ | chain[1,3] <-sig2draw<- 3 | ||
+ | invV0 <- solve(V0) | ||
+ | XtX <- crossprod(X,X) | ||
+ | Xty <- crossprod(X,y) | ||
+ | invV0_mu0 <- invV0 %*% mu0 | ||
+ | ###----------------------------------------------------------### | ||
+ | # Model 2 | ||
+ | X2 <- cbind(1,x,x^2) | ||
+ | k2<-ncol(X2) | ||
+ | #beta | ||
+ | mu02<-rep(0,k2) | ||
+ | V02<-100*diag(k2) | ||
+ | #sigma2 | ||
+ | v02<-3 | ||
+ | tau02<-100 | ||
+ | #Valores iniciais | ||
+ | chain[1,7] <- sig2draw2<- 3 | ||
+ | invV02 <- solve(V02) | ||
+ | XtX2 <- crossprod(X2,X2) | ||
+ | Xty2 <- crossprod(X2,y) | ||
+ | invV0_mu02 <- invV02 %*% mu02 | ||
+ | ###----------------------------------------------------------### | ||
+ | for (i in 2:nI) { | ||
+ | if (model == 1){ | ||
+ | # Model 1 | ||
+ | #beta | ||
+ | invsig2draw <- 1/sig2draw | ||
+ | V1<-solve(invV0+(invsig2draw) * XtX) | ||
+ | mu1<-V1 %*% (invV0_mu0 + (invsig2draw)* Xty) | ||
+ | chain[i,1:2]<-mvrnorm(n=1,mu1,V1) | ||
+ | # sigma | ||
+ | v1<-(n+2*v0)/2 | ||
+ | yXb <- (y-X %*% chain[i,1:2]) | ||
+ | tyXb <-t(yXb) | ||
+ | tau1<-(0.5)*(tyXb %*% yXb+2*tau0) | ||
+ | chain[i,3] <- sig2draw <- sqrt(rinvgamma(1,v1,tau1)) | ||
+ | } | ||
+ | if (model == 2){ | ||
+ | # Model 2 | ||
+ | #beta | ||
+ | invsig2draw2 <- 1/sig2draw2 | ||
+ | V12<-solve(invV02+(invsig2draw2) * XtX2) | ||
+ | mu12<-V12 %*% (invV0_mu02 + (invsig2draw2)* Xty2) | ||
+ | chain[i,4:6]<-mvrnorm(n=1,mu12,V12) | ||
+ | # sigma | ||
+ | v12<-(n+2*v02)/2 | ||
+ | yXb2 <- (y-X2 %*% chain[i,4:6]) | ||
+ | tyXb2 <-t(yXb2) | ||
+ | tau12<-(0.5)*(tyXb2 %*% yXb2+2*tau02) | ||
+ | chain[i,7] <- sig2draw2 <- sqrt(rinvgamma(1,v12,tau12)) | ||
+ | } | ||
+ | new <- rj.modelo(y,x,chain[i,1],chain[i,2],chain[i,3],chain[i,4],chain[i,5],chain[i,6],chain[i,7],model,mu=mu,sd=sd) | ||
+ | model <- new$model | ||
+ | if (model == 1) { | ||
+ | chain[i, 1] = new$b0 | ||
+ | chain[i, 2] = new$b1 | ||
+ | chain[i, 3] = new$sigma | ||
+ | nv[1] = nv[1] + 1 | ||
+ | } | ||
+ | if (model == 2) { | ||
+ | chain[i, 4] = new$b01 | ||
+ | chain[i, 5] = new$b11 | ||
+ | chain[i, 6] = new$b21 | ||
+ | chain[i, 7] = new$sigma1 | ||
+ | nv[2] = nv[2] + 1 | ||
+ | } | ||
+ | } | ||
+ | chain[,8] <- 1 | ||
+ | chain[is.na(chain[,1]),8] <- 2 | ||
+ | chain <- chain[- c(1:burnIN),] | ||
+ | colnames(chain) <- c('b0_1','b1_1','sigma_1','b0_2','b1_2','b2_2','sigma_2','model') | ||
+ | return(list(as.mcmc(na.omit(chain[,1:3])), | ||
+ | as.mcmc(na.omit(chain[,4:7])), | ||
+ | as.mcmc(na.omit(chain[,8])))) | ||
} | } | ||
- | MCcirculo(1,seq(5,5000,by=1000),plotS=FALSE) | ||
- | ###-----------------------------------------------------------------### | ||
- | ### Inversão de Probabilidade | ||
- | ### OBJ: gerar x~exp transformando de uma uniforme | ||
- | NS <- 10000 | ||
- | lam <- 0.5 | ||
- | #f(x)=exp(lam) F(x)=1-exp(-lam*x), logo: F^-1(x)= -lam^-1*log(1-x) | ||
- | Gexp <- function(x,lam){-(log(1-U))/lam} | ||
- | |||
- | U <- runif(NS) | ||
- | X <- Gexp(U,lam) | ||
- | Y <- rexp(NS,lam) | ||
- | |||
- | par(mfrow=c(1,3)) | ||
- | hist(U,freq=FALSE,main='Uniforme',col='lightblue') | ||
- | lines(density(U),col='red',lwd=2) | ||
- | |||
- | hist(X,freq=FALSE,main='Expoencial via uniforme',col='lightblue') | ||
- | lines(density(X),col='red',lwd=2) | ||
- | lines(curve(dexp(x,lam),min(X),max(X),add=TRUE),col='blue',lwd=2) | ||
- | |||
- | hist(Y,freq=FALSE,main='Expoencial do R',col='lightblue') | ||
- | lines(density(Y),col='red',lwd=2) | ||
- | lines(curve(dexp(x,lam),min(Y),max(Y),add=TRUE),col='blue',lwd=2) | ||
- | ###-----------------------------------------------------------------### | ||
- | ### Metodos de integração numerica | ||
- | #Função | ||
- | f <- function(x){exp(-x^2)} | ||
- | a <- -3 | ||
- | b <- 3 | ||
- | # integrar de -3,3 | ||
- | x <- seq(a,b,l=100) | ||
- | plot(x,f(x),type='l',ylim=c(0,1)) | ||
- | # Integração nativa do R - Gauss–Kronrod quadrature | ||
- | integrate(f,a,b) | ||
- | ###Simpson 1/3 - INtervalos par, igualmente espaçados | ||
- | n <- 1200 | ||
- | xi <- seq(a,b,l=n+1) | ||
- | i <- seq(2,n,by=2) | ||
- | j <- seq(3,n-1,by=2) | ||
- | ((b-a)/n/3)*(f(a)+4*sum(f(xi[i]))+2*sum(f(xi[j]))+f(b)) | ||
- | ###Simpson 3/8 - Intervalos divisiveis por 3 | ||
- | n <- 1200 | ||
- | xi <- seq(a,b,l=n+1) | ||
- | i <- seq(2,n,by=3) | ||
- | j <- seq(4,n-2,by=3) | ||
- | ((3*(b-a)/n)/8)*(f(a)+3*sum(f(xi[i])+f(xi[i+1]))+2*sum(f(xi[j]))+f(b)) | ||
- | ### Quadratura gausiana 3º Ordem | ||
- | w <- c(0.555555,0.888888,0.555555) | ||
- | xi <- c(-0.77459667,0,0.77459667) | ||
- | (b-a)/2*sum(f((b-a)/2*xi+(a+b)/2)*w) | ||
- | ### Quadratura gausiana 4º Ordem | ||
- | w <- c(0.3478548,0.6521452,0.6521452,0.3478548) | ||
- | xi <- c(-0.86113631,-0.33998104,0.33998104,0.86113631) | ||
- | (b-a)/2*sum(f((b-a)/2*xi+(a+b)/2)*w) | ||
- | ### Quadratura gausiana 6º Ordem | ||
- | w <- c(0.1713245,0.3607616,0.4679139,0.4679139,0.3607616,0.1713245) | ||
- | xi <- c(-0.933246951,-0.66120938,-0.23861919,0.23861919,0.66120938,0.933246951) | ||
- | (b-a)/2*sum(f((b-a)/2*xi+(a+b)/2)*w) | ||
- | ###Monte Carlo | ||
- | n <- 10000 | ||
- | xi <- runif(n,a,b) | ||
- | Ls <- max(f(seq(a,b,l=100))) | ||
- | Li <- 0 | ||
- | yi <- runif(n,Li,Ls) | ||
- | sum(f(xi)>=yi)/n*((b-a)*(Ls-Li)) | ||
- | points(xi,yi) | ||
- | ###Laplace | ||
- | #f' <- -2*x*exp(-x^2) | ||
- | D2f <- function(x){(4*x^2-2)*exp(-x^2)} | ||
- | D2f(0) | ||
- | ((2*pi)/((-D2f(0))))^0.5*f(0) | ||
- | ##Avaliando | ||
- | x <- seq(a,b,l=100) | ||
- | plot(x,f(x),type='l',ylim=c(0,2)) | ||
- | lines(x,((2*pi)/((-D2f(0))))^0.5*f(x),col="red") | ||
- | ###------------------------------------------------------------### | ||
- | ###------------------------------------------------------------### | ||
- | ### Solução analitica, númerica e por simulação do modelo | ||
- | # X ~ B(n,p) | ||
- | # p ~ Beta(alfa,beta) | ||
- | ###------------------------------------------------------------### | ||
- | ###------------------------------------------------------------### | ||
- | require(sfsmisc) | ||
- | require(latticeExtra) | ||
- | require(MASS) | ||
- | #browseURL('http://cs.illinois.edu/class/sp10/cs598jhm/Slides/Lecture02HO.pdf') | ||
- | |||
- | ###------------------------------------------------------------### | ||
- | ###------------------------------------------------------------### | ||
- | ### grid de p | ||
- | p <- seq(0,0.99999,by=0.001) | ||
- | ### Priori | ||
- | alfa <- 1 | ||
- | beta <- 1 | ||
- | p.priori <- dbeta(p,alfa,beta) | ||
- | ### Verossimilhança | ||
- | n <- 1000 | ||
- | x <- rbinom(1,n,0.3) | ||
- | vero <- function(p,n,x){exp(sum(dbinom(x,n,p,log=TRUE)))} | ||
- | p.vero <- apply(matrix(p),1,vero,n=n,x=x) | ||
- | ###------------------------------------------------------------### | ||
- | ###------------------------------------------------------------### | ||
- | ### Solução analitica | ||
- | ### Posteriori | ||
- | p.posteA <- dbeta(p,alfa+sum(x),beta+sum(n-x)) | ||
- | ### Plotando | ||
- | doubleYScale(xyplot(p.priori + p.posteA ~ p, foo, type = "l",lwd=3), | ||
- | xyplot(p.vero ~ p, foo, type = "l",lwd=2,lty=2), | ||
- | style1 = 0, style2 = 3, add.ylab2 = TRUE, | ||
- | text = c("Priori", "Posteriori", "Verossimilhança"), columns = 3) | ||
- | ### confirmando se a posteriori é uma fdp | ||
- | integrate.xy(p,p.posteA) | ||
- | ###------------------------------------------------------------### | ||
- | ###------------------------------------------------------------### | ||
- | ### INtegração númerica para normalização | ||
- | ### posteriori | ||
- | p.posteN <- (p.priori*p.vero)/(integrate.xy(p,p.priori*p.vero)) | ||
- | ### Plotando | ||
- | doubleYScale(xyplot(p.priori + p.posteN ~ p, foo, type = "l",lwd=2), | ||
- | xyplot(p.vero ~ p, foo, type = "l",lwd=2,lty=2), | ||
- | style1 = 0, style2 = 3, add.ylab2 = TRUE, | ||
- | text = c("Priori", "Posteriori", "Verossimilhança"), columns = 3) | ||
- | ### confirmando se a posteriori é uma fdp | ||
- | integrate.xy(p,p.posteN) | ||
- | ###------------------------------------------------------------### | ||
- | ###------------------------------------------------------------### | ||
- | ### Amostragem da posteriori | ||
- | ns <- 100000 | ||
- | theta_chapeu <- sum(x)/(n*length(x)) | ||
- | theta_i <- rbeta(ns,alfa,beta) | ||
- | u_i <- runif(ns,0,1) | ||
- | crite <- u_i <= ((dbeta(theta_i,alfa,beta)*apply(matrix(theta_i),1,vero,n=n,x=x))/ | ||
- | (dbeta(theta_chapeu,alfa,beta)*vero(theta_chapeu,n=n,x=x))) | ||
- | a.posteriori <- theta_i[crite] | ||
- | mean(a.posteriori,na.rm=TRUE) | ||
- | ### Taxa Aceitação | ||
- | sum(crite)/ns | ||
- | ###------------------------------------------------------------### | ||
- | ###------------------------------------------------------------### | ||
- | ### Comparando os resultados | ||
- | hist(a.posteriori,prob=TRUE) | ||
- | rug(a.posteriori) | ||
- | lines(density(a.posteriori)) | ||
- | lines(p,p.posteA,col='red',lwd=3) | ||
- | lines(p,p.posteN,col='blue',lty=2) | ||
- | legend('topleft',c('Amostragem','Analitico','Númerica'),lty=c(1,1,2),col=c('black','red','blue')) | ||
- | ### Intervalos via verosimilhança aproximado | + | x <- 1:10 |
- | theta_chapeu+c(-1,1)*1.96*sqrt((theta_chapeu*(1-theta_chapeu))/n) | + | y <- 10+2*x^1+rnorm(x,0,5) |
- | ### IC amostragem | + | plot(x,y) |
- | quantile(a.posteriori,c(0.025,0.975)) | + | res <- rjmcmc(5000,x,y,1,mu=0,sd=100) |
- | ### Analitico da conjugada | + | lapply(res,summary) |
- | qbeta(c(0.025,0.975),alfa+sum(x),beta+sum(n-x)) | + | plot(res[[1]]) |
- | ###------------------------------------------------------------### | + | summary(lm(y~1+I(x))) |
- | ##------------------------------------------------------------### | + | plot(res[[2]]) |
+ | summary(lm(y~1+I(x)+I(x^2))) | ||
+ | plot(res[[3]]) | ||
+ | ##------------------------------------------------------------------### | ||
###-----------------------------------------------------------------### | ###-----------------------------------------------------------------### | ||
### Regressão Beta | ### Regressão Beta | ||
Linha 276: | Linha 246: | ||
plot(grid.phi,2*(max(opt)-opt),type='l') | plot(grid.phi,2*(max(opt)-opt),type='l') | ||
abline(h=3.84) | abline(h=3.84) | ||
- | ############################################################################################## | ||
- | ###--------------------------------------------------### | ||
- | ###--------------------------------------------------### | ||
- | ### Algumas funções para analise utilizando MCMC | ||
- | ### topicos: | ||
- | ### 1) Modelos com JAGS via R (Regressão linear, Logistica) | ||
- | ### 2) dclone juntamente com JAGS | ||
- | ### 3) MCMCsamp em modelos mistos | ||
- | ### 4) MCMCglmm | ||
- | ### 5) MCMCpack | ||
- | ###--------------------------------------------------### | ||
- | ###--------------------------------------------------### | ||
- | rm(list=ls()) | ||
- | ### JAGS | ||
- | require(runjags) | ||
- | ###--------------------------------------------------### | ||
- | #### Exemplo JAGS (função run-jags) | ||
- | ## Exemplo de regressão linear simples | ||
- | # Simulação de dados | ||
- | X <- 1:50 | ||
- | Y <- rnorm(length(X), 2*X + 10, 6) | ||
- | plot(X,Y) | ||
- | ###--------------------------------------------------### | ||
- | ### Inferencia por minimos quadrados | ||
- | m0 <- lm(Y~X) | ||
- | summary(m0) | ||
- | ###--------------------------------------------------### | ||
- | ### Modelo y = a*x+b | ||
- | ### Ajustando com o JAGS | ||
- | ### Priori para a ~ dnorm(0,0.001) | ||
- | ### Priori para b ~ dnorm(0,0.001) | ||
- | ### Priori para sigma ~ exp(1) | ||
- | ### Escrevendo o modelo | ||
- | model <- "model { | ||
- | for(i in 1 : N){ | ||
- | Y[i] ~ dnorm(y.est[i],sigma); | ||
- | y.est[i] <- (a * X[i]) + b; | ||
- | } | ||
- | a ~ dnorm(0,0.001); | ||
- | b ~ dnorm(0,0.001); | ||
- | sigma ~ dexp(1); | ||
- | }" | ||
- | |||
- | ### Data e valor inicial | ||
- | data <- dump.format(list(X=X, Y=Y, N=length(X))) | ||
- | inits0 <- dump.format(list(m=1, c=10, sigma=1)) | ||
- | inits1 <- dump.format(list(m=0, c=0, sigma=1)) | ||
- | # Run the model | ||
- | m1 <- run.jags(model=model, monitor=c("a","b","sigma"), | ||
- | data=data, inits=c(inits0,inits1),n.chains=3, plots = TRUE) | ||
- | ### informações do objeto | ||
- | names(m1) | ||
- | ### Verificando a cadeia | ||
- | plot(m1$mcmc[[1]]) | ||
- | ### Intervalos de credibilidade | ||
- | m1$HPD | ||
- | ### Sumario | ||
- | m1$summary | ||
- | ###--------------------------------------------------### | ||
- | ###--------------------------------------------------### | ||
- | ### Regressão logistica (Livro Introdução Analise Bayesiana) | ||
- | ## pi (n/y) é a proporção de embriões com asas | ||
- | ## ti é a variável “tempo desde a deposição dos ovos” | ||
- | ## função de ligação logit | ||
- | |||
- | t <- c(5,6,8,8,10,11,16,18) | ||
- | n <- c(34,33,33,35,30,27,33,39) | ||
- | y <- c(6,4,23,18,28,27,33,39) | ||
- | |||
- | dados <- cbind(y,n-y) | ||
- | m0 <- glm(dados~t,family=binomial(link=logit)) | ||
- | summary(m0) | ||
- | |||
- | datalist <- dump.format(list(metamorfose=y,total=n,tempo=t)) | ||
- | params <- c("beta0","beta1") | ||
- | inicial <- dump.format(list(beta0=coef(m0)[1], | ||
- | beta1=coef(m0)[2])) | ||
- | ###--------------------------------------------------### | ||
- | modmcmc <- "model{ | ||
- | for(i in 1:length(metamorfose)){ | ||
- | metamorfose[i] ~ dbin(p[i],total[i]) | ||
- | logit(p[i]) <- beta0+beta1*tempo[i] | ||
- | } | ||
- | beta0 ~ dnorm(0,0.001) | ||
- | beta1 ~ dnorm(0,0.001) | ||
- | }" | ||
- | |||
- | ### rodando o modelo | ||
- | modfit <- run.jags(model=modmcmc,monitor=params,data=datalist, | ||
- | inits=inicial,n.chains=1,burnin=10000,thin=3,sample=9000,check.conv=TRUE) | ||
- | ### Verificando a cadeia | ||
- | plot(modfit$mcmc[[1]]) | ||
- | ### Intervalos de credibilidade | ||
- | modfit$HPD | ||
- | ### Sumario | ||
- | modfit$summary | ||
- | ###--------------------------------------------------### | ||
- | ###--------------------------------------------------### | ||
- | ### Modelos com repetição | ||
- | x <- gl(5,4) | ||
- | y <- rnorm(20,10,5) | ||
- | X <- model.matrix(~x) | ||
- | datalist <- dump.format(list(y=y,X=X)) | ||
- | params <- c("beta1","tau") | ||
- | inicial <- dump.format(list(beta1=rep(0,nlevels(x)),tau=1)) | ||
- | ###--------------------------------------------------### | ||
- | modmcmc <- "model{ | ||
- | for(i in 1:length(y)){ | ||
- | y[i] ~ dnorm(yb[i],tau) | ||
- | yb[i] <- inprod(X[i,], beta1) | ||
- | } | ||
- | tau ~ dexp(1); | ||
- | for(j in 1:5){ | ||
- | beta1[j] ~ dnorm(0,0.001) | ||
- | } | ||
- | }" | ||
- | ### rodando o modelo | ||
- | modfit <- run.jags(model=modmcmc,monitor=params,data=datalist, | ||
- | inits=inicial,check.conv=TRUE) | ||
- | ### Verificando a cadeia | ||
- | plot(modfit$mcmc[[1]]) | ||
- | ### Intervalos de credibilidade | ||
- | modfit$HPD | ||
- | ### Sumario | ||
- | modfit$summary | ||
- | #### Minimos quadrados | ||
- | summary(lm(y~x)) | ||
- | ###--------------------------------------------------### | ||
- | ###--------------------------------------------------### | ||
- | ### JAGS com Dclone | ||
- | require(dclone) | ||
- | ## simple regression example from the JAGS manual | ||
- | jfun <- function() { | ||
- | for (i in 1:N) { | ||
- | Y[i] ~ dnorm(mu[i], tau) | ||
- | mu[i] <- alpha + beta * (x[i] - x.bar) | ||
- | } | ||
- | x.bar <- mean(x[]) | ||
- | alpha ~ dnorm(0.0, 1.0E-4) | ||
- | beta ~ dnorm(0.0, 1.0E-4) | ||
- | sigma <- 1.0/sqrt(tau) | ||
- | tau ~ dgamma(1.0E-3, 1.0E-3) | ||
- | } | ||
- | ## data generation | ||
- | set.seed(1234) | ||
- | N <- 100 | ||
- | alpha <- 1 | ||
- | beta <- -1 | ||
- | sigma <- 0.5 | ||
- | x <- runif(N) | ||
- | linpred <- model.matrix(~x) %*% c(alpha, beta) | ||
- | Y <- rnorm(N, mean = linpred, sd = sigma) | ||
- | ## list of data for the model | ||
- | jdata <- list(N = N, Y = Y, x = x) | ||
- | ## what to monitor | ||
- | jpara <- c("alpha", "beta", "sigma") | ||
- | ## fit the model with JAGS | ||
- | regmod <- jags.fit(jdata, jpara, jfun, n.chains = 3) | ||
- | ## model summary | ||
- | summary(regmod) | ||
- | ## data cloning | ||
- | dcdata <- dclone(jdata, 5, multiply = "N") | ||
- | dcmod <- jags.fit(dcdata, jpara, jfun, n.chains = 3) | ||
- | summary(dcmod) | ||
- | #### opções de computação paralela | ||
- | ?jags.parfit | ||
- | ###--------------------------------------------------### | ||
- | ###--------------------------------------------------### | ||
- | ### Modelo misto - Amostrando a posteriorir via MCMC | ||
- | require(lme4) | ||
- | ### Resposta normal | ||
- | m0 <- lmer(Reaction ~ Days + (1|Subject) + (0+Days|Subject), sleepstudy) | ||
- | summary(m0) | ||
- | sampm0 <- mcmcsamp(m0, n = 1000) | ||
- | HPDinterval(sampm0) | ||
- | xyplot(sampm0) | ||
- | qqmath(sampm0) | ||
- | densityplot(sampm0) | ||
- | ###--------------------------------------------------### | ||
- | ###--------------------------------------------------### | ||
- | browseURL("http://cran-r.c3sl.ufpr.br/web/packages/MCMCglmm/vignettes/CourseNotes.pdf") | ||
- | browseURL("http://cran-r.c3sl.ufpr.br/web/packages/MCMCglmm/vignettes/Overview.pdf") | ||
- | browseURL("http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.160.5098&rep=rep1&type=pdf") | ||
- | require(MCMCglmm) | ||
- | ?MCMCglmm | ||
- | data(PlodiaPO) | ||
- | ### Modelo normal | ||
- | model1<-MCMCglmm(PO~1, random=~FSfamily, data=PlodiaPO, verbose=FALSE) | ||
- | summary(model1) | ||
- | plot.MCMCglmm(model1) | ||
- | ### MOdelo binomial | ||
- | model2 <- MCMCglmm(cbind(Pupated, Infected) ~ 1,random=~FSfamily, family = "multinomial2", | ||
- | data = PlodiaR, verbose = FALSE) | ||
- | plot.MCMCglmm(model2) | ||
- | ###--------------------------------------------------### | ||
- | ###--------------------------------------------------### | ||
- | require(MCMCpack) | ||
- | ### Modelo Poisson | ||
- | counts <- c(18,17,15,20,10,20,25,13,12) | ||
- | outcome <- gl(3,1,9) | ||
- | treatment <- gl(3,3) | ||
- | posterior <- MCMCpoisson(counts ~ outcome + treatment) | ||
- | plot(posterior) | ||
- | summary(posterior) | ||
- | ###--------------------------------------------------### | ||
- | ###--------------------------------------------------### | ||
- | ############################################################################################## | ||
</code> | </code> | ||