##============================================================================= ## Estatística Computacional I www.leg.ufpr.br/ce083 ## Curso de Estatística - 2014/1 ## Prof. Walmes Zeviani ## LEG - DEST - UFPR ## ## Aula 11 (25/03/2014) ## * Revisão de distribuição de probabilidades; ## * Como fazer funções. ##============================================================================= ##----------------------------------------------------------------------------- ## Definições da sessão. require(rpanel) ##----------------------------------------------------------------------------- ## Distribuições de probabilidade. ##----------------------------------------------------------------------------- ## Distribuição binomial. pb <- function(panel){ with(panel, { x <- 0:size px <- dbinom(x, size=size, prob=prob) plot(px~x, type="h", ylim=c(0,max(c(px),0.5))) ## plot(px~x, type="h", ylim=c(0,1)) ## lines(cumsum(px)~x, type="s") }) panel } panel <- rp.control() rp.slider(panel, size, 2, 80, initval=10, resolution=2, action=pb) rp.slider(panel, prob, 0.01, 0.99, initval=0.5, action=pb) ##----------------------------------------------------------------------------- ## Distribuição de Poisson. pp <- function(panel){ with(panel, { x <- 0:100 px <- dpois(x, lambda=lambda) plot(px~x, type="h", ylim=c(0,max(c(px),0.5))) ## plot(px~x, type="h", ylim=c(0,1)) ## lines(cumsum(px)~x, type="s") }) panel } panel <- rp.control() rp.slider(panel, lambda, 0.5, 50, initval=10, resolution=0.25, action=pp) ##----------------------------------------------------------------------------- ## Distribuição normal. pn <- function(panel){ with(panel, { curve(dnorm(x, mean=mean, sd=sd), -5, 5) }) panel } panel <- rp.control() rp.slider(panel, mean, -4, 4, initval=0, action=pn) rp.slider(panel, sd, 0.01, 3, initval=1, action=pn) ##----------------------------------------------------------------------------- ## Como criar funções. ## Calcula hipotenusa pelos lados de uma triângulo retângulo. pit <- function(a, b){ h <- sqrt(a^2+b^2) return(h) } ## Coloca proteção/aviso. pit <- function(a, b){ cond <- a>0 & b>0 if(!cond) stop("a ou b menores que zero.") if(cond){ h <- sqrt(a^2+b^2) return(h) } } pit(a=3, b=4) pit(a=3, b=-4) pit(a=3, b="j") ## Função mais geral que permite usar qualquer ângulo. pitgeral <- function(a, b, angle=pi/2){ cond <- a>0 & b>0 if(!cond) stop("a ou b menores que zero.") if(cond){ h <- sqrt(a^2+b^2-2*a*b*cos(angle)) return(h) } } pitgeral(4, 4, pi/3) ##----------------------------------------------------------------------------- ## Função para aleatorizar experimento em quadrado latino. qldesign <- function(dim){ ## dim: escalar inteiro que é a dimensão do QL. M <- matrix(1:dim, dim, dim) N <- M+(t(M)) O <- (N%%dim)+1 lin <- sample(1:dim) col <- sample(1:dim) return(O[lin,col]) } qldesign(12) qldesign(5) ##-----------------------------------------------------------------------------