===== Dia 3 ===== ## listas lis <- list(a = 1:10, b = matrix(1:12, nc=4), c = "Oi Pessoal", d = data.frame(x = 1:10), y = rnorm(10)) lis ## selecionando uma sublista lis[1] ## selecionando um elemento da list lis[[1]] ## note a diferença entre usar [ ] e [[ ]] ! ## exemplo: regressão: resultados são dados em lista(s) xydata <- data.frame(x = 1:20, y = c(0.9,5.1,2.4,8.1,4.2,7.1,5.6,7.6,5.9,7.7, 11.8,6.9,9.3,10.9,8.4,11.6,13.0,13.8,13.1,9.3) ) ## diferente formas de acessar as colunas de um data-frame: with(xydata, plot(x,y)) attach(xydata) plot(x,y) detach(xydata) plot(xydata$x, xydata$y) reg <- lm(y ~ x, data = xydata) is.list(reg) names(reg) reg$call summary(reg) regS <- summary(reg) is.list(regS) names(regS) ## estimativa de sigma pode ser calculada... sqrt(sum(reg$residuals^2)/reg$df.res) ## ou acessada do objeto de summary!! regS$sigma ## apagando **tudo** (todos os objetos) da área de trabalho rm(list(ls()) ## Exemplo de Verossimilhança ## dg <- c(9, 5, 2, 3, 0, 3, 2, 4, 14, 3, 4, 1, 0, 6, 1) ## função (ingênua) de verossimilhança para modelo geométrico fp <- function(p) sum(log(p * (1-p)^dg)) ## fazendo o gráfico da função: ps <- seq(0.01, 0.99, length=100) lps <- sapply(ps, fp) plot(ps, lps , ty="l") ## encontrando o ponto de máximo (numericamente) est <- optimize(fp, c(0, 1), maximum=T) est abline(v = est$max) ## redefinindo a função escrevendo as contas de forma mais adequada fp <- function(par) sapply(par, function(p) sum(log(p) + dg*log(1-p))) plot(ps, fp(ps), ty="l") ## reescrevendo novamente usando a função já disponível no R fp <- function(par) sapply(par, function(p) sum(dgeom(dg, prob=p, log=T))) plot(ps, fp(ps), ty="l") ## a tornando a função mais genérica para receber qualquer vetor de dados fp <- function(par, dados) sapply(par, function(p) sum(dgeom(dados, prob=p, log=T))) plot(ps, fp(ps, dados=dg), ty="l") ## acrescentando elementos no gráfico plot(ps, fp(ps, dados=dg), ty="l", xlab="p", ylab="l(p)") title(eval(substitute(expression(paste("log-verossimilhança do parâmetro da Geométrica\n", hat(p) == a)), list(a=est$max))))