




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Vários exemplos de análise estatística utilizando o software r. Ele aborda diferentes temas, como a criação de gráficos, cálculos estatísticos básicos, análise de variância e distribuições de probabilidade. Além disso, são apresentados alguns conjuntos de dados disponíveis no r e como obter resultados utilizando comandos específicos.
Tipologia: Notas de estudo
1 / 113
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































































Sobre o ministrante do curso
Paulo Justiniano Ribeiro Junior ´e Eng. Agrˆonomo pela ESAL, Lavras (atual UFLA), Mestre em Agronomia com ´area de concentra¸c˜ao em estat´ıstica e experimenta¸c˜ao agronˆomica pela ESALQ/USP. PhD em Estat´ıstica pela Lancaster University, UK. PJRJr ´e professor do Departamento de Estat´ıstica da Universidade Federal do Paran´a desde 1992 e tem usado o programa R em suas pesquisas desde 1999. E co-autor dos pacotes´ geoR e geoRglm contribu´ıdos ao CRAN (Compreheensive R Arquives Network).
attach(dummy)
lrf <- lowess(x, y) plot(x, y) lines(lrf)
abline(0, 1, lty=3)
abline(coef(fm))
abline(coef(fm1), col = "red")
detach()
plot(fitted(fm), resid(fm), xlab="Fitted values", ylab="Residuals", main="Residuals vs Fitted")
qqnorm(resid(fm), main="Residuals Rankit Plot")
rm(fm, fm1, lrf, x, dummy)
Agora vamos inspecionar dados do experimento cl´assico de Michaelson e Morley para medir a velo- cidade da luz. Clique para ver o arquivo morley.tab de dados no formato texto. Gravar este arquivo no diret´orio c:\temp.
file.show("c:\temp\morley.tab.txt")
mm <- read.table("c:\temp\morley.tab.txt") mm
mm$Expt <- factor(mm$Expt) mm$Run <- factor(mm$Run)
attach(mm)
plot(Expt, Speed, main="Speed of Light Data", xlab="Experiment No.")
fatores e inspecionando resultados fm <- aov(Speed ~ Run + Expt, data=mm) summary(fm) names(fm) fm$coef
fm0 <- update(fm,. ~. - Run) anova(fm0, fm)
detach() rm(fm, fm0)
Vamos agora ver alguns gr´aficos gerados pelas fun¸c˜oes contour e image.
x <- seq(-pi, pi, len=50) y <- x
f <- outer(x, y, function(x, y) cos(y)/(1 + x^2))
oldpar <- par(no.readonly = TRUE) par(pty="s")
contour(x, y, f) contour(x, y, f, nlevels=15, add=TRUE)
fa <- (f-t(f))/
contour(x, y, fa, nlevels=15)
par(oldpar)
image(x, y, f) image(x, y, fa)
objects(); rm(x, y, f, fa)
2 Aritm´etica e Objetos
Voce pode usar o R para avaliar algumas express˜oes aritm´eticas simples. Por exemplo:
> 1+2+3 # somando estes n´umeros ... [1] 6 # obtem-se a resposta marcada com [1]
> 2+3*4 # um pouquinho mais complexo [1] 14 # prioridade de opera¸c~oes (multiplica¸c~ao primeiro)
[1] 2.5 # assim como divis~ao
> 43*3 # pot^encias s~ao indicadas por ** ou ^ [1] 108 # e tem prioridade sobre multiplica¸c~ao e divis~ao
O s´ımbolo [1] pode parecer estranho e ser´a explicado mais adiante. O R tamb´em disponibiliza fun¸c˜oes como as que voce encontra em uma calculadora:
> sqrt(2) [1] 1.
> sin(3.14159) # seno(Pi radianos) ´e zero [1] 2.65359e-06 # e a resposta ´e bem pr´oxima ...
O valor Pi est´a dispon´ıvel como uma constante. Tente isto:
> sin(pi) [1] 1.224606e-16 bem mais pr´oximo de zero ...
Aqui est´a uma lista resumida de algumas fun¸c˜oes aritm´eticas no R:
sqrt raiz quadrada abs valor absoluto (positivo) sin cos tan fun¸c˜oes trigonom´etricas asin acos atan fun¸c˜oes trigonom´etricas inversas sinh cosh tanh fun¸c˜oes hiperb´olicas asinh acosh atanh fun¸c˜oes hiperb´olicas inversas exp log exponencial e logar´ıtmo natural log10 logar´ıtmo base-
Estas express˜oes podem ser agrupadas e combinadas em express˜oes mais complexas:
> sqrt(sin(45*pi/180)) [1] 0.
O R ´e uma linguagem orientada `a objetos: vari´aveis, dados, matrizes, fun¸c˜oes, etc s˜ao armazenados na mem´oria ativa do computador na forma de objetos. Por exemplo, se um objeto x tem o valor 10 ao digitarmos e seu nome e programa exibe o valor do objeto:
> x [1] 10
O d´ıgito 1 entre colchetes indica que o conte´udo exibido inicia-se com o primeiro elemento de x. Voce pode armazenar um valor em um objeto com certo nome usando o s´ımbolo ¡- (ou -¿). Exemplos:
> x <- sqrt(2) # armazena a raiz quadrada de 2 em x > x # digite o nome do objeto para ver seu conte´udo [1] 1.
Alternativamente podem-se usar o s´ımbolos ->, = ou. As linhas a seguir produzem o mesmo resultado.
> x <- sin(pi) # este ´e o formato ‘‘tradicional’’ > sin(pi) -> x > x = sin(pi) # este formato foi introduzido em vers~oes mais recentes
Neste material ser´a dada preferˆencia ao primeiro s´ımbolo. Usu´arios pronunciam o comando dizendo que o objeto recebe um certo valor. Por exemplo em x <- sqrt(2) dizemos que ”x recebe a raiz quadrada de 2”. Como pode ser esperado voce pode fazer opera¸c˜oes aritm´eticas com os objetos.
> y <- sqrt(5) # uma nova vari´avel chamada y > y+x # somando valores de x e y [1] 2.
Note que ao atribuir um valor a um objeto o programa n˜ao imprime nada na tela. Digitando o nome do objeto o programa imprime seu conte´udo na tela. Digitando uma opera¸c˜ao aritm´etica, sem atribuir o resultado a um objeto, faz com que o programa imprima o resultado na tela. Nomes de vari´aveis devem come¸car com uma letra e podem conter letras, n´umeros e pontos. Mai´usculas e min´usculas s˜ao consideradas diferentes. DICA: tente atribuir nomes que tenham um significado l´ogico. Isto facilita lidar com um grande n´umero de objetos. Ter nomes como a1 at´e a20 pode causar confus˜ao... Aqui est˜ao alguns exemplo v´alidos
> x <- 25 > x * sqrt(x) -> x > x2.1 <- sin(x1) > xsq <- x2.12 + x2.2
E alguns que N AO s˜˜ ao v´alidos
> 99a <- 10 #‘99a’ n~ao come¸ca com letra > a1 <- sqrt 10 # Faltou o par^entesis em sqrt > a1_1 <- 10 # N~ao pode usar o ’underscore’ em um nome > a-1 <- 99 # h´ıfens tamb´em n~ao podem ser usados... > sqrt(x) <- 10 # n~ao faz sentido...
sum(x9) mean(x9) var(x9) min(x9) max(x9) summary(1:10)
x10 <- x9[x9 > 72]
Para mais detalhes sobre vetores voce pode consultar as seguinte p´aginas:
m1 <- matrix(1:12, ncol=3) m length(m1) dim(m1) nrow(m1) ncol(m1) m1[1,2] m1[2,2] m1[,2] m1[3,] dimnames(m1) dimnames(m1) <- list(c("L1", "L2", "L3","L4"), c("C1","C2","C3")) dimnames(m1) m1[c("L1","L3"),] m1[c(1,3),]
m2 <- cbind(1:5, 6:10) m
m3 <- cbind(1:5, 6) m
Para mais detalhes sobre matrizes consulte a p´agina:
O conceito de array generaliza a id´eia de matrix. Enquanto em uma matrix os elementos s˜ao organizados em duas dimens˜oes (linhas e colunas), em um array os elementos podem ser organizados em um n´umero arbitr´ario de dimens˜oes. No R um array ´e definido utilizando a fun¸c˜ao array().
ar1 <- array(1:24, dim=c(3,4,2)) ar
Examine agora os seguinte comandos:
ar1 <- array(1:24, dim=c(3,4,2)) ar1[,2:3,] ar1[2,,1] sum(ar1[,,1]) sum(ar1[1:2,,1])
Veja agora um exemplo de dados j´a incluido no R no formato de array. Para “carregar” e visualizar os dados digite:
data(Titanic) Titanic
Para maiores informa¸c˜oes sobre estes dados digite:
help(Titanic)
Agora responda `as seguintes perguntas, mostrando os comandos do R utilizados:
d1 <- data.frame(X = 1:10, Y = c(51, 54, 61, 67, 68, 75, 77, 75, 80, 82)) d names(d1) d1$X d1$Y plot(d1) plot(d1$X, d1$Y)
d2 <- data.frame(Y= c(10+rnorm(5, sd=2), 16+rnorm(5, sd=2), 14+rnorm(5, sd=2))) d2$lev <- gl(3,5) d by(d2$Y, d2$lev, summary)
d3 <- expand.grid(1:3, 4:5) d
4 Entrando com dados
Pode-se entrar com dados no R de diferentes formas. O formato mais adequado vai depender do tamanho do conjunto de dados, e se os dados j´a existem em outro formato para serem importados ou se ser˜ao digitados diretamente no R. A seguir s˜ao descritas 4 formas de entrada de dados com indica¸c˜ao de quando cada uma das formas deve ser usada. Os trˆes primeiros casos s˜ao adequados para entrada de dados diretamente no R, enquanto o ´ultimo descreve como importar dados j´a dispon´ıveis eletronicamente.
Podemos entrar com dados definindo vetores com o comando c() (“c“ corresponde a concatenate) ou usando fun¸c˜oes que criam vetores. Veja e experimente com os seguinte exemplos.
a1 <- c(2,5,8) # cria vetor a1 com os dados 2, 5 e 8 a1 # exibe os elementos de a
a2 <- c(23,56,34,23,12,56) a
Esta forma de entrada de dados ´e conveniente quando se tem um pequeno n´umero de dados. Quando os dados tem algum “padr˜ao” tal como elementos repetidos, n´umeros sequenciais pode-se usar mecanismos do R para facilitar a entrada dos dados como vetores. Examine os seguintes exemplos.
a3 <- 1:10 # cria vetor com n´umeros sequenciais de 1 a 10 a
a4 <- (1:10)*10 # cria vetor com elementos 10, 20, ..., 100 a
a5 <- rep(3, 5) # cria vetor com elemento 3 repetido 5 vezes a
a6 <- rep(c(5,8), 3) # cria vetor repetindo 3 vezes 5 e 8 alternadamente a
a7 <- rep(c(5,8), each=3) # cria vetor repetindo 3 vezes 5 e depois 8 a
Est´a fun¸c˜ao coloca o Rem modo prompt onde o usu´ario deve digitar cada dado seguido da tecla ¡ENTER¿. Para encerrar a entrada de dados basta digitar ¡ENTER¿ duas vezes consecutivas. Veja o seguinte resultado:
y <- scan() #1: 11 #2: 24 #3: 35 #4: 29 #5: 39 #6: 47
#Read 6 items
y #[1] 11 24 35 29 39 47
Este formato ´e maais ´agil que o anterior e ´e conveniente para digitar vetores longos.
O comando edit(data.frame()) abre uma planilha para digita¸c˜ao de dados que s˜ao armazanados como data-frames. Data-frames s˜ao o an´alogo no R a uma planilha. Portanto digitando
a8 <- edit(data.frame())
ser´a aberta uma planilha na qual os dados devem ser digitados. Quando terminar de entrar com os dados note que no canto superior direito da planilha existe um bot˜ao ¡QUIT¿. Pressionando este bot˜ao a planilha ser´a fechada e os dados ser˜ao gravados no objeto indicado (no exemplo acima no objeto a8). Se voce precisar abrir novamente planilha com os dados, para fazer corre¸c˜oes e/ou inserir mais dados use o comando fix. No exemplo acima voce digitaria fix(a8). Esta forma de entrada de dados ´e adequada quando voce tem dados que n˜ao podem ser armazenados em um ´unico vetor, por exemplo quando h´a dados de mais de uma vari´avel para serem digitados.
Se os dados j´a est˜ao dispon´ıveis em formato eletrˆonico, isto ´e, j´a foram digitados em outro programa, voce pode importar os dados para o R sem a necessidade de digit´a-los novamente. A forma mais f´acil de fazer isto ´e usar dados em formato texto (arquivo do tipo ASCII). Por exemplo, se seus dados est˜ao dispon´ıveis em uma planilha eletrˆonica como EXCEL ou similar, voce pode na planilha escolher a op¸c˜ao ¡SALVAR COMO¿ e gravar os dados em um arquivo em formato texto. No R usa-se a fun¸c˜ao read.table para ler os dados de um arquivo texto e armazenar no formato de data-frame.
Exemplo 1 Como primeiro exemplo considere importar para o R os dados deste arquivo texto. Clique no link para visualizar o arquivo. Agora copie o arquivo para sua ´area de trabalho (working directory do R). Para importar este arquivo usamos:
ex01 <- read.table(‘‘gam01.txt’’) ex
Exemplo 2 Como primeiro exemplo considere importar para o R os dados deste arquivo texto. Clique no link para visualizar o arquivo. Agora copie o arquivo para sua ´area de trabalho (working directory do R). Note que este arquivo difere do anterior em um aspecto: os nomes das vari´aveis est˜ao na primeira linha. Para que o R considere isto corretamente temos que inform´a-lo disto com o argumento head=T. Portanto para importar este arquivo usamos:
ex02 <- read.table(‘‘exemplo02.txt’’, head=T) ex
5 An´alise descritiva
Nesta sess˜ao vamos ver alguns (mas n˜ao todos!) comandos do R para fazer uma an´alise descritiva de um conjunto de dados. Uma boa forma de iniciar uma an´alise descritiva adequada ´e verificar os tipode de vari´aveis dis- pon´ıveis. Vari´aveis podem ser classificadas da seguinte forma:
e podem ser resumidas por tabelas, gr´aficos e/ou medidas. Vamos ilustrar estes conceitos com um conjunto de dados j´a inclu´ıdo no R, o conjunto mtcars que descreve caracter´ısticas de diferentes modelos de autom´ovel. Primeiro vamos carregar e inspecionar os dados.
> data(mtcars) > mtcars # mostra todo o conjunto de dados > dim(mtcars) # mostra a dimens~ao dos dados > mtcars[1:5,] # mostra as 5 primeiras linhas > names(mtcars) # mostra os nomes das vari´aveis > help(mtcars) # mostra documenta¸c~ao do conjunto de dados
Vamos agora, por simplicidade, selecionar um subconjunto destes dados com apenas algumas das vari´aveis. Para isto vamos criar um objeto chamado mtc que cont´em apenas as vari´aveis desejadas. Para selecion´a-las indicamos os n´umeros das colunas correspondentes `a estas vari´aveis.
> mtc <- mtcars[,c(1,2,4,6,9,10)] > mtc[1:5,] > names(mtc)
Vamos anexar o objeto para facilitar a digita¸c˜ao com o comando abaixo. O uso e sentido deste comando ser´a explicado mais adiante.
> attach(mtc)
Vamos agora ver uma descri¸c˜ao da vari´avel n´umero de cilindros. Vamos fazer uma tabela de frequˆencias absolutas e gr´aficos de barrase do tipo “torta“. Depois fazemos o mesmo para frequˆencias relativas.
> tcyl <- table(cyl) > barplot(tcyl) > pie(tcyl)
> tcyl <- 100* table(cyl)/length(cyl) > tcyl > prop.table(tcyl) # outra forma de obter freq. rel. > barplot(tcyl) > pie(tcyl)
Passando agora para uma vari´avel quantitativa cont´ınua vamos ver o comportamento da vari´avel que mede o rendimento dos carros (em mpg – milhas por gal˜ao). Primeiro fazemos uma tabela de frequˆencias, depois gr´aficos (histograma, box-plot e diagrama ramos-e-folhas) e finalmente obtemos algumas medidas que resumem os dados.
> table(cut(mpg, br=seq(10,35, 5)))
> hist(mpg) > boxplot(mpg) > stem(mpg)
> summary(mpg)
Vamos primeiro ver o resumo de duas vari´aveis categ´oricas: o tipo de marcha e o n´umero de cilindros. Os comandos abaixo mostram como obter uma tabela com o cruzamento destas vari´aveis e gr´aficos.
> table(am, cyl) > prop.table(table(am, cyl)) > prop.table(table(am, cyl), margin=1) > prop.table(table(am, cyl), margin=2) > plot(table(am, cyl)) > barplot(table(am, cyl), leg=T) > barplot(table(am, cyl), beside=T, leg=T)
Agora vamos relacionar uma categ´orica (tipo de cˆambio) com uma cont´ınua (rendimento). O pri- meiro comando abaixo mostra como obter medidas resumo do rendimento para cada tipo de cˆambio. A seguir s˜ao mostrados alguns tipos de gr´aficos que podem ser obtidos para descrever o comportamento e associa¸c˜ao destas vari´aveis.
> tapply(mpg, am, summary)
> plot(am, mpg)
> m0 <- mean(mpg[am==0]) # m´edia de rendimento para cambio autom´atico > m > m1 <- mean(mpg[am==1]) # m´edia de rendimento para cambio manual > m
> points(c(0,1), c(m0, m1), cex=2,col=2, pch=20)
> par(mfrow=c(1,2)) > by(hp, am, hist) > par(mfrow=c(1,1))
Pode-se fazer um teste estat´ıstico (usando o teste t) para comparar os redimentos de carros com diferentes tipos de cˆambio e/ou com diferentes n´umeros de cilindros (usando a an´alise de variˆancia).
> t.test(mpg[am==0], mpg[am==1])
> tapply(mpg, cyl, mean) > plot(cyl,mpg) > anova(aov(mpg ~ cyl))
Note que os ´utimos tres comandos s˜ao trabalhosos de serem digitados pois temos que digitar airquality a cada vez! Mas h´a um mecanismo no R para facilitar isto: o caminho de procura (“search path”). Come¸ce digi- tando e vendo s sa´ıda de: search() O programa vai mostrar o caminho de procura dos objetos. Ou seja, quando voce usa um nome do objeto o R vai procurar este objeto nos caminhos indicado, na ordem apresentada. Pois bem, podemos “adicionar” um novo local neste caminho de procura e este novo local pode ser o nosso objeto airquality. Digite o seguinte e compare com o anterior:
> attach(airquality) # anexando o objeto airquality no caminho de procura. > search() # mostra o caminho agora com o airquality inclu´ıdo > mean(Temp) # e ... a digita¸c~ao fica mais f´acil e r´apida !!!! > mean(Ozone, na.rm=T) # pois com o airquality anexado o R acha as vari´aveis
NOTA: Para retirar o objeto do caminho de procura basta digitar detach(airquality).
Pense em quest˜oes relevantes e veja como usar medidas e gr´aficos para respondˆe-las. Use os comandos mostrados anteriormente. Por exemplo:
O livro Estat´ıstica B´asica de W. Bussab e P. Morettin traz no primeiro cap´ıtulo um conjunto de dados hipot´etico de atributos de 36 funcion´arios da companhia “Milsa”. Os dados est˜ao reproduzidos na tabela 5.4. Veja o livro para mais detalhes sobre este dados. O que queremos aqui ´e ver como, no programa R:
Estes s˜ao dados no “estilo planilha”, com vari´aveis de diferentes tipos: categ´oricas e num´ericas (qualitativas e quantitativas). Portanto o formato ideal de armazanamento destes dados no R ´e o data.frame. Para entrar com estes dados no diretamente no Rpodemos usar o editor que vem com o programa. Para digitar rapidamente estes dados ´e mais f´acil usar c´odigos para as vari´aveis categ´oricas. Desta forma, na coluna de estado civil vamos digitar o c´odigo 1 para solteiro e 2 para casado. Fazemos de maneira similar com as colunas Grau de Instru¸c˜ao e Regi˜ao de Procedˆencia. No comando a seguir invocamos o editor, entramos com os dados na janela que vai aparecer na sua tela e quanto sa´ımos do editor (pressionando o bot˜ao QUIT) os dados ficam armazenados no objeto milsa. Ap´os isto digitamos o nome do objeto (milsa) e podemos ver o conte´udo digitado, como mostra a tabela 5.4. Lembre-se que se voce precisar corrigir algo na digita¸c˜ao voce pode fazˆe-lo abrindo a planilha novamente com o comando fix(milsa).
Tabela 1: Dados de Bussab & Morettin Funcion´ario Est. Civil Instru¸c˜ao No^ Filhos Sal´ario Ano Mˆes Regi˜ao 1 solteiro 1o Grau - 4.00 26 3 interior 2 casado 1o Grau 1 4.56 32 10 capital 3 casado 1o Grau 2 5.25 36 5 capital 4 solteiro 2o Grau - 5.73 20 10 outro 5 solteiro 1o Grau - 6.26 40 7 outro 6 casado 1o Grau 0 6.66 28 0 interior 7 solteiro 1o Grau - 6.86 41 0 interior 8 solteiro 1o Grau - 7.39 43 4 capital 9 casado 2o Grau 1 7.59 34 10 capital 10 solteiro 2o Grau - 7.44 23 6 outro 11 casado 2o Grau 2 8.12 33 6 interior 12 solteiro 1o Grau - 8.46 27 11 capital 13 solteiro 2o Grau - 8.74 37 5 outro 14 casado 1o Grau 3 8.95 44 2 outro 15 casado 2o Grau 0 9.13 30 5 interior 16 solteiro 2o Grau - 9.35 38 8 outro 17 casado 2o Grau 1 9.77 31 7 capital 18 casado 1o Grau 2 9.80 39 7 outro 19 solteiro Superior - 10.53 25 8 interior 20 solteiro 2o Grau - 10.76 37 4 interior 21 casado 2o Grau 1 11.06 30 9 outro 22 solteiro 2o Grau - 11.59 34 2 capital 23 solteiro 1o Grau - 12.00 41 0 outro 24 casado Superior 0 12.79 26 1 outro 25 casado 2o Grau 2 13.23 32 5 interior 26 casado 2o Grau 2 13.60 35 0 outro 27 solteiro 1o Grau - 13.85 46 7 outro 28 casado 2o Grau 0 14.69 29 8 interior 29 casado 2o Grau 5 14.71 40 6 interior 30 casado 2o Grau 2 15.99 35 10 capital 31 solteiro Superior - 16.22 31 5 outro 32 casado 2o Grau 1 16.61 36 4 interior 33 casado Superior 3 17.26 43 7 capital 34 solteiro Superior - 18.75 33 7 capital 35 casado 2o Grau 2 19.40 48 11 capital 36 casado Superior 3 23.30 42 2 interior