Não foi possível enviar o arquivo. Será algum problema com as permissões?
Essa é uma revisão anterior do documento!
Éder David Borges da Silva
- Graduado em Engenharia Agronômica - Eng Agronômica - UFPR
- e-mail: ederdbs@gmail.com / eder@leg.ufpr.br
Área de Interesse
- Estatística Experimental
- Estatística Espacial
- GEM² Grupo de estudos em modelos mistos
Disciplinas 2011/1
Minicursos
- Análise de Experimentos de longa duração II Reunião Paranaense Ciência do Solo
Códigos
###-----------------------------------------------------------------### ### Agulha de buffon buffon <- function(n,l=1,a=1){ if(a<l){cat('Erro: a < l, deve ser a > l\n')} if(a>=l){ theta <- runif(n,0,pi) dist <- runif(n,0,a/2) inter <- sum(dist <= l/2*sin(theta)) phi_est <- round((n/inter)*(2*l/a),12) cat('Número Simulação',n,'phi_estimado',phi_est,'Erro',round(pi-phi_est,12),'\n') return(c(n,phi_est)) }} 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) } 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) ###-----------------------------------------------------------------### ### Regressão Beta ### pacote oficial require(betareg) data("FoodExpenditure", package = "betareg") fe_beta <- betareg(I(food/income) ~ income + persons , data = FoodExpenditure) summary(fe_beta) ###-----------------------------------------------------------------### ### log vero da regressão beta com duas covariaveis, log.vero <- function(par,y,x1,x2){ mu <- exp((par[1] + par[2] * x1 + par[3] * x2))/(1+exp((par[1] + par[2] * x1 + par[3] * x2)))##logit^-1 ll <- sum(dbeta(y, mu* par[4], (1-mu)*par[4],log = TRUE)) return(ll) } ###-----------------------------------------------------------------### opt <- optim(c(B0=-0.5,B1=-0.51,B2=0.11,phi=35),log.vero,y=FoodExpenditure$food/FoodExpenditure$income, x1=FoodExpenditure$income, x2=FoodExpenditure$persons, hessian = TRUE, control=(list(fnscale=-1))) opt opt$par sqrt(-diag(solve(opt$hessian))) summary(fe_beta) ###-----------------------------------------------------------------###