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/06/12 16:21] eder [section 5] |
pessoais:eder [2011/06/15 22:07] eder [section 5] |
||
---|---|---|---|
Linha 103: | Linha 103: | ||
### Metodos de integração numerica | ### Metodos de integração numerica | ||
#Função | #Função | ||
- | f <- function(x){1/18*x^2} | + | f <- function(x){exp(-x^2)} |
a <- -3 | a <- -3 | ||
b <- 3 | b <- 3 | ||
- | # Analiticamente | ||
- | (1/18*b^3/3)-(1/18*a^3/3) | ||
# integrar de -3,3 | # integrar de -3,3 | ||
x <- seq(a,b,l=100) | x <- seq(a,b,l=100) | ||
- | plot(x,f(x),type='l') | + | plot(x,f(x),type='l',ylim=c(0,1)) |
# Integração nativa do R - Gauss–Kronrod quadrature | # Integração nativa do R - Gauss–Kronrod quadrature | ||
integrate(f,a,b) | integrate(f,a,b) | ||
###Simpson 1/3 - INtervalos par, igualmente espaçados | ###Simpson 1/3 - INtervalos par, igualmente espaçados | ||
- | n <- 12 | + | n <- 1200 |
xi <- seq(a,b,l=n+1) | xi <- seq(a,b,l=n+1) | ||
i <- seq(2,n,by=2) | i <- seq(2,n,by=2) | ||
Linha 120: | Linha 118: | ||
((b-a)/n/3)*(f(a)+4*sum(f(xi[i]))+2*sum(f(xi[j]))+f(b)) | ((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 | ###Simpson 3/8 - Intervalos divisiveis por 3 | ||
- | n <- 12 | + | n <- 1200 |
xi <- seq(a,b,l=n+1) | xi <- seq(a,b,l=n+1) | ||
i <- seq(2,n,by=3) | i <- seq(2,n,by=3) | ||
Linha 128: | Linha 126: | ||
w <- c(0.555555,0.888888,0.555555) | w <- c(0.555555,0.888888,0.555555) | ||
xi <- c(-0.77459667,0,0.77459667) | 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) | (b-a)/2*sum(f((b-a)/2*xi+(a+b)/2)*w) | ||
### Quadratura gausiana 6º Ordem | ### Quadratura gausiana 6º Ordem | ||
Linha 134: | Linha 136: | ||
(b-a)/2*sum(f((b-a)/2*xi+(a+b)/2)*w) | (b-a)/2*sum(f((b-a)/2*xi+(a+b)/2)*w) | ||
###Monte Carlo | ###Monte Carlo | ||
- | n <- 1000 | + | n <- 10000 |
xi <- runif(n,a,b) | xi <- runif(n,a,b) | ||
Ls <- max(f(seq(a,b,l=100))) | Ls <- max(f(seq(a,b,l=100))) | ||
- | Li <- min(f(seq(a,b,l=100))) | + | Li <- 0 |
yi <- runif(n,Li,Ls) | yi <- runif(n,Li,Ls) | ||
sum(f(xi)>=yi)/n*((b-a)*(Ls-Li)) | sum(f(xi)>=yi)/n*((b-a)*(Ls-Li)) | ||
points(xi,yi) | 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 | ||
+ | theta_chapeu+c(-1,1)*1.96*sqrt((theta_chapeu*(1-theta_chapeu))/n) | ||
+ | ### IC amostragem | ||
+ | quantile(a.posteriori,c(0.025,0.975)) | ||
+ | ### Analitico da conjugada | ||
+ | qbeta(c(0.025,0.975),alfa+sum(x),beta+sum(n-x)) | ||
+ | ###------------------------------------------------------------### | ||
+ | ###------------------------------------------------------------### | ||
###-----------------------------------------------------------------### | ###-----------------------------------------------------------------### | ||
### Regressão Beta | ### Regressão Beta |