You are on page 1of 95

UNIVERSIDADE FEDERAL DO CEARÁ

CENTRO DE CIÊNCIAS
DEPARTAMENTO DE ESTATÍSTICA E MATEMÁTICA
APLICADA

CURSO DE R

Professora
Ana Maria Souza de Araujo
Aluno
José Roberto Silva dos Santos

Fortaleza, Dezembro de 2009

Sumário
1 Introdução

4

2 Tipos de Objetos

6

1.1 Como utilizar o R . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Pacotes Libraries . . . . . . . . . . . . . . . . . . . . . . . . .
2.1
2.2
2.3
2.4
2.5
2.6
2.7

Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Data-frames . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Importação de dados . . . . . . . . . . . . . . . . . . . . . . .
2.7.1 A função read.table() . . . . . . . . . . . . . . . . . . .
2.7.2 Importando planilhas do Microsoft Excel (Arquivos xls)

3 Estatística Descritiva

3.1 Rotinas Grácas . . . . . . . . . . . .
3.1.1 Funções grácas de alto nível .
3.1.2 Funções grácas de baixo nível
3.1.3 Funções grácas interativas . .
3.2 Parâmetros grácos. A função par() . .
3.3 Descrevendo um conjunto de dados . .
3.3.1 Descrição Univariada . . . . . .
3.3.2 Descrição Bivariada . . . . . . .
3.3.3 Alguns grácos mais elaborados

4 Probabilidade e Inferência

4.1 Controle de uxo e denição de funções
4.1.1 Execução condicional . . . . . .
4.1.2 Ciclos . . . . . . . . . . . . . .
4.1.3 Denindo funções . . . . . . . .
2

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

4
5

6
9
13
16
17
18
18
19
21

22

22
22
23
23
23
29
32
41
48

53

53
53
54
55

3

SUMÁRIO

4.2 Distribuições de Probabilidade . . . . . . . . . .
4.2.1 Distribuição Normal . . . . . . . . . . .
4.2.2 Distribuição t-Student . . . . . . . . . .
4.2.3 F-Snedecor . . . . . . . . . . . . . . . .
4.2.4 Distribuição Gama . . . . . . . . . . . .
4.2.5 Distribuição Binomial . . . . . . . . . .
4.2.6 Distribuição de Poisson . . . . . . . . . .
4.3 Inferência . . . . . . . . . . . . . . . . . . . . .
4.3.1 Teorema Central do Limite . . . . . . . .
4.3.2 Distribuições Amostrais . . . . . . . . .
4.3.3 Estimação de máxima verossimilhança .
4.3.4 Intervalos de Conança . . . . . . . . . .
4.3.5 Testes de Hipóteses . . . . . . . . . . . .
.1 Apêndice Software R no Curso de Estatística da
Referências Bibliográcas . . . . . . . . . . . . . . .

. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
UFC
. . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

56
57
60
61
63
67
69
72
72
75
79
84
89
94
95

Para limpar o conteúdo que aparece na tela do console basta combinar as teclas "Ctrl"e "L". Nesta janela é possível digitar e executar comandos. No ambiente R as janelas podem ser organizadas por título (uma ao lado da outra) ou em forma de cascata. 1. basta ir até o menu Janelas e escolher uma dessas opções. deixe o cursor na linha de comandos desejada e combine as teclas "Ctrl"e "R". selecione todas as desejadas e após isso faça a mesma combinação de 4 .Capítulo 1 Introdução R é uma linguagem e também um ambiente para cálculos estatísticos e grácos. testes estatísticos paramétricos e não-paramétricos. modelagem linear e não-linear. análise de séries temporais..org/. R oferece uma ampla variedade de metodologias estatísticas (análise descritiva... a melhor forma de se editar comandos é usando o editor de script.1.r-project.) além de um vasto ferramental gráco. Para isso. Após a instalação inicie o R (isso pode ser feito utilizando o ícone que será criado na área de trabalho do seu computador) e veja que será aberta a seguinte tela: Este é o ambiente R que possui uma janela denominada console. Para executar comandos no script. porém. basta ir até a barra de menus e clicar sequencialmente em: Arquivo e Novo script.1. Semelhante a linguagem e ambiente S. Windows e MacOS. no caso de comandos ocupando várias linhas. Para ativar o editor. Este é distribuído livremente sob os termos da Free Software Foundation's GNU General Public License em forma de código fonte. disponível a partir da versão 2.1 Como utilizar o R O R está disponível para download no site http://www. Compila e executa em uma ampla variedade de plataformas UNIX e sistemas similares (incluindo FreeBSD e Linux).

. Estas contribuições podem ser adquiridas. este vem com uma quantidade padrão de ferramentas que estão na forma de pacotes. podem ser instaladas diretamente do ambiente R. bastando para isso. mean(). diretamente da home page citada na subseção anterior. Ou também. No entanto.2 Pacotes Libraries Ao instalar o R. é possível instalar mais pacotes sempre que for necessário. O R conta com inúmeros colaboradores no mundo inteiro que criam e disponibilizam estes pacotes. ou seja.1: Tela inicial do R teclas. que o computador do usuário esteja conectado à internet. o usuário não precisa limitar-se somente a estes. são exemplos de pacotes padrões do R. INTRODUÇÃO 5 Figura 1. por exemplo. 1.CAPÍTULO 1. os pacotes "stats"e "base"que contêm funções básicas como plot(). na forma de arquivos "zip". matrix() entre outras.

listas e funções.e na terceira linha é exibido o valor de x1. por exemplo: > x1=2 >x1 [1] 2 Na primeira linha deste comando estamos atribuindo o valor numérico 2 ao objeto x1. Os objetos básicos do R são dos tipos: vetores. Já os objetos do tipo função. entre outras. operações de aritmética." por exemplo. o código acima poderia ser escrito da seguinte forma: > x1=2. na segunda linha pede-se para mostrar o valor de x1. armazenamento de dados. 2. sob os quais estão denidas uma série de comandos que permitem. Os quatro primeiros tipos. sempre recebem um "input" e produzem um "output". descrição e análise.Capítulo 2 Tipos de Objetos No R. a manipulação de dados é feita através de objetos.1 Vetores No R. matrizes.x1 [1] 2 Agora vamos examinar os seguintes comandos: 6 . data-frames. a atribuição de um valor a um objeto é feita utilizando o símbolo "=". são objetos que armazenam dados diferindo apenas pela forma de armazenamento e operação destes. arrays. Para separar comandos em uma mesma linha deve-se usar ".

0 > x5=rep(1.2 0. Vejamos. Para o exemplo acima vemos que x4 foi preenchido com uma sequência iniciando em 0 e terminando em 1 com incremento de 0. o primeiro vetor deve conter os elementos que se deseja repetir.6 0. foi utilizado um comando que gera sequências.CAPÍTULO 2.x4 [1] 0.by=0. Para x3.8 0. note que.5] [1] 0. temos os vetores x5 e x6 que foram denidos usando a função "rep". TIPOS DE OBJETOS 7 > x2=c(1.0 0. O vetor x2 foi denido usando o comando "c" que concatena os valores que estão entre parênteses. também podemos usar vetores nos argumentos da função rep. É possível selecionar elementos de um vetor usando colchetes.2).5. > x4[3] 1 Os argumentos de uma função devem ser sempre separados por vírgula .7 0. No primeiro argumento 1 da função deve ser informado o elemento que será repetido e no segundo argumento informamos o número de vezes que este será repetido.0 Aqui foi utilizado o operador lógico > para selecionar os elementos de x4 maiores do que 0.x2 [1] 1 2 3 > x3=1:10. Neste caso.3 0.2. que é especicado no argumento by=.5)).1 0.c(3.6 0.1.3).1). o símbolo ":" indica que o vetor será preenchido com valores de 1 a 10.8 0. muito útil para criação de vetores com elementos repetidos. 1. É o que foi feito para denir x6. por exemplo: > x4[x4>0. Outra forma de gerar sequências é utilizando a função "seq". e o segundo irá conter o número de repetições de cada elemento do primeiro.x3 [1] 1 2 3 4 5 6 7 8 9 10 > x4=seq(0. No vetor x5 temos o número 1 repetido 3 vezes e.3).9 1. Por último.5 0.x6 [1] 1 1 1 2 2 2 2 2 Essas são diferentes formas de denir um vetor.x5 [1] 1 1 1 > x6=rep(c(1.9 1.4 0.7 0. sendo que nesta podemos escolher o valor de incremento.

Note que a linguagem R é bastante intuitiva.1 0.9 1.0 0.0 que está excluindo os elementos 1. Operações com vetores: Há diversas operações numéricas denidas sobre vetores.5 0.5 0.9 1.2 > x4[-3] [1] 0.CAPÍTULO 2. Vejamos algumas. primeiro é selecionado o terceiro elemento de x4 (a posição dos elementos é contada a partir de 1).6 0.5 0. > x2+2 [1] 3 4 5 > x2+3:5 [1] 4 6 8 > x2*3 [1] 3 6 9 > x2^(1:3) [1] 1 4 27 > x5/x2 [1] 1.7 0.5000000 0. depois foi utilizado o operador de subtração para excluir o terceiro elemento de x4 e por último estamos selecionando os três primeiros elementos de x4.3 0.3 .0000000 0.0 0.1) [1] 1.4 0. imagine se nosso interesse fosse excluir mais de um elemento de x4 de uma só vez.1 0.0 > x4[1:3] [1] 0.3333333 > round(x5/x2. por exemplo.2 Nos comandos acima.8 0.6 0.3 0. TIPOS DE OBJETOS 8 [1] 0. 2 e 3 de x4. seria razoável pensar no seguinte comando: > x4[-(1:3)] [1] 0.0 0.7 0.8 0.4 0.

ou seja. o que foi vericado com a função is. Porém o vetor x8 não possui elemento numérico algum..5).CAPÍTULO 2. Logo depois. Observe que. o R irá processá-los como objeto. No último comando introduzimos a função round() onde o primeiro argumento desta é um valor ou vetor numérico. Uma das formas de criar uma matriz no R é utilizando a função abaixo: matrix(um vetor. o segundo a 2 e o terceiro a 3. TIPOS DE OBJETOS 9 Vemos que no primeiro comando estamos somando 2 a todos elementos do vetor x2.character(x8) [1] TRUE Os caracteres devem estar sempre entre aspas. diferindo apenas na dimensão. Mais adiante iremos ver um objeto que permite elementos de mais de um tipo..2 Matrizes Matrizes são objetos que possuem as mesmas propriedades dos vetores. objetos do tipo vetor só aceitam elementos de um único tipo (caractere ou numérico). Em seguida.numeric().numeric(x8) [1] FALSE > is.x7 [1] "fulano" "ciclano" "beltrano" > x8=c("a". tínhamos um vetor que era numérico e lhe foi acrescentado um caractere.4. No terceiro comando. elevamos o primeiro elemento de x2 a 1. e o segundo é o número de casas decimais que se deseja no valor ou valores. Isso é devido ao fato de que. ncol =número de colunas. concatenamos x2 com o caractere "a". 2. nrow =número de linhas. Vetores de caracteres: Também podemos atribuir caracteres a um objeto. somamos cada elemento de x2 com cada elemento do vetor (3.. que informa ao usuário a natureza do objeto testado. por exemplo: > x7=c("fulano". Caso não estejam.x2). indicando que este não é numérico."ciclano". no R.x8 [1] "a" "1" "2" "3" > is.) . para criar o vetor x8. multiplicamos cada elemento de x2 por 3. byrow = FALSE. Para x8 a função retornou o valor lógico FALSE."beltrano").

] 7 8 9 Uma outra maneira de denir uma matriz é usando a função cbind.6:10. Vejamos um exemplo: > m1=matrix(1:9. se nada for especicado este será a opção utilizada . TIPOS DE OBJETOS 10 Esta função recebe um vetor e o organiza em uma matriz conforme indicado no argumento byrow. uma vez que estes devem ser sempre múltiplos do total de elementos da matriz. > m2=matrix(1:9.nc=3).3] [1.byrow=T). Se byrow=FALSE2 o vetor será organizado por colunas da matriz.11:15).] 4 9 14 [5.m2 [.1] [.] 4 5 6 [3.2] [.] 2 7 12 [3.m1 [.2] [. o vetor será organizado por linhas.] 2 5 8 [3. Por exemplo: 2 Este é a opção default.2] [.] 1 2 3 [2.] 5 10 15 Podemos usar esta função para concatenarmos quantos vetores quisermos.1] [. por exemplo: > m3=cbind(1:5.3] [1. ] onde antes da vírgula indica(m)-se a(s) linhas e depois a(s) colunas.] 3 6 9 Veja que é suciente escrever apenas as duas primeiras letras dos argumentos (ao invés de ncol basta digitar nc) e também.CAPÍTULO 2.1] [. basta informar o número de linhas ou colunas.] 1 6 11 [2. Seleção de elementos: Assim como foi visto na seção anterior. ou seja. que serve para concatenar vetores. ou seja.] 3 8 13 [4. vamos agora ordená-lo por linha. e estes corresponderão às colunas da matriz que está sendo criada.nc=3. Vamos agora denir uma outra matriz usando o mesmo vetor que foi usado na anterior.m3 [. porém.3] [1. também podemos selecionar elementos de uma matriz utilizando colchetes agora na forma: [ . senão byrow=TRUE (que signica por linha = verdade).] 1 4 7 [2.

CAPÍTULO 2.3] [1.] 5 10 15 > m3[4:5.] 4 9 14 [4.] [.1:2] [.] 1 8 21 [2.2] [.2] [. Vejamos algumas através de exemplos. E no quarto comando estamos excluindo a segunda linha de m3 e por último selecionamos uma submatriz constituída de alguns elementos das linhas 4 e 5 e das colunas 1 e 2 de m3.] 5 10 No primeiro comando estamos selecionando o elemento que está na primeira linha e segunda coluna de m3.] 6 10 14 [3.2] [.] 10 14 18 > m1*m2 [.] 3 8 13 [3.3] [1. TIPOS DE OBJETOS 11 > m3[1. No terceiro é selecionada a segunda linha.2] [1.1] [.] 21 48 81 . > m1+m2 [.2] [1] 6 7 8 9 10 > m3[2.] 2 6 10 [2.] [1] 2 7 12 > m3[-2.2] [1] 6 > m3[.1] [. Operações com matrizes: Existem várias operações denidas sob matrizes.3] [1.1] [.] 4 9 [2. No segundo selecionamos apenas a segunda coluna.] 1 6 11 [2.] 8 25 48 [3.1] [.

3] [1. Basta fazer: > crossprod(m2) [.4. O produto matricial é feito utilizando %*%.1.] 126 [4.2] [.] 78 93 108 [3.] 11 12 13 14 15 > m3%*%m2 [.3] [1.] 90 108 126 Podemos destacar também as funções det().nc=3).] 6 7 8 9 10 [3.1] [.1] [.] 102 [2.4] [. solve() e eigen() que retornam.] 1 2 3 4 5 [2.-1.0.] 66 78 90 [2. No exemplo temos o produto matricial de m3 com m2. o determinante.] 5 3 -1 .] 90 108 126 Nos dois primeiros comandos temos adição e multiplicação das matrizes m1 e m2 elemento a elemento.m4 [. Por último temos o produto matricial da transposta de m2 com m2.2] [.3] [.] 114 [3.1).] 66 78 90 [2.5. Vejamos um exemplo: > m4=matrix(c(6.] 6 1 2 [2. No terceiro comando foi utilizado a função t() que faz transposição de matrizes.5] [1.] 150 [.] 138 [5.CAPÍTULO 2. a inversa e os auto-valores e autovetores de uma matriz.2] [. respectivamente.2] 120 135 150 165 180 [.] 78 93 108 [3.2.3] 138 156 174 192 210 > t(m2)%*%m2 [.1] [.1] [.3] [1.2] [. TIPOS DE OBJETOS 12 > t(m3) [.3.1] [1. Esta operação é conhecida como produto cruzado e no R existe uma função especíca para realizá-la.

1 [.1] [.3928393 0.676943 -0.] [.6895898 0. [3.6 0.698540 $vectors [.0666667 [3.] 2 5 8 [3.3. .3 Arrays Array é a generalização de uma matriz.2] [.2] [.2)).1] [. uma vez que neste tipo de objeto podemos denir bem mais do que duas dimensões.9525448 0.06666667 0.] -0.13333333 -1.8666667 > eigen(m4) $values [1] 8.2] [. No R denimos um array usando a função array() que tem a seguinte forma: array(vetor_de_dados. .] 0.1] [.] 4 TIPOS DE OBJETOS 0 13 1 > det(m4) [1] -15 > solve(m4) [.ar1 .3] [1.2] [.7267425 2.021597 2.2 0.CAPÍTULO 2.4666667 [2.] 3 6 9 .3] 10 13 16 . 2 [1.2807263 0.] 0.3] [1.c(3. vetor_de_dimensões) Por exemplo: > ar1=array(1:20.1176905 -0.3086003 [2.6136865 [3.] -0.] -0.] -0.] 1 4 7 [2.1] [.3] [1.26666667 -0.8 -0.6083940 -0.

] [3. 2. 1.1] [.] 14 17 [3.] [.] 19 2 .] [3.2] 7 10 8 11 9 12 .2.2)). [2.2.2] [1.1] [.2] [1.2] [1. É como se tivéssemos uma matriz formada por duas submatrizes.ar2 . 1 [.] 3 6 .] 1 4 [2. .] 11 12 14 TIPOS DE OBJETOS 14 15 17 18 Neste caso estamos trabalhando com três dimensões.] [2. Basta fazer: > ar2=array(1:20. .] 2 5 [3.] 13 16 [2.1] [. 1 [1.c(3. . 1. . conforme a estrutura abaixo:         1 4 7 2 5 8 3 6 9 10 13 16 11 14 17 12 15 18         Vamos agora inserir mais uma dimensão neste array. 2 [. 2.CAPÍTULO 2.] 15 18 . 2 [.1] [.

2.2] [.1] [.] 15 18 > ar2[.] 19 2 [2. que é um array.] 3 6 > ar2[.] 2 5 [3. dentre eles temos o banco de dados UCBAdmissions. veja alguns exemplos: > ar2[.2] [1.] 14 17 [3. Para vê-lo basta digitar UCBAdmissions desta forma e executar.] 9 12 > ar2[.2] [1.2] [1.1] [.] 20 1 TIPOS DE OBJETOS 15 3 4 Agora temos uma estrutura do tipo:          1 4 13 16 2 5 14 17   3 6 15 18   7 10 19 2   8 11 20 3  9 12 1 4 A seleção de elementos de um array é semelhante a seleção de elementos de uma matriz.2. R possui vários bancos de dados internos..2] [.1] [.] 7 10 [2.] [3.] 13 16 [2.] 1 4 Note que.] 1 4 [2. [2..CAPÍTULO 2. estamos selecionando todas as submatrizes 3 × 2 do array ar2..2] [1.1] [.1] [..] 8 11 [3. .1.1.1] [.] 20 3 [3.

ao se fazer attach(d1) R criou o objeto altura e individuo. Vale observar que.65 1.80 A seleção de uma coluna de um data-frame também é feita utilizando o símbolo $ da seguinte forma: > d1$altura [1] 1. A função usada para criar data-frames é data.2] [1] 1.80)).1.65 2 ciclano 1. aqui todas as colunas são tratadas individualmente. O tratamento individual é apenas entre as colunas. que forçam todos os seus elementos a serem de um mesmo tipo.1. aplicando-a em d1: > attach(d1) > altura [1] 1.80 > individuo [1] "fulano" "ciclano" "beltrano" Ou seja. Por exemplo: > d1[2.70. para isso basta utilizar a função attach().frame(individuo=x7. Assim a seleção de elementos é feita da mesma forma.65 1.65 1. .80 Podemos tratar as colunas de um data-frame como se fossem objetos.70 1.frame().70 1. diferentemente de vetores matrizes e arrays.d1 individuo altura 1 fulano 1.CAPÍTULO 2.70 3 beltrano 1. sendo que.2] [1] 1. dentro de cada coluna de um data-frame continua-se tendo a restrição dos elementos serem do mesmo tipo.70 1.65. TIPOS DE OBJETOS 16 2. Sua estrutura é semelhante a de uma matriz.altura=c(1. Segue um exemplo: > d1=data.7 > d1[.80 Podemos ver que a primeira coluna de d1 é formada por caracteres e a segunda é constituída por valores numéricos. Um data frame pode ser tratado como uma matriz.4 Data-frames Data-frames são objetos que podem armazenar elementos de mais de um tipo.

Exemplo: > l1[2] $B [1] "caractere" > > l1[[2]] [1] "caractere" > > is.1] [.B="caractere". A primeira é usando colchetes simples [ ]. Primeiro temos um vetor numérico.CAPÍTULO 2.] 2 4 Aqui temos uma lista formada por três objetos de tipos e tamanhos diferentes.2] [1. A função usada para criar uma lista é list().character(l1[2]) [1] FALSE > > is.5 Listas Lista é uma coleção de objetos. Neste caso o elemento selecionado ainda será uma lista. ou seja. depois temos um caractere e por último temos uma matriz. podemos organizar vários objetos de tamanho e/ou tipos diferentes em uma lista.] 1 3 [2. A segunda é usando colchetes duplos [[ ]] e neste caso.character(l1[[2]]) [1] TRUE . Vejamos um exemplo: > l1=list(A=1:10.C=matrix(1:4. TIPOS DE OBJETOS 17 2. Há duas maneiras de selecionar elementos de uma lista. será retornado o objeto que está na posição indicada da lista.l1 $A [1] 1 2 3 4 5 6 7 8 9 10 $B [1] "caractere" $C [.nc=2)).

Para estas. nrow = 1. lines etc. Vejamos então como fazer isso. basta digitar ?matrix e o help do R será disponibilizado.Internal(matrix(data. O retorno (output) fornecido pelas funções pode ser um objeto de qualquer classe. etc. max. numérico. matrizes. Podemos obter ajuda sobre qualquer função do R utilizando o símbolo "?". quando não padronizados. No R.CAPÍTULO 2.7 Importação de dados Como foi visto nas subseções anteriores. no R a entrada de dados pode ser feita diretamente na forma de vetores. Estas possuem uma lista de argumentos cujos valores. Para isto.vector(data) if (missing(nrow)) nrow <. basta utilizar o comando: fix(nome_da_função). No entanto. byrow. a maioria das funções são escritas com a própria linguagem R. etc).as. é possível criar funções (isto será visto mais adiante) e também modicar as funções escritas em linguagem R já existentes. que cria um novo "script" com o conteúdo da função desejada pronta para edição. é possível obter dados externos provenientes de outros programas.6 Funções Como já citado anteriormente. por exemplo: > matrix function (data = NA. nrow.ceiling(length(data)/ncol) else if (missing(ncol)) ncol <. ncol. Para estas. dimnames = NULL) { data <. devem ser informados pelo usuário (input). é preciso examinar os arquivos do código fonte do R. ncol = 1. byrow = FALSE. 3 Em geral as funções são escritas em linguagem C . Por exemplo. TIPOS DE OBJETOS 18 2. No R. no R funções são também objetos. 2. para obter informações sobre a função matrix. não é possível visualizar o conteúdo diretamente. como é o caso de min. ou um valor de qualquer natureza ( caracter. é possível visualizar seu conteúdo digitando o nome da função desejada. dimnames)) } <environment: namespace:base> No caso das funções que não são escritas em linguagem R3 .ceiling(length(data)/nrow) .

Após isso.. • dec: Informa ao R qual o separador de decimais que está sendo usado no arquivo. Se isso for feito. então basta informar o nome do arquivo com a extensão. Os demais argumentos podem ser vistos acessando a ajuda do R usando o comando: ?read. também o nome e a extensão do mesmo (txt ou csv). vá até a barra de menus e clique sequencialmente em Arquivo e Mudar dir. Para denir um diretório padrão. • file: é onde deve ser informado o diretório onde está gravado o ar- quivo. Para arquivos csv é usado ponto e vírgula (... tudo entre aspas. Aconselha-se ao usuário denir um único diretório de trabalho onde devem estar gravados todos os arquivos a serem importados.) Aqui as reticências foram colocadas para indicar que há mais argumentos nesta função. Se igual a FALSE os dados serão lidos a partir da primeira linha. informaremos agora a URL onde está o arquivo. basta seguir os seguintes passos: no console. sep = "". portanto se no banco de dados a ser importado estiver sendo usado outro separador de decimais. pois o R já irá procurá-lo no diretório que foi denido. aparecerá uma caixa de diálogo pedindo para informar o diretório desejado.". Abaixo estão descritos os principais argumentos da função read. TIPOS DE OBJETOS 19 2. este deverá ser informado aqui. ao invés de um diretório.CAPÍTULO 2. .1 A função read.7. • sep: Informa ao R qual o separador de campos e valores que está sendo usado no arquivo a ser importado. Exemplos: 1. Sua sintaxe é descrita abaixo: read.. Também podemos ler um arquivo diretamente da internet para isso.table.table.table() Esta função permite importar dados nos formatos txt (AscII) e csv (separado por vírgulas).dec=". . header = FALSE.table(file. Importando um banco de dados no formato txt. • header: Se igual a TRUE a primeira linha do banco do dados será assumida como rótulo das variáveis. O default do R é dec=.). (mudar diretório). com rótulos na primeira linha e com vírgula como separador de decimais.

f vet. bastaria fazer: > read.6 Aqui vemos o comando usado para a importação e abaixo estão as três primeiras linhas e sete primeiras colunas do banco de dados.a 1 77 82 67 67 81 2 63 78 80 70 81 3 75 73 71 66 81 Em arquivos csv.3 19.livro aberto-fechado.txt" . se já tivéssemos denido um diretório padrão.table("http://www.") Para obter o mesmo resultado.table("E:/Monitoria/Aula de R/consumo diário de proteína. Importando um banco de dados txt diretamente da Internet read.table("dados . 13.CAPÍTULO 2.9 14. com rótulos na primeira linha. os campos são separados por ponto e vírgula.5 4.5 26.9 0.ime. Note que aqui estamos informando o caminho que deve ser seguido para encontrar o arquivo.dec=".sep=".") 1 2 3 pais Carne Porco_aves Ovos Leite Peixe Cereais Albânia 10.br/~pam/D-IBV") .9 2.") mec.2 42.0 4.header=T.header=T.a ana.header=T.1 1. TIPOS DE OBJETOS 20 > read.table("consumo diário de proteína. 3.csv".1 17.3 4. por isso a necessidade de fazer sep=. 2.usp.5 8.a est.5 9.txt".f alg. como visto no comando acima. Importando um banco de dados em formato csv. sem casas decimais e com diretório padrão denido > read.3 Áustria 8.0 Bélgica_Luxemb.4 0.dec=".1 28.

Na quarta linha de comandos. que receberá os dados desejados. E por último pedimos para o R ler o conteúdo do objeto dados1 que irá conter o banco de dados desejado.2 Importando planilhas do Microsoft Excel (Arquivos xls) É muito comum o uso de planilhas eletrônicas para confecção de banco de dados. Após isso criamos o objeto xlscon usando a função odbcConnectExcel. sem precisar gerar outros. Para importar arquivos em formato xls é preciso. Porém. que é usada para fechar a conexão com o Excel. Suponha que desejamos importar os dados que estão em um arquivo chamado Planilha. usamos a função odbcClose. que abre a conexão do R com o Excel.xls na aba Plan1.CAPÍTULO 2.table() conforme visto na subseção anterior. Para isso é utilizada a função sqlFecth que recebe como argumentos o objeto xlscon e o nome da planilha onde estão os dados (no caso Plan1). É claro que estes arquivos podem ser convertidos em formato txt ou csv (que é uma das opções de formato do Excel) e trazidos para o R usando a função read. Por isso imagina-se que a maioria dos usuários de R possua seus bancos de dados em formato xls. "Plan1") odbcClose(xlscon) dados1 Na primeira linha de comandos estamos fazendo a requisição do pacote RODBC usando a função require(). Na terceira linha de comandos estamos criando o objeto dados1. TIPOS DE OBJETOS 21 2. baixar o pacote RODBC. pode ser mais cômodo para o usuário trabalhar diretamente com seus arquivos xls. .xls") dados1=sqlFetch(xlscon. Então devemos usar o seguinte grupo de comandos: require(RODBC) xlscon=odbcConnectExcel("Planilha. primeiramente.7.

que permitem adicionar ou remover intera- tivamente informação aos grácos existentes. tem-se aqui um vasto ferramental para a representação gráca de dados. • Funções de baixo nível. denindo os eixos. Portanto. títulos.1 Rotinas Grácas Os comandos para criação de grácos podem ser agrupados em três categorias: • Funções grácas de alto nível. A principal função dessa categoria 22 . etiquetas. 3.1 Funções grácas de alto nível Este tipo de função gráca gera um gráco a partir dos dados que são informados como argumento para a função. antes de prosseguirmos com a análise descritiva de dados iremos apresentar as principais funções grácas disponíveis no R. que permitem adicionar novas informações a grácos já criados. bem como distribuições de frequências.1. que criam novos grácos na janela grá- ca. linhas. temos um grande número de funções para a análise descritiva de dados. etc. uma vez que doravante neste texto. Além disso. cálculo de correlações etc. tal como novos dados. Resumos estatísticos. estas serão bastante utilizadas. por conta da grande exibilidade e versatilidade que estas oferecem ao usuário. são facilmente obtidos com o uso dos comandos adequados. utilizando um dispositivo apontador. são um dos principais atrativos desse software.Capítulo 3 Estatística Descritiva No R. • Funções grácas interativas. como por exemplo o mouse. etiquetas. 3. As rotinas grácas de R.

1. ou até pressionar o botão direito para terminar a seleção.3 Funções grácas interativas São funções que permitem extrair ou adicionar informação a um gráco utilizando o mouse..y) Acrescenta pontos ou linhas ao gráco atual. 3. n=512) pontos.y.2 Funções grácas de baixo nível Algumas vezes pode acontecer das funções grácas de alto nível não produzirem exatamente o gráco pretendido.2 Parâmetros grácos.): x e y são vetores de dados e as reticências indica que podem ser incluídos mais parâmetros (ver mais adiante os argumentos da função par). Neste caso. de forma permanente. ESTATÍSTICA DESCRITIVA 23 é a função plot() cuja descrição é: plot(x... abline(a.. A maioria dos parâmetros da função par() podem ser usadas diretamente como parâmetros adicionais das funções grácas. a opção v = x representa uma linha vertical no ponto de abcissa x. etiquetas. Vamos então descrever a função par().y. os comandos de baixo nível podem ser usados para adicionar alguma informação adicional ( tal como pontos.): Acrescenta texto aos pontos (x.CAPÍTULO 3. 3. a lista dos parâmetros grácos do dispositivo gráco atual. Geralmente. linhas ou texto) ao gráco atual. y). A função par() A função par() é usada para modicar. text(x. A principal delas é a função locator(): locator(n. etiquetas é um vetor de valores inteiros ou de caracteres.y) lines(x.type): Permite ao usuário selecionar regiões do gráco usando o botão esquerdo do mouse até que se tenha selecionado um máximo de n (por default.1.. As funções de baixo nível mais usadas são descritas abaixo: points(x. A função par possui a seguinte sintaxe: . Isso permite alterar apenas uma rotina gráca especíca (alteração provisória). 3. A opção h = y representa uma linha à altura y .b) abline(h=y) abline(v=x) O primeiro comando acrescenta uma reta com declive b e ordenada na origem a ao gráco atual..

Para a função text temos a seguinte forma: adj=c(x.readonly: Argumento lógico. no. os rótulos dos eixos são retirados. para funções grácas de alto nível. • adj: O valor de adj determina a forma que o texto (Strings) será justicados.readonly=FALSE) Segue abaixo a descrição de seus argumentos: • no. a justicação e a direção do texto. .5 para centralizar o texto 3. • cex. 0. "7". "l". • ask: Argumento lógico. 1. "c". O valor "n"(entre aspas) suprime a caixa. ESTATÍSTICA DESCRITIVA 24 par(<nome do argumento >=<valor >. então será retornado uma lista com os parâmetros grácos que poderam ser ajustados em uma chamada subsequente de "par". "u". • cex. • cex: Valor numérico que dene a scala do texto e dos símbolos grácos em relação ao valor padrão.CAPÍTULO 3. 0 para justicar o texto à esquerda 2.lab: Especica a ampliação a ser usada nos títulos dos eixos x e y em relação ao valor atual.1] e em muitos dispositivos também funcionam valores fora deste intervalo. "]". Se especicado FALSE então. Se for especicado um dos seguintes caracteres (entre aspas): "o". a caixa resultante se assemelha-rá a forma da correspondente letra maiúscula. y) onde x e y determinam.axis: Especica a ampliação a ser utilizada para a notação sobre os eixos em relação ao valor atual. • bg: Especica a cor a ser usada no fundo dos grácos. Se especicado igual a TRUE e não houver outros argumentos na função. respectivamente. Ver mais adiante a especicação das cores. • ann: Argumento lógico. • bty: Uma cadeia de caracteres que determina o tipo de caixa que será traçada ao redor dos grácos. 1 para justicar o texto à direita é permitido também qualquer valor no intervalo [0. Se TRUE solicita ao usuário um input antes que uma nova gura seja plotada.

altura) em "pixels".main: Cor a ser usada nos títulos principais dos grácos.lab: Usado para especicar a cor a ser usada nos títulos dos eixos X"e "Y". hsv..CAPÍTULO 3. BB consiste em dígitos hexadecimais com valores na faixa 00 a FF.sub: Especica a ampliação a ser usada nos subtítulos em relação ao valor atual.O. gray e rainbow proporcionam formas adicionais de gerar cores. • cxy: R.O. altura) em polegadas. Devem ser usados apenas valores múltiplos de 90. • col: Para especicar as cores dos símbolos a serem plotados. Especica a altura em polegadas dos caracteres. As cores podem ser especicadas das seguintes formas: con uma cadeia de caracteres dando o nome da cor (em inglês) entre aspas.O. Dimensões do dispositivo em polegadas. . As cores também podem ser especicadas por um índice de uma pequena tabela de cores que é compatível com S.axis: Usado para especicar a cor das notações sobre os eixos • col. R não avisa quando pontos fora da região gráca não são plotados.O.. por exemplo "blue".. • cin: R.) Para o grau de relatório de erro desejado.main: Especica a ampliação a ser usada nos títulos principais dos grácos em relação ao valor atual. • cra: R. Tamanho do caractere (largura. Também as funções rgb. altura) com o tamanho padrão dos caracteres do gráco. • crt: Um valor numérico para especicar em graus como devem ser rotacionados os caracteres individuais. • col. Uma lista de possíveis cores pode ser obtida com a função colors.O. • col. Retorna um vetor do tipo (largura. GG. • cex. • err: (Não implementado. Outra maneira de especicar cores é em termos de componentes RGB com uma cadeia da forma "#RRGGBB"onde cada um dos pares RR. • col. • din: R.sub: Cor a ser usada nos subtítulos. ESTATÍSTICA DESCRITIVA 25 • cex. • csi: R... Tamanho do caractere (largura.

CAPÍTULO 3.

ESTATÍSTICA DESCRITIVA

26

• fg: Especica a cor a ser usada no primeiro plano dos grácos. Esta é a

cor padrão usada em objetos como eixos e caixas ao redor dos grácos.

• fig: Um vetor numérico da forma c(x1, x2, y1, y2) que dá as coorde-

nadas da região da gura na região de apresentação do dispositivo.

• fin: Um vetor numérico da forma c(x, y) que especica o tamanho da

região da gura em polegadas.

• font: Um número inteiro que especica a fonte a ser usada no texto,

de modo que:
-

1 corresponde a
2 corresponde a
3 corresponde a
4 corresponde a

texto simples
texto em negrito
texto em itálico e
texto em itálico-negrito

• font.axis: Usado para especicar o tipo de letra a ser utilizada nas

notações sobre os eixos.

• font.lab: Usado para especicar o tipo de letra a ser usada nos títulos

dos eixos.

• font.main: Tipo de letra a ser usada nos títulos principais dos grácos.
• font.sub: Especica o tipo de fonte a ser usada nos subtítulos dos

grácos.

• gamma: Para a correção gamma, ver hsv(...,gamma) mas adiante.
• lab: Um vetor numérico da forma c(x, y, len), o qual modica a forma

de notação dos eixos. Os valores de x e y especicam o número aproximado de marcas de escala nos eixos x e y, respectivamente, len especica o tamanho das notações sobre os eixos, no entanto, atualmente
ainda não está implementado. O valor padrão de lab é c(5, 5, 7).

• las: Um número em {0,1,2,3} com o qual se especica o estilo da

notação dos eixos:

- 0: sempre paralelo ao eixo (valor padrão);
- 1: sempre horizontal;
- 2: sempre perpendicular ao eixo;

CAPÍTULO 3.

ESTATÍSTICA DESCRITIVA

27

- 3: sempre vertical. Note que a rotação de cadeias de caracteres ou
de caracteres individuais ( via par(srt=...)) não afeta os rótulos
dos eixos.
• lty: Usado para especicar o tipo de linha. Os tipos são especicados

com um número inteiro

• lwd: Um número inteiro para determinar a largura da linha. o valor

padrão é 1.

• mai: Um vetor numérico da forma c(abaixo, esquerda, acima, direita)

que dá os tamanhos das margens especicados em polegadas.

• mar: Um vetor numérico da forma c(abaixo, esquerda, acima, dire-

ita) a partir do qual especicamos o número de linhas entre as margens do dispositivo gráco e as margens da gura. O valor padrão é
c(5,4,4,2)+0.1.

• mex: Possui a mesma nalidade do argumento mar (expandir ou con-

trair a gura) a diferença e que ao invés de um vetor, usa-se um único
valor numérico. Para um bom funcionamento deste argumento use
valores no intervalo (0, 3].

• mfcol, mfrow: Um vetor da forma c(nl, nc). As guras seguintes

apareceram em um único dispositivo gráco como se fossem elementos
de uma matriz nl × nc, ordenadas por coluna (se for utilizado mfcol)
ou por linha (se for utilizado mfrow). Alternativas a este argumento
são as funções layout(...) e split.screen(...).

• mfg: Um vetor numérico da forma c(i, j) onde i e j indicam qual 

gura (considerando cada gura como um elemento de uma matriz) será
plotada em continuação a última plotagem. A matriz de guras deve ser
previamente ajustada por par(mfcol=c(...)) ou par(mfrow=c(...)).

• mgp: Um vetor da forma c(t, n, e) especicando a distância ( em unidades

"mex") dos títulos dos eixos, notações dos eixos e eixos, respectivamente, à margem da gura. O valor padrão é c(3, 1, 0).

• mkh: Especica a altura em polegadas dos símbolos a serem plotados
quando o valor de pch é um inteiro. Atualmente este é completamente

ignorado.

• new: Argumento lógico. O valor padrão é FALSE, se for especicado
como TRUE o comando gráco de alto nível seguinte não limpará a

janela atual, sobrepondo a nova gura à gura anterior.

CAPÍTULO 3.

ESTATÍSTICA DESCRITIVA

28

• oma: Um vetor da forma c(abaixo, esquerda, acima, direita) que dá o

tamanho das margens exteriores em linhas de texto.

• omd: Um vetor da forma c(x1,x2,y1,y2) usado para especicar outras

margens a região interna da gura em NDC (normalized device coordinates), isto é, como fração (em [0,1]) da região do dispositivo gráco.

• omi: Um vetor da forma c(abaixo, esquerda, acima, direita)para es-

pecicar o tamanho das margens exteriores em polegadas.

• pch: Pode ser um número inteiro ou um caractere a ser usado como
padrão em grácos de pontos. Possíveis valores de pch são especicados
no documento de ajuda da função points.
• pin: Especica as dimensões do gráco atual (largura, altura), em

polegadas.

• plt: Um vetor da forma c(x1, x2, y1, y2) que dá as coordenadas da

região gráca como fração da região da gura atual.

• ps: Um inteiro que determina o tamanho das notações e títulos dos

eixos.

• pty: Um caractere entre aspas para especicar o tipo de região gráca

a ser usada:

- "S"gera uma região gráca quadrada;
- "m"gera uma região gráca máxima.
• smo: (não-implementada) Rotação em graus de uma cadeia de cara-

cteres.

• tck: Usado para especicar a longitude dos marcadores de escala como

uma fração do menor valor entre a largura e altura da região gráca.
Se tck=1, serão inseridas linhas de grade no gráco. O valor padrão é
tck=NA e este é equivalente a tcl=-0.5.

• tcl: A longitude dos marcadores de escala como uma fração da altura
de uma linha de texto. O valor padrão é −0.5.
• type: Um caractere entre aspas que determina o tipo de gráco a ser

plotado. Possíveis valores deste argumento estão descritos no documento de ajuda da função plot.

regular.3 Descrevendo um conjunto de dados Para iniciar a descrição de um conjunto de dados é fundamental sabermos quais são os tipos de variáveis disponíveis. "mfcol". x2. "plt". "omi". • "pin". n) que determina as coordenadas dos marcadores de escala e o número de intervalos entre estes no eixo x. Observações: 1. "ps". Seus possíveis (entre aspas) são: . Quando uma escala logarítmica estiver sendo usada. x2. As variáveis são classicadas do seguinte modo: . "omd". "ylog" 3. "mex". y2) que dá os extremos das co- ordenadas da região gráca. "mfrow". Do mesmo modo para o eixo y . • "mai". • "oma". só podem ser ajustados com a chamada de par(): • "ask". • "usr".O. • xaxp: Um vetor da forma c(x1. • "new"."r". então o x-limite será 10 ^ par("usr")[1:2] . "mar". "pty". Os seguinte argumentos juntamente com os argumentos do tipo R. "mfg". 2. Argumentos R. y1. ESTATÍSTICA DESCRITIVA 29 • usr: Um vetor da forma c(x1. • "g"."n". • "lheight".O (Read-only) são usados apenas para consultas.CAPÍTULO 3. • "xlog". • xaxs: O estilo de cálculo de intervalo de eixo para o eixo x.

al. se houver necessidade de alguma alteração nos dados isso pode ser feito usando a função fix() do seguinte modo: fix(PA) Precisamos também do comando attach(PA) para trabalharmos com as colunas do objeto como variáveis.2 154 24. é o caso de "Idade".1 sobrepeso 106 123 0. e também de variáveis quantitativas.nominais Em nosso estudo vamos considerar os dados da Tabela 1.CAPÍTULO 3. Segue então os comandos necessários: PA=edit(data. para a variável Categoria temos: .95 GR Note que trocamos os nomes das variáveis.1 sobrepeso 110 122 0.1 sobrepeso 125 132 0. e além disso.frame()) Aqui estamos denido o objeto PA que é o data-frame contendo os dados.3 sobrepeso 89 104 0.2 156 30. seria entendido como função. Após digitado. um objeto com o nome de Altura(cm).86 GR 4 Sedentária 71 73. O usuário pode digitar os dados usando o editor do R.1 158 28. o objeto adequado ao armazenamento é um data-frame. por exemplo.86 GR 3 Sedentária 61 70. As variáveis qualitativas devem ser do tipo fator.0 152 27. isso porque espaços não são caracteres válidos para nomear objetos.5 normal 87 109 0.4 sobrepeso 99 121 0.discretas .] Categoria Idade Peso Altura IMC Classe_IMC Cintura Quadril RCQ Closse 1 Ativa 61 58. Devemos então redenir estas variáveis usando a função factor(). 2008).ordinais . que são oriundos de uma pesquisa antropométrica realizada com mulheres acima de 60 anos (Pinheiro et.contínuas • qualitativas .80 MR 2 Sedentária 69 63. Pela Tabela 1 podemos ver que dispomos de variáveis qualitativas.0 160 30.82 MR 6 Sedentária 71 77.90 GR 5 Ativa 63 58. que é semelhante a uma planilha eletrônica. Por exemplo. Vamos examinar então as seis primeiras linhas do objeto PA: > PA[1:6. • ESTATÍSTICA DESCRITIVA 30 quantitativas . Caso se queira entrar com os dados diretamente no R.6 152 25. como é o caso de "Categoria".

4 23.0 154.86 0.0 154.7 28.1 28 23.87 0.8 64.3 22.81 0.0 154.0 53.0 160.77 0.0 157.4 22.4 61.3 52.CAPÍTULO 3.89 0.1 30.87 0.3 24.76 0.6 24.9 25.7 75.0 156.83 0.5 Classe IMC normal sobrepeso sobrepeso sobrepeso sobrepeso sobrepeso sobrepeso normal sobrepeso normal sobrepeso normal normal normal normal normal normal sobrepeso normal normal sobrepeso normal normal normal normal normal normal normal normal normal normal normal normal sobrepeso sobrepeso sobrepeso sobrepeso sobrepeso sobrepeso normal sobrepeso normal sobrepeso normal Cintura (cm) 87 89 106 110 99 125 115 85 100 74 90 76 80 78 72 78 76 106 71 76 89 73 80 84 82 76 81 76 76 72 81 78 76 90 98 96 82 78 73 93 90 90 107 92 Quadril (cm) 109 104 123 122 121 132 125 103 120 83 111 90 102 96 81 90 95 117 83 89 106 86 108 110 99 95 104 89 87 106 98 90 87 103 110 110 93 89 82 120 117 116 120 110 RCQ 0.0 151.2 60.7 21.2 58.8 21.86 0.0 153.0 165.0 165.8 21.2 58.1 26.7 68.78 0.0 152.0 61.0 160.0 150.0 156.1 62.5 27.8 24.78 0.3 59.4 26.4 66.6 21.8 25.1 73.7 22.8 27.87 0.0 156.2 60.0 156.1 25.4 30.0 IMC 24.9 23.0 152. 31 ESTATÍSTICA DESCRITIVA Tabela 3.0 160.1: Pesquisa antropométrica realizada em mulheres idosas acima de 60 anos que receberam atendimento no Hospital do Idoso em Dezembro de 2008 Categoria Idade Ativa Sedentária Sedentária Sedentária Ativa Sedentária Sedentária Sedentária Ativa Sedentária Sedentária Sedentária Sedentária Sedentária Sedentária Ativa Ativa Ativa Ativa Ativa Ativa Ativa Ativa Ativa Ativa Ativa Ativa Ativa Ativa Ativa Ativa Ativa Sedentária Sedentária Sedentária Sedentária Sedentária Sedentária Sedentária Ativa Sedentária Sedentária Sedentária Sedentária 61 69 61 71 63 71 72 68 66 69 72 67 63 66 63 63 67 71 63 60 69 64 63 66 71 64 70 63 66 64 69 69 64 63 72 73 68 71 72 69 68 68 73 79 Peso (Kg) 58.0 150.5 26.2 61.7 25.1 58.0 158.83 0.3 27.3 24.84 Classe RCQ KCQ MR GR GR GR MR GR GR MR MR GR MR MR MR MR GR GR MR GR GR MR MR MR PR PR MR MR MR MR GR PR MR GR GR GR GR GR GR GR GR MR PR MR GR MR .78 0.95 0.1 Altura (cm) 154.6 77.0 154.6 62.90 0.7 60.8 23.0 153.88 0.0 160.9 56.84 0.7 23.78 0.2 54.3 54.83 0.4 21.1 22.3 24.8 55.0 51.91 0.0 159.6 25.2 20.86 0.0 155.87 0.8 22.0 160.3 23.6 65.89 0.8 64.7 28.8 27.6 51.89 0.0 151.0 158.0 156.89 0.1 57.5 22.0 52.0 152.0 49.0 70.0 50.0 76.0 150.2 63.0 155.88 0.0 158.5 153.80 0.3 50.3 28.85 0.0 160.85 0.0 163.81 0.6 56.80 0.74 0.2 63.87 0.83 0.2 68.0 55.2 51.0 157.85 0.1 22.80 0.87 0.92 0.0 150.5 23.0 150.89 0.82 0.0 152.68 0.3 53.0 158.84 0.0 160.0 152.2 59.

apresentar (através de grácos e/ou tabelas) e resumir (através de medidas) cada uma das variáveis em estudo de forma individual.5111111 Se quisermos o percentual basta fazer: > Cat.prop Categoria Ativa Sedentária 0. desde que os valores destas sejam caracteres. As frequências simples e relativas são obtidas da seguinte forma: > Cat.2.freq) >Cat.freq=table(Categoria) > Cat.prop > Cat. ESTATÍSTICA DESCRITIVA 32 > Categoria=factor(Categoria) > Categoria[1:10] [1] Ativa Sedentária Sedentária Sedentária Ativa Sedentária [7] Sedentária Sedentária Ativa Sedentária Levels: Ativa Sedentária O mesmo deve ser feito para as demais variáveis qualitativas. 3. Vejamos agora as principais representações e medidas para cada tipo de variável.table(Cat. como foi visto na subseção 2. Poderíamos também entrar com estes dados através da importação de um arquivo externo. um gráco de setores ou de colunas e a "moda"como medida resumo.3.prop=prop.CAPÍTULO 3. pois as funções de importação de dados já o fazem automaticamente.1 Descrição Univariada Consiste em classicar. Neste caso.4888889 0.freq Categoria Ativa Sedentária 22 23 >Cat.perc .perc=100*Cat. não há necessidade de redenir as variáveis qualitativas como fator. Variável qualitativa Vamos escolher a variável Categoria para ilustração. Podemos obter uma tabela de frequências simples e relativas.

col="blue".mo [1] "Sedentária" Neste mesmo pacote há uma função que nos permite obter todas as informações acima com um único comando. .CAPÍTULO 3."51. > #Carregar pacote > require(prettyR) > Cat.ylim=c(0.space=0. > barplot(Cat. ESTATÍSTICA DESCRITIVA 33 Categoria Ativa Sedentária 48.11 mode = Sedentária Valid n = 45 Onde os valores de x são as frequências simples.freq) > barplot(Cat.font=2) Veja que usamos a função de baixo nível text() combinada com a função interativa locator() para poder inserir os percentuais em cada setor do gráco.freq. Note que no segundo comando trocamos a cor das colunas.88889 51.89%". Vejamos: > describe.11%").c("48. Vamos agora gerar um gráco de setores.11111 Uma das maneiras de se obter a moda é utilizando a função Mode() do pacote "prettyR".mo=Mode(Categoria) > Cat.89 51.25)) O resultado é exibido nas guras 2 e 3.factor(Categoria) Factor Ativa Sedentária x 22 23 Percent 48.ylab="número de mulheres". adicionamos um título ao eixo y e aumentamos o seu limite.freq) > text(locator(2).8. Vamos obter agora um gráco de barras e um em setores. Percent retorna os percentuais e mode a moda. > pie(Cat. aumentamos o espaço entre estas.

04444444 0. ESTATÍSTICA DESCRITIVA Figura 3.freq=table(Idade) > Ida.02222222 > Ida.prop > Ida.02222222 79 0.1: Gráco de barras para a variável Categoria com padrão do R 34 Figura 3.17777778 68 69 70 0.2: Gráco de barras para a variável Categoria com alguns ajustes Variável quantitativa discreta Para este tipo de variáveis temos uma maior variedade de representações grácas e também de medidas resumo.table(Ida.11111111 0. da mesma forma que zemos para as variáveis qualitativas. Podemos.13333333 0.08888889 0.08888889 0.prop=prop. > Ida.04444444 71 72 73 0.freq Idade 60 61 63 64 66 67 68 69 70 71 72 2 2 8 4 4 2 4 6 1 5 4 > Ida.perc Idade 73 79 2 1 64 66 67 0.08888889 0.freq) > Ida. Vamos tomar então a variável Idade como exemplo.04444444 0. obter tabelas de frequências absoluta e relativas.perc=100*Ida.CAPÍTULO 3.prop Idade 60 61 63 0.08888889 0.04444444 .

media=mean(Idade).3: Gráco em setores para a variável Categoria 60 4. 1.2 > #Mediana > Ida.333333 61 63 64 66 67 4.888889 4.444444 2.Ida.888889 4.444444 69 13.Ida.Ida.222222 11.mo [1] "63" > #Decis > Ida. Para os coecientes de assimetria e curtose é necessário instalar o pacote agricolae: > #Média > Ida. abaixo segue algumas delas.mediana [1] 68 > #Moda > Ida. 0.media [1] 67.mo=Mode(Idade).444444 17.mediana=median(Idade).777778 8.CAPÍTULO 3.1)).444444 70 71 72 73 79 2.888889 Podemos obter várias medidas resumo para esta variável.111111 8.Ida.decis 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% 60 63 63 64 66 68 69 69 71 72 79 > #Quartis .222222 68 8.decis=quantile(Idade. ESTATÍSTICA DESCRITIVA 35 Figura 3.888889 8.probs = seq(0.

Ida.dq 75% 8 > #Desvio médio > Ida.dm [1] 3.dm=sum(abs(Idade-mean(Idade)))/length(Idade).cur [1] -0.dp/Ida.00 60.CAPÍTULO 3.var [1] 17.ass [1] 0. ESTATÍSTICA DESCRITIVA 36 > Ida.92 > #Variância > Ida. 1.16 62.percentis=quantile(Idade.ass=skewness(Idade). 0.dp [1] 4.Ida.00 60. 0.06221914 > #Assimetria > require(agricolae) > Ida.25)).cur=kurtosis(Idade).cv=Ida.probs = seq(0.quartis[2].01)) > Ida.ylab="Idade") .76 61.freq.Ida.quartis 0% 25% 50% 75% 100% 60 63 68 71 79 > #Os dez primeiros percentis > Ida.percentis[1:10] 0% 1% 2% 3% 4% 5% 6% 7% 8% 9% 60.00 61.00 61.dp=sd(Idade).1312109 > #Distribuição leptocúrtica As frequências absolutas de uma variável discreta podem ser representada gracamente da seguinte forma: >plot(Ida.var=var(Idade).Ida.484444 > #Coeficiente de variação > Ida.32 60.Ida.181126 > #Distância interquartil > Ida.Ida.quartis=quantile(Idade.2782522 > # Distribuição assimétrica à direita > #Curtose > Ida.Ida.probs = seq(0.00 60.Ida.quartis[4]-Ida.48182 > #Desvio-padrão > Ida.04 62.cv [1] 0.ylab="número de mulheres") Uma outra representação é através de um gráco boxplot : >boxplot(Idade.media.dq=Ida. 1.

67. > summary(Idade) Min.5: Gráco Boxplot da variável Idade .0 Figura 3.4: Gráco de frequências absolutas da variável Idade Figura 3. 79.0 68. 37 ESTATÍSTICA DESCRITIVA Podemos obter algumas medidas de uma só vez utilizando a função summary().0 63.CAPÍTULO 3. 1st Qu.0 Mean 3rd Qu. Median 60.2 71.0 Max.

13636364 13.06818182 6.table(Peso.7.2. Uma maneira simples de denir o vetor breaks é utilizando a função seq().).df[.7] 9 0.CAPÍTULO 3. No R.1. ao invés de termos uma tabela de frequências simples ou relativas para cada valor observado. por exemplo.00000 Ou seja. ESTATÍSTICA DESCRITIVA 38 Variável quantitativa contínua Para obtermos representações semelhantes às anteriores neste tipo de variável.454545 (53.5)] colnames(Peso.media=mean(Peso). Vamos então."Percentual") Peso.57.5. Esses pontos de cortes irão corresponder aos limites inferior e superior de cada classe.80000 53.media . As medidas resumo não diferem daquelas mostradas para o caso discreto.22857 73.69. primeiramente.Peso.818182 (69. relativa e os percentuais.l=8))) Peso..cl)=c("Peso".freq) Peso.cl Peso Freq simples Freq relativa Percentual (49..11429 77."Freq relativa".seq(min(Peso).-c(3.5] 12 0. > > > > > > > 1 2 3 4 5 6 7 Peso."Freq simples".8. estamos separando a variável Peso em 8 partes.2] 3 0.272727 (61. onde: x é a variável que se deseja separar e breaks é um vetor contendo os pontos de cortes.breaks.Peso. vejamos como ca então a tabela de frequências simples.65.454545 (65.6] 6 0.53.max(Peso).27272727 27.frame(Peso. teremos as frequências para cada classe.1] 1 0.prop Peso.df=data.272727 (73.45714 65.57143 61.09090909 9. devemos inicialmente dividi-las em classes de tamanhos iguais. podemos denir classes em uma variável usando a função cut().perc) Peso.636364 (57. Desta forma. Vejamos então: > #Média > peso.61.68571 57.l=8) [1] 49.02272727 2.77] 4 0.prop. para a variável Peso: > seq(min(Peso).3] 9 0.max(Peso).freq=table(cut(Peso.20454545 20.prop=prop.cl=Peso. examinar esta função: Sintaxe: cut(x..perc=100*Peso.20454545 20.3.peso.freq.6.73.34286 69.090909 Veja que aqui já concatenamos em uma mesma tabela as frequências simples.

ESTATÍSTICA DESCRITIVA 39 [1] 59.152394 > #Distância interquartil > peso.probs = seq(0.280 50.dq=peso.percentis[1:10] 0% 1% 2% 3% 4% 5% 6% 7% 8% 9% 49.99111 > #Mediana > peso.probs = seq(0.mediana [1] 59.156 51.2" > #Decis > peso.01)) > peso.00 > #Quartis > peso.70 62.1192242 > #Assimetria > require(agricolae) > peso.var [1] 51.var=var(Peso).8 54.20 60.56 64. 0.peso.peso.032 50.800 49.peso.dm [1] 5.288 > #Variância > peso.probs = seq(0.media.mo [1] "58.36 55.48 69.percentis=quantile(Peso.cv=peso. 1.563852 > #Coeficiente de variação > peso.50 77.dp [1] 7.12 59.quartis[4]-peso.peso.7067071 > # Distribuição assimétrica à direita .peso.peso. 0.quartis 0% 25% 50% 75% 100% 49.peso.peso.80 51.peso.7 59.42 53.676 51.dm=sum(abs(Peso-mean(Peso)))/length(Peso).888 49.mo=Mode(Peso).dp/peso. 0.25)).7 > #Desvio médio > peso.quartis=quantile(Peso.024 51.15674 > #Desvio-padrão > peso.dp=sd(Peso).0 > #Os dez primeiros percentis > peso.CAPÍTULO 3.ass=skewness(Peso).cv [1] 0.40 58.quartis[2].ass [1] 0.decis 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% 49.2 > #Moda > peso.mediana=median(Peso).4 77.2 63.1)).decis=quantile(Peso.dq 75% 8. 1.976 50. 1.peso.076 50.

1st Qu.70 59. Median Mean 3rd Qu.CAPÍTULO 3. 49. 40 ESTATÍSTICA DESCRITIVA > #Curtose > peso.80 54.6: Histograma da variável Peso Outra forma de representarmos variáveis contínuas é através do diagrama Ramos-e-Folhas.40 Max.05477938 > #Distribuição leptocúrtica > summary(Peso) Min.99 63. com bases proporcionais aos intervalos das classes e a área de cada retângulo proporcional à respectiva frequência. Por exemplo. Vejamos então o relativo à variável Peso. No R. através de histogramas que é um gráco de colunas contíguas.20 59. 77. um Ramo-eFolha para a variável IMC é obtido da seguinte forma: .00 A representação gráca é feita especicamente.cur [1] 0. > hist(Peso.peso. usamos a função hist(). para gerar um histograma.main="") Figura 3.ylab="Frequência". A função utilizada é stem().cur=kurtosis(Peso).

tab Classe_IMC Categoria normal sobrepeso Ativa 18 4 Sedentária 9 14 .CAPÍTULO 3. Qualitativa vs Qualitativa Neste caso a representação tabular será feita por meio de uma tabela de dupla entrada onde cada elemento desta representa a frequência observada das realizações simultâneas das duas variáveis em estudo.2 Descrição Bivariada Frequentemente estamos interessados em analisar o comportamento conjunto de duas ou mais variáveis.cat. Assim como foi visto no caso univariado.Classe_IMC).3. as técnicas de análise dependerão dos tipos de variáveis envolvidas. podemos ter as seguintes situações: (a) as duas variáveis são qualitativas. Como vimos no caso univariado a tabela de frequências absolutas é dada pela função table(): > cat. Considerando duas variáveis. (b) as duas variáveis são quantitativas.cimc. ESTATÍSTICA DESCRITIVA 41 > stem(IMC) The decimal point is at the | 20 21 22 23 24 25 26 27 28 29 30 | | | | | | | | | | | 3 13469 1677788 24455799 333578 34588 788 1358 0146 11 3.cimc. e (c) uma variável é qualitativa e outra é quantitativa.tab=table(Categoria. no intuito de encontrar possíveis relações entre estas. Vamos tomar como exemplo as variáveis Categoria e Classe IMC.

mar=1) Classe_IMC Categoria normal sobrepeso Ativa 0.40000000 0.tab. existem três possibilidades de expressarmos a proporção de cada casela: (a) em relação ao total geral.6086957 > > #Prop.20000000 0.7777778 Primeiro dividimos cada elemento da tabela pelo total geral.tab/sum(cat.tab.legend=T) > barplot(cat.beside=T) .31111111 > > #Prop.table(cat.tab.cimc.tab) Classe_IMC Categoria normal sobrepeso Ativa 0.3333333 0. Vejamos então como obter essas três representações: > #Prop.cimc. A representação gráca pode ser feita através de grácos de barras como ilustra a gura 7. ESTATÍSTICA DESCRITIVA 42 No caso de frequências relativas. (b) em relação ao total de cada linha.tab. em relação ao total geral > > cat.cimc.08888889 Sedentária 0.8181818 0. respectivamente.2222222 Sedentária 0. (c) ou em relação ao total de cada coluna.CAPÍTULO 3. foi utilizado o argumento mar=1 e mar=2. obtendo assim a primeira representação.3913043 0. > barplot(cat. Note que para obtermos as proporções com relação às linhas e colunas. em relação ao total de cada coluna > > prop.6666667 0.cimc.cimc. em relação ao total de cada linha > > prop.cimc.table(cat.1818182 Sedentária 0.legend=T.mar=2) Classe_IMC Categoria normal sobrepeso Ativa 0.

Vamos ver então como obter estas medidas.value" [7] "call" . respectivamente.cases" "statistic" "parameter" "approx. frequências observadas e esperadas nas k posições da tabela de dupla entrada.CAPÍTULO 3. T = C [(t − 1)/t]2 onde n é o número de observações e t é o mínimo entre linhas e colunas da tabela.7: Grácos do cruzamento entre as variáveis Categoria e Classe IMC A associação entre duas variáveis qualitativas é avaliada através da estatística chi-quadrado dada por: χ2 = k X (oi − ei )2 i=1 ei onde oi e ei são. ESTATÍSTICA DESCRITIVA 43 Figura 3.tab) > names(summary(cat.538.tab) Number of cases in table: 45 Number of factors: 2 Test for independence of all factors: Chisq = 8.cimc.cimc. > #Teste de associação > summary(cat.003479 > #Vendo os valores de summary(cat.vars" "n. p-value = 0. Outras medidas derivadas desta são o coeciente de contingência C e o coeciente de contingência modicado T : s C= χ2 χ2 + n .tab)) [1] "n.ok" "p.cimc. df = 1.

CRCQ.cl=cut(RCQ.0.RCQ.chi/(est.RCQ.CRCQ.77] (0.CAPÍTULO 3.ca.77.tb=table(Classe_RCQ.tb) RCQ.38636364 MR 0.86.95] GR 0.45454545 0.cl Classe_RCQ (0.T [1] 1.chi=summary(cat.00000000 0.n [1] 45 > C=sqrt(est. ESTATÍSTICA DESCRITIVA 44 > #Estatística qui-quadrado > est.C [1] 0.t [1] 2 > T=C/((t-1)/t)^2.cimc.77.0.0.68.00000000 0.09090909 0.tab)).est.00000000 .86] (0.86] (0.0.max(RCQ).77] (0. Inicialmente iremos obter uma tabela de frequências simples.00000000 PR 0.cl Classe_RCQ (0.cl).00000000 0.06818182 0.cimc.tb/sum(RCQ.59734 Quantitativa vs Qualitativa Nesta situação é comum analisarmos como se comporta a variável quantitativa em cada nível da variável qualitativa.CRCQ.399335 > #Coeficiente de contigência modificado > t=min(dim(cat.CRCQ.chi [1] 8.tab)$stat.53755 > #Coeficiente de contingência > n=summary(cat.seq(min(RCQ).l=4)) #Obtendo a tabela de frequência simples RCQ.tb RCQ.95] GR 0 3 17 MR 0 20 0 PR 4 0 0 As tabelas de frequências relativas são obtidas da seguinte forma: > RCQ. para isso vamos agrupar a variável RCQ em três classes: > > > > #Separando a variável RCQ RCQ.0.tab)$n. Vamos tomar então as variáveis RCQ e Classe_RCQ para exemplicar este conceito.cimc.chi+n)).0.68.86.

CAPÍTULO 3.

ESTATÍSTICA DESCRITIVA

45

> prop.table(RCQ.CRCQ.tb,mar=1)
RCQ.cl
Classe_RCQ (0.68,0.77] (0.77,0.86] (0.86,0.95]
GR
0.00
0.15
0.85
MR
0.00
1.00
0.00
RCQ.cl
Classe_RCQ (0.68,0.77] (0.77,0.86] (0.86,0.95]
GR 0.0000000
0.1304348 1.0000000
MR 0.0000000
0.8695652 0.0000000
PR 1.0000000
0.0000000 0.0000000

Uma possível representação gráca deste cruzamento seria um boxplot onde
no eixo y teremos a variável quantitativa, no caso, RCQ e no eixo x os níveis
da variável qualitativa, no caso, Classe_RCQ.
> boxplot(RCQ~Classe_RCQ,ylab="RCQ",xlab="Classe RCQ")

Figura 3.8: RCQ explicada por Classe RCQ
Podemos obter todos medidas descritivas vistas anteriormente, no entanto,
iremos resumir a variável quantitativa em cada nível da variável qualitativa.
No R, isso pode ser feito utilizando a função tapply():
> #Médias
> tapply(RCQ,Classe_RCQ,mean)
GR
MR
PR
0.8845 0.8175 0.7380

CAPÍTULO 3.

ESTATÍSTICA DESCRITIVA

46

> #Medianas
> tapply(RCQ,Classe_RCQ,median)
GR
MR
PR
0.880 0.825 0.740
> #Quantis
> tapply(RCQ,Classe_RCQ,quantile)
$GR
0% 25% 50% 75% 100%
0.86 0.87 0.88 0.89 0.95
$MR
0% 25%
50% 75% 100%
0.780 0.800 0.825 0.840 0.850
$PR
0% 25% 50% 75% 100%
0.68 0.74 0.74 0.76 0.77
> #Variâncias
> tapply(RCQ,Classe_RCQ,var)
GR
MR
PR
0.0005102632 0.0006302632 0.0012200000
> #Desvios-padrão
> tapply(RCQ,Classe_RCQ,sd)
GR
MR
PR
0.02258901 0.02510504 0.03492850

Quantitativa vs Quantitativa
Quando as variáveis envolvidas são ambas do tipo quantitativo, procedemos
de forma similar ao que havia sendo feito. Para obter uma tabela de frequências, por exemplo, devemos agrupar as variáveis em classes. Vejamos
um exemplo utilizando as variáveis Peso e IMC. Vamos inicialmente agrupar
cada uma em duas classes.
>
>
>
>
>

#Agrupando as var. em duas classes
peso.cl=cut(Peso,seq(min(Peso),max(Peso),l=3))
IMC.cl=cut(IMC,seq(min(IMC),max(IMC),l=3))
#Frequências simples
pe.imc.tb=table(peso.cl,IMC.cl);pe.imc.tb
IMC.cl

CAPÍTULO 3.

ESTATÍSTICA DESCRITIVA

47

peso.cl
(20.3,25.2] (25.2,30.1]
(49.8,63.4]
25
7
(63.4,77]
0
11

As tabelas com de frequências relativas são obtidas da mesma que obtivemos
para os casos anteriores. Recomenda-se ao leitor fazê-lo como exercício. Um
dispositivo muito útil para representar e se vericar a associação entre duas
variáveis quantitativas é o gráco de dispersão. Vejamos um exemplo:
> plot(Peso,IMC)

Figura 3.9: Gráco de dispersão Peso vs IMC
Para quanticar a correlação entre duas variáveis quantitativas devemos usar
algum coeciente de correlação. A função cor() oferece três opções de coecientes, tendo como padrão o coeciente de correlação linear de Pearson.
> #Coeficiente de correlação de Pearson
> cor(Peso,IMC)
[1] 0.8983048
> #Coeficiente de correlação de Kendall
> cor(Peso,IMC,method="kendall")
[1] 0.7414632
> #Coeficiente de correlação de Spearman
> cor(Peso,IMC,method="spearman")
[1] 0.9019382

. ESTATÍSTICA DESCRITIVA 48 3.sombra=function (.i)) } par(new=T) pie(.sombra pizza. las = 1) . c(1.) par(op) } #Aplicando à variável Categoria pizza. col=rgb(i. c(4.3). border=NA. exploraremos mais um pouco os recursos grácos. > > + + + + + + + + + + + + > > #Definir a função pizza. ) #Definir as margens da primeira figura par(mar=c(1. xlab=''. 2.freq) Gráco de dispersão com boxplots marginais Neste gráco.6). byrow=T ).1.1*(1-i) polygon(0.1).3.) #criando a região que dará o efeito de sombra op=par(new=T) a=seq(0.3 Alguns grácos mais elaborados Em complemento ao que foi feito nas subseções anteriores. agora com um efeito de sombra. Gráco de setores com sombra: Vamos gerar o mesmo gráco de setores feito anteriormente.1.2+r*sin(a). > > > + + > > > > + + op=par() #Criar a divisão desejada para o dispositivo layout( matrix( c(2..0.2)) #Gerar o gráfico de dispersão plot(Peso~IMC.sombra(Cat. Iremos acrescentar mais algumas informações aos grácos mostrados anteriormente. -0.8-0..5. além de visualizar o comportamento conjunto das variáveis.CAPÍTULO 3.. 2.2*pi.. visualizamos também o comportamento individual através dos boxplots.i. ylab=''..) { pie(.1+r*cos(a).length=100) for (i in (256:64)/256) { r=0.

2)) #Plotar o boxplot marginal no eixo y boxplot(IMC. line=0) #Definir as margens da terceira figura par(mar=c(5.2.1. heights=c(1. widths=c(3.1. horizontal=T. > > > > > > > > > > > > ESTATÍSTICA DESCRITIVA 49 #Definir as margens da segunda figura par(mar=c(1.1)) #Plotar o boxplot marginal no eixo y boxplot(Peso.plot=F) yhist=hist(Peso. line=1) par(op) Gráco de dispersão com histogramas marginais Neste gráco ao invés de acrescentarmos boxplots nas margens da gura.3).1. > > > > > > > > > > > > > > > > > > > > > > > > #Definir os histogramas marginais xhist=hist(IMC.1.border=4) title(ylab='Peso (Kg)'. axes=F.plot=F) top <.1)) #Plotar o histograma marginal no eixo x . respect=TRUE) #Definir as margens da primeira figura par(mar=c(4.4.CAPÍTULO 3. yhist$counts)) b<-matrix(c(2.max(c(xhist$counts.byrow=TRUE) #Criar a divisão desejada para o dispositivo nf <.border=4) title(xlab='IMC (Kg/m2)'.0.2.4.1).5.3).1.2.IMC) #Definir as margens da segunda figura par(mar=c(0. vamos acrescentar histogramas. axes=F.layout(b.1)) #Plotar o gráfico de dispersão plot(Peso.

top). top).0. density=20.1)) #Plotar o histograma marginal no eixo y barplot(yhist$counts.CAPÍTULO 3.axes=FALSE.1. density=20. space=0. axes=FALSE. angle=-45. angle=-45) #Definir as margens da terceira figura par(mar=c(4. col=1. ylim=c(0. xlim=c(0.space=0.10: Gráco em setores com efeito de sombra 50 . col=1.horiz=TRUE) Figura 3. > + > > > > > > > > + ESTATÍSTICA DESCRITIVA barplot(xhist$counts.

12: Gráco de dispersão com histogramas marginais 51 . ESTATÍSTICA DESCRITIVA Figura 3.11: Gráco de dispersão com boxplots marginais Figura 3.CAPÍTULO 3.

ESTATÍSTICA DESCRITIVA 52 Note que. . que dene o anglo de inclinação das linhas. Isso foi feito utilizando o argumento density que dene o número de linhas a serem plotadas e angle.CAPÍTULO 3. nos histogramas marginais acrescentamos linhas como preenchimento.

etc. Vejamos então algumas. caso contrário. Essas expressões geralmente são construídas com o uso de operadores. antes de iniciarmos este estudo.Capítulo 4 Probabilidade e Inferência O objetivo deste capítulo é mostrar de que forma podemos utilizar o R para trabalhar com distribuições de probabilidade.3.1. se este é verdadeiro(T ou TRUE). aprendermos como denir nossas próprias funções.3 já utilizamos este recurso. será executada a expressão expres_3. 4. Note que. É conveniente.1 Controle de uxo e denição de funções Assim como em qualquer outra linguagem de programação. na subseção 3. Abaixo podemos ver a descrição dos operadores básicos da linguagem R. a linguagem R possui várias instruções destinadas a alterar a sequência normal de execução dos comandos. 4. A forma da instrução condicional é a seguinte: if (expres_1) expres_2 else expres_3 onde o resultado de expres_1 deve ser um valor lógico. é calculada a expressão expres_2.1 Execução condicional Instruções condicionais permitem ao usuário executar várias alternativas dependendo se uma condição for satisfeita. e se a instrução contém a expressão else. já que estas são habitualmente usadas na construção de funções. gerar amostras aleatórias. estimar parâmetros de uma população. Falaremos também sobre ordens de controle. 53 .

repeat() e while(). e expres_2 é uma expressão.2 Ciclos Ciclos no R são implementados com as ordens for().CAPÍTULO 4. frequentemente agrupada. Operadores Aritméticos • + : Soma • . em cujas . 2. em que n é um número natural).: Diferença • * : Produto • / : Divisão • x%%y : Indica o resto da divisão de x por y • x %/% y : Indica a divisão inteira de x por y • %*% : Multiplicação matricial • %x% : Produto de Kronecker 4. • | e || : Indica o argumento lógico (OR ou OU). Operadores Relacionais: • < : Menor • > : Maior • <= : Menor igual • >= : Maior igual • == : Igual • != : Diferente 3. e o segundo aplica-se a vetores de comprimento unitário. O primeiro se aplica a todos os elementos de um vetor. Os ciclos do tipo for são da seguinte forma: > for (nome in expres_1) expres_2 onde nome representa uma variável de controle das interações. PROBABILIDADE E INFERÊNCIA 54 1. expres_1 é um vetor (geralmente uma sequência do tipo 1 : n. Operadores Lógicos: • ! : Indica negação • & e && : Indica o argumento lógico (AND ou E).1.

6.8) > c=numeric(length(a)) > for(i in 1:4){ + c[i]=a[i]+b[i] + } > > c [1] 6 8 10 12 Aqui o for é utilizado para percorrer os vetores a e b somando cada um de seus elementos e criando assim o vetor c..1.CAPÍTULO 4. o que torna mais simples e prática a posterior utilização destes. a linguagem R ganha considerável poder e elegância. esta expressão é calculada repetidamente à medida que a variável de controle nome percorre os valores da expres_1.3.4) > b=c(5.3 Denindo funções Como já referido neste texto. Outras estruturas de ciclos são: > repeat expressão e > while (condição) expressão Vamos repetir o exemplo anterior utilizando while > d=numeric(length(a)) > i=1 > while(i<=4){ + d[i]=a[i]+b[i] + i=i+1 + } > d [1] 6 8 10 12 4.. Desta forma.7. arg2. > a=c(1. Uma função é denida com a seguinte declaração: > Nome_da_Função=function(arg1. . R permite a criação de objetos do tipo function. PROBABILIDADE E INFERÊNCIA 55 sub-expressões pode aparecer a variável de controle.2.) expressão A nova função geralmente é chamada da seguinte forma: . O exemplo a seguir ilustra este procedimento. que são funções que permitem generalizar e encapsular procedimentos.

devemos escrever o prexo da distribuição precedido da letra que indica a operação desejada. Nas funções precedidas de q o primeiro argumento diz respeito a uma probabilidade.CAPÍTULO 4. para gerar números aleatórios da distribuição exponencial devemos usar a função rexp(). > fatorial=function(n){ + fat=1 + { + if (n==0) + return(fat) + else{ + for (i in 1:n){ + fat=fat*(n-(n-i)) + } + } + } + + return(fat) + } > > fatorial(5) [1] 120 4.. pelas letras: d. respectivamente. No R estas operações são representadas. q e r. O usuário pode consultar a ajuda do R para ver os prexos de várias distribuições de probabilidade. .2 Distribuições de Probabilidade O R dispõe de uma série de funcionalidades que permitem operações com distribuições de probabilidade. obtenção de quantis e geração de números aleatórios.) e pode ser utilizada em qualquer altura do código. PROBABILIDADE E INFERÊNCIA 56 Nome_da_Função=function(arg1.. ou seja. Para as funções precedidas de d e p o primeiro argumento é sempre um quantil. Vamos ilustrar o uso deste recurso através de um exemplo simples. As operações básicas com distribuições de probabilidade são: cálculo de densidade de probabilidade. Neste criamos a função fatorial que retorna o fatorial de um número natural. arg2. Por exemplo. E nos comandos precedidos de r o primeiro argumento especica o tamanho da amostra aleatória a ser gerada. com o objetivo de ilustrar o uso destas funções. Aqui vamos resumir algumas delas. . cálculo de probabilidade acumulada. p.

34617 111.1064639 0.10) [1] 0. Se este não for utilizado.9567445 -0. σ 2 = 1).2.15526 112.5 > qnorm(0. basta executar: ?Normal.9200052 -1.75163 101.tal que. Podemos repetir estas operações com qualquer distribuição normal.10) [1] 100 > set.5) retorna o valor de q .5) [1] 0 > set. dar valor aos argumentos mu e sd. onde são especicados.5. Os argumentos padrão das funções referentes à distribuição normal assumem a normal padrão N (µ = 0.87320 111. Esta associa a amostra aleatória gerada a um número (no nosso exemplo foi utilizado 12). > dnorm(0) [1] 0.5771695 -0.02419707 > pnorm(90. O comando qnorm(0.36680 96. a cada repetição do comando de geração de números aleatórios uma novos números seram gerados.3989423 > pnorm(0) [1] 0.6282552 -0. a média e o desvio padrão. o que corresponde a mediana da distribuição. Vejamos então algumas operações básicas.seed().4280148 Com o primeiro comando calculamos f (0) em seguida F (0) = P (X ≤ 0).19728 117. Vejamos então para uma N (µ = 100.CAPÍTULO 4. Para ver a descrição completa dos argumentos. PROBABILIDADE E INFERÊNCIA 57 4.42526 104.10) [1] 105. bastando para isso. P (X ≤ 0.3153487 -0. > dnorm(90.9976421 -0. 159.1 Distribuição Normal A distribuição normal é referenciada no R pelo prexo norm. .100.seed(12) > rnorm(10) [1] -1. Isso pode ser feito utilizando a função polygon().10) [1] 0.100. 5) = q . Note que antes do comando de geração de números aleatórios.29507 [8] 102. usamos a função set. σ 2 = 100).4805676 1. 100) ≤ 90) = 0.54327 97.05144 Vamos ilustrar gracamente a probabilidade P (N (100. Portanto.1586553 > qnorm(0.seed(13) > rnorm(10.2722960 [7] -0.100.100. respectivamente. a mesma amostra aleatória poderá ser obtida várias vezes.

ou seja.250.80.100.80.80). retornando o valor mínimo ou máximo.dnorm(seq(60.lty=1:3) #Funções de distribuição curve(pnorm(x. Esta examina uma função em um determinado intervalo.250.density=10) Figura 4.100.-50.50).100.ylab="f(x)".-50. Am de ilustrar esta propriedade vamos construir uma função que retorne a moda de uma distribuição normal.add=T.lty=2) curve(dnorm(x.0).add=T.ylab="f(x)".70.lty=2) curve(pnorm(x. a sua mediana.250.90.90. + c(0. Para encontrar o argumento que maximiza a função usaremos a função opitmize().ylab="f (x)") > polygon(c(60. > > > > > > > > > > #Funções densidade curve(dnorm(x.100.50)"."N(100.c("N(100.10).90)."N(80.-50. desta.50)".ylab="F(x)"."N(80.250.l=30).250. .80)").ylab="F(x)".lty=1:3) As distribuições simétricas (como é o caso da distribuição normal) têm a seguinte propriedade M d = X = M0 . Para mais detalhes da função opitimize() execute ?opitimize.add=T.l=30).1: Representação gráca da P (N (100."N(100. PROBABILIDADE E INFERÊNCIA 58 > curve(dnorm(x.add=T.ylab="f(x)") curve(dnorm(x.-50.lty=3) legend("topleft".130.250.50)".-50.10). 100) ≤ 90) Vejamos a representação gráca de algumas funções de densidade e de distribuição da normal.lty=3) legend("topright". média e moda são iguais.ylab="F(x)") curve(pnorm(x.80)").100. Segue então a função Moda_Normal().50).CAPÍTULO 4.c("N(100.80).50).50)".-50.100.50).seq(60.

10) [1] 100 > Moda_Normal(200. Vejamos então alguns exemplos: > Moda_Normal(0.maximum=T) return(round(op$maximum.40) [1] 200 Como podemos ver a moda da distribuição normal coincide com a sua média.dp){ fn=function(x){dnorm(x. . PROBABILIDADE E INFERÊNCIA 59 Figura 4. como exercício.mu+3*dp).c(mu-3*dp. O leitor pode conrmar.1) [1] 0 > Moda_Normal(10.1)) } Esta função recebe como argumentos a média (mu) e o desvio padrão (dp) da distribuição normal especicada.1) [1] 10 > Moda_Normal(100.sd=dp)} op=optimize(fn.mean=mu. que os valores acima são também as medianas destas normais.2: Algumas funções de densidade e funções de distribuição da distribuição Normal > + + + + Moda_Normal=function(mu.CAPÍTULO 4.

-4. Vamos chamar esta função de Moda_t(). vamos implementar uma função que retorne a moda distribuição t. A distribuição t-Student se aproxima da distribuição normal quando o grau de liberdade aumenta.col=5) legend("topleft".-4.c("N (0.col=1:5. Vejamos algumas operações básicas para uma t-Student com 1 grau de liberdade.lty=2) curve(pt(x.1) [1] 0.add=T.3).col=1:5.26067314 -0.11066112 O segundo argumento das funções especica o grau de liberdade da distribuição t. "t (3)".1) [1] 0.15).2.-4.55183402 -0.ylab="f(x)". #Densidades t curve(dnorm(x).2 Distribuição t-Student No R a distribuição t-Student é referenciada pelo prexo t.seed(14) > rt(10.col=2) curve(pt(x. Na Figura 16 ilustramos essa propriedade.add=T.1.07633328 -3.8).4.1)) #Funções de distribuição t curve(pnorm(x)."t (8)".add=T.1.add=T.09066324 -1.4.1).3).col=4) curve(dt(x.add=T.5 > qt(0.43430630 [6] 0.1)".79590300 -0.-4.lty=c(2. .4.8). "t (8)".1.1)".123032e-17 > set.add=T.1.c("N (0.4.CAPÍTULO 4.1. > dt(0."t (15)"). basta executar ?TDist.1) [1] -0.33269113 0.1).1.col=3) curve(pt(x.-4.-4.15).4.col=4) curve(pt(x.col=2) curve(dt(x.4.4."t (3)".-4.ylab="F(x)".add=T.-4.-4.lty=2) curve(dt(x.4.3183099 > pt(0.34515990 1. PROBABILIDADE E INFERÊNCIA 60 4.-4."t (1)".75266496 1."t (15)").1)) Da mesma forma que foi feito para a distribuição normal.col=3) curve(dt(x.5.1) [1] 6.add=T.4.lty=c(2."t (1)". Para ver a descrição completa dos argumentos.col=5) legend("topleft".4.

3: Comparativo entre a distribuição t-Student e a distribuição normal > Moda_t=function(gl){ + fn=function(x){dt(x.1)) + } > > Moda_t(1) [1] 0 > Moda_t(5) [1] 0 > Moda_t(10) [1] 0 > Moda_t(30) [1] 0 Podemos ver que a moda da distribuição t-Student é sempre igual a zero.2.c(-3. Vejamos então alguns exemplos.df=gl)} + op=optimize(fn. 4. .3 F-Snedecor A distribuição F-Snedecor é referenciada por f e a descrição dos seus argumentos pode ser vista executando ?FDist. PROBABILIDADE E INFERÊNCIA 61 Figura 4.CAPÍTULO 4.maximum=T) + return(round(op$maximum.3).

5)".2) [1] 0.8.5)."F (15.2). "F (8.2.col=3) curve(pf(x.5356487440 0.5).df2=gl2)} + op=optimize(ff.10)").0.7745967 > qf(0.1.10.col=2) curve(df(x.5).5.col=5) legend("topright".6)".gl2){ + ff=function(x){df(x.col=4) curve(df(x.add=T.0.col=4) curve(pf(x.6666667 > set.10).1.5).2) [1] 0.2473070646 0.lty=1) A moda da distribuição F é obtida com a função abaixo: > Moda_F=function(gl1.4.0.2.0. > > > > > > > + > > > > > > > + #Densidades F curve(df(x.10.3069481961 O segundo e terceiro argumentos das funções especicam os graus de liberdade da distribuição F.c("F (1.col=3) curve(df(x.6)."F (2.2) .2)".c("F (1."F (2.CAPÍTULO 4.ylab="F(x)".10.5)".col=2) curve(pf(x.10.add=T.1.0.add=T.1)) curve(pf(x.8.05163978 > pf(3.10.1.0.10).0.10.9451130609 0.10. "F (8.15.6)."F (4.5)".add=T.2).2) [1] 0 > Moda_F(10.0.4.add=T.4694068847 0.df1=gl1.2069921455 [6] 0.0.add=T.ylim=c(0.4215853368 4.1.10)").add=T.maximum=T) + return(round(op$maximum.1.1)) + } > Moda_F(2.c(0.ylab="f(x)") curve(df(x.6)".5)".seed(15) > rf(10.col=1:5. Na Figura 17 temos os grácos da função de densidade e da função de distribuição para algumas combinações de graus de liberdade.col=5) legend("bottomright".10.15.1941878357 0.0.2)".10. PROBABILIDADE E INFERÊNCIA 62 > df(3.3860004526 2.2) [1] 0."F (4.add=T.10.10).2) [1] 0."F (15.lty=1) #Funções de distribuição F curve(pf(x.0003382301 2.col=1:5.

9380312 > qgamma(0.3.2.6 > Moda_F(16.2) [1] 0.08923508 > pgamma(3.2) [1] 0.5.CAPÍTULO 4.8) [1] 0.6 O leitor pode vericar que a moda da distribuição F-Snedecor é dada por: gl1 − 2 gl2 gl1 gl2 + 2 para gl1 > 2 4.3. > dgamma(3. Esta distribuição possui como casos particulares a distribuição exponencial e a distribuição quiquadrado.4 Distribuição Gama A referência da distribuição gama no R é gamma.4: Algumas funções de densidade e de distribuição F-Snedecor [1] 0.4 > Moda_F(8. Para a descrição completa dos argumentos basta executar ?GammaDist. Segue abaixo algumas operações básicas. PROBABILIDADE E INFERÊNCIA 63 Figura 4.2) .5) [1] 0.3.

col=4) legend("topright".9071140 1.shape=9.lty=1) curve(dgamma(x. 0.col=1:4.add=T.7441700 3. respectivamente pelos argumentos shape e scale. 1)".0.shape=1.6. Alguns grácos da função de densidade da distribuição gama para os dois tipos de parametrização podem ser vistos na Figura 18.5)").0.add=T.add=T.col=3) curve(dgamma(x."G (2.5). 1)". "G (9.6. 1)". 0.shape=2.shape=1.0."G (5.∞) (t) θ onde.8909968 2.0.scale=1).col=2) curve(dgamma(x. PROBABILIDADE E INFERÊNCIA 64 [1] 1.col=2) curve(dgamma(x.1528434 0.rate=2).20.7543756 1.add=T.ylab="f (x)". main="Parametrização 2") curve(dgamma(x.scale=2).0. que chamaremos de parametrização 1.5)"). main="Parametrização 1") curve(dgamma(x.6007216 [8] 0.col=1:4.0.add=T. o parâmetro de forma α e o parâmetro de escala θ são especicados.20.∞) (t) onde.20.ylab="f (x)".3400572 Para distribuição gama temos dois tipos de parametrização. β = 1/θ é especicado pelo parâmetro rate.scale=0. > + > > > > + > + > > > > + curve(dgamma(x.6.add=T.shape=9.c("exp (1)".1368359 1. "G (9. que chamaremos de parametrização 2.2) [1] 1.337030 > set.CAPÍTULO 4. Já na outra parametrização.shape=2. a sua função de densidade é a seguinte: f (x) = 1 θα Γ(α) x xα−1 exp (− )1l(0.lty=1) .0.seed(16) > rgamma(10."G (5.shape=5.rate=1).rate=2). Na primeira.col=4) legend("topright".6.6550091 1.3221277 0.scale=2)."G (2.5).col=3) curve(dgamma(x.shape=5.c("exp (1)".20.0.rate=0. 1)". temos a seguinte função de densidade: f (x) = 1 θα Γ(α) xα−1 exp (−βx)1l(0.3.

ylab="f (x)") curve(dchisq(x.lty=2) legend("topright". Uma variável aleatória com distribuição Gama(k/2. 2) corresponde a uma exp(1).5: Algumas funções de densidade da distribuição Gama Note que uma distribuição Gama(1.shape=(3/2).CAPÍTULO 4.c("G (1.3). col="#BFFFBF". > + > > + curve(dgamma(x."#BFFFBF").1)) .20. PROBABILIDADE E INFERÊNCIA 65 Figura 4.scale=2).add=F.20. 2)".expression(chi**2*(3))).0.0.lty=c(2. 1/2) é também uma distribuição Qui-quadrado com k graus de liberdade (Notação: χ2(k) ). col=c(1. Na Figura 19 ilustramos gracamente esta propriedade para uma Gama(3/2. neste caso tem-se também uma χ2(3) .add=T. ou seja. 1/2).lwd=5.5.

PROBABILIDADE E INFERÊNCIA 66 Figura 4.c(0. Nesta função o argumento a especica o parâmetro de forma da gama e s.s.a+(4*s)). Para o cálculo da moda foi construída a função Moda_gama().c(0.maximum=T) + return(round(op$maximum.a+(4*s)).1)) + } + else{ + fg=function(x){dgamma(x.1)) + } + } > > > Moda_gama(3.maximum=T) + return(round(op$maximum.shape=a.rate=s)} + op=optimize(fg.shape=a. respectivamente.6: Função de densidade de uma χ2(3) e uma G(3/2.p){ + if(p==1){ + fg=function(x){dgamma(x.CAPÍTULO 4. Além de p que especica o tipo de parametrização a ser usada (1=parametrização 1 e 2=parametrização 2). 1/2) A moda da distribuição gama para a parametrização 1 e 2 é dada.scale=s)} + op=optimize(fg. o parâmetro de escala.2. por (α − 1)θ e (α − 1)/β . Vejamos então alguns exemplos: > Moda_gama=function(a.1) .

col=2.2.2. Temos então: (a) > dbinom(7.pch=16.col=4) . Exemplo: Um curso de treinamento aumenta a produtividade de uma certa população de funcionários em 80% dos casos.pch=16.0.CAPÍTULO 4. > > + > > #Distribuição de probabilidade plot(dbinom(1:40.10.40.0.10. 2005) e o argumento prob onde especicamos a probabilidade de sucesso.7).5 Distribuição Binomial No R a distribuição binomial é referenciada por binom.0.8) [1] 0.pch=16. encontre a probabilidade de: (a) exatamente sete funcionários aumentarem a produtividade.0.8). Vamos ilustrar algumas operações básicas com a distribuição binomial através da resolução de um problema extraído de Bussab e Morettin (2005).3222005 Na Figura 20 temos a representação gráca de algumas distribuições de probabilidade e distribuição de probabilidade acumulada da binomial.tail=F) [1] 0.5).0. 8.2) [1] 1 4. Se dez funcionários quaisquer participam desse curso.ty="p". Solução: Devemos calcular probabilidades de uma distribuição binomial de parâmetros n = 10 e p = 0.10. PROBABILIDADE E INFERÊNCIA 67 [1] 4 > Moda_gama(5.8) [1] 0. conforme o enunciado do problema.2013266 (b) > pbinom(8. e (c) pelo menos três funcionários não aumentarem a produtividade.10. ylab="P(X=x)".0. Nas funções temos o argumento size onde devemos especicar o número de provas independentes de Bernoulli (Bussab e Morettin.ty="p".ty="p".4.lower.6241904 (c) > pbinom(2. (b) não mais do que oito funcionários aumentarem a produtividade.col=3) points(dbinom(1:40.xlab="x") points(dbinom(1:40.20.

col=4) legend("bottomright". como exercício.ty="p". > + > > + > > > > > > + PROBABILIDADE E INFERÊNCIA 68 legend("topright".pch=16.20.pch=16.pch=16) #Distribuição de probabilidade acumulada plot(pbinom(1:40.5)"). Por exemplo.7).col=3) points(pbinom(1:40. ou seja o menor inteiro que não ultrapassa a quantidade (n+1)p."B(40.5).10.ty="s". 0.0. col=2:4. .col=3) points(pbinom(1:40.10."B(20.xlab="x") points(pbinom(1:40.7: Representação gráca da distribuição binomial A moda da distribuição binomial é sempre dada por b(n + 1)pc. col=2:4.c("B(10.lty=1) Figura 4. 0.pch=16.pch=16.8)".0.col=2.7). 0.pch=16. 0.ty="p". 8) é dada por: > floor((10+1)*0.bty="n".CAPÍTULO 4.8). 0.bty="n".8)". 0.40. No R o menor inteiro de um número real pode ser obtido com a função floor().20.ty="p".ty="s".5).0.c("B(10.ty="s".0.0. construir uma função que generalize este procedimento.7)"."B(20.col=4) points(pbinom(1:40. 0.40. ylab=expression(P(X<=x)).col=2) points(pbinom(1:40.8)."B(40.7)".pch=16. a moda de uma B(10.8) [1] 8 Deixa-se ao leitor.5)").pch=16.0.

pch=16) points(ppois(1:20.10).ty="s".col=3) points(ppois(1:20.col=3) legend("topright". .pch=16.ty="p".pch=16. PROBABILIDADE E INFERÊNCIA 69 4.seed(17) > rpois(10. 2005).ylab="P(X=x)". > dpois(4.col=2) points(ppois(1:20.10).pch=16.c("P(1)".6 Distribuição de Poisson A distribuição de Poisson é referenciada no R pelo prexo pois.xlab="x") points(dpois(1:20.bty="n".1).CAPÍTULO 4. A taxa média λ é especicada no argumento lambda.1) [1] 0 3 1 2 1 1 0 0 2 0 A Figura 21 mostra a representação gráca da distribuição de probabilidade e distribuição de probabilidade acumulada para diferentes valores de λ > > > > > + > > + > > > > > > + #Distribuição de Probabilidade plot(dpois(0:20.pch=16."P(4)".1) [1] 0.1) [1] 1 > set."P(10)").5.1).4).ylab=expression(P(X<=x)).10).col=2) points(ppois(1:20. Vejamos então algumas operações básicas com uma distribuição poisson de parâmetro λ = 1 (notação: P (1))."P(10)")."P(4)".pch=16. ylim=c(0.ty="s".pch=16) #Distribuição de probabilidade acumulada plot(ppois(0:20. col=1:3.9963402 > qpois(0.pch=16.ty="p".bty="n".pch=16.ty="p".1) [1] 0.pch=16.ty="p".ty="S". Para ilustrar esta propriedade vamos considerar o gráco da distribuição de probabilidade acumulada da distribuição de Poisson comparado com a distribuição acumulada da distribuição binomial com valores crescentes de n e decrescentes de p.ty="p".01532831 > ppois(4.ty="p".2.4). col=1:3.col=2) points(dpois(1:20.c("P(1)".col=3) legend("bottomright".4).xlab="x") points(ppois(1:20. Para ver a descrição completa dos argumentos execute ?Poisson.1).pch=16.lty=1) A distribuição de Poisson é um caso limite da distribuição binomial quando n → ∞ e p → 0 (Bussab e Moretim.1).

ty="s".CAPÍTULO 4.3)".8: Representação gráca da distribuição Poisson #Aproximação da Binomial pela Poisson > plot(ppois(1:40.01)").c("P(1)"."B(40.ty="s".xlab="x".pch=16. 0. PROBABILIDADE E INFERÊNCIA 70 Figura 4.lty=1) .05).pch=16.pch=16.100.01).3.05)".3).ty="s".ty="s".col=3) > points(pbinom(1:40."B(30.0.5.col=6) > legend("bottomright".05)".05).40.0.0.col=4) > points(pbinom(1:40."B(100.1)) > points(pbinom(1:40.col="yellow".col=5) > points(pbinom(1:40. 0.pch=16.0.30. 0.4.lwd=7.bty="n".6). + ylab=expression(P(X<=x)). 0.col=c("yellow".ty="s".pch=16.1). + "B(100.ylim=c(0.100.

respectivamente.CAPÍTULO 4.3) . > Moda_poisson=function(l){ + if(l==trunc(l)) + return(list(mo1=(l-1).mo2=l)) + else + return(floor(l)) + } > > > Moda_poisson(1) $mo1 [1] 0 $mo2 [1] 1 > Moda_poisson(3. No primeiro caso as modas são dadas.9: Aproximação da Binomial pela Poisson A distribuição de Poisson é bimodal quando λ é inteiro e unimodal para λ fracionário. No segundo caso. PROBABILIDADE E INFERÊNCIA 71 Figura 4. Vamos construir a função Moda_poisson() que retornará a(s) moda(s) da distribuição de Poisson. temos que a moda da Poisson é igual a bλc. por: λ − 1 e λ.

Teorema 4. a variável aleatória Z = σ/ n tem distribuição limite que é normal com média zero e variância um. √  n(X − µ) lim P ≤ z = Φ(z). Xn variáveis independentes e identicamente distribuídas que formam uma amostra de tamanho n proveniente de uma distribuição com X−µ √ média µ e variância σ 2 . 0 < σ < ∞. isto é.3 Inferência Nesta seção vamos utilizar o R para obter distribuições amostrais. Além disso. .Lindeberg and Lévy).3.3. . denotada por X . Então.1 Teorema Central do Limite Vamos começar com a ilustração deste que é um dos mais importantes resultados da Estatística Matemática. Senão a função retornará bλc. Inicialmente a função verica se o λ especicado é inteiro através do teste l==trunc(l) e retorna uma lista com as duas modas caso este seja verdadeiro. 4. A seguir temos o enunciado desse teorema. . Se- jam X1 . Por exemplo. as funções t.CAPÍTULO 4. X2 . O Teorema Central do Limite procura expressar o fato de que a média aritmética de n variáveis aleatórias independentes e identicamente distribuídas. n→∞ σ . etc. . ilustrar propriedades de estimadores.1 (Teorema Central do Limite . mostraremos algumas funções que já prontas.1. tem uma distribuição cuja forma tende para uma forma limite que não depende da distribuição das variáveis. teoremas. PROBABILIDADE E INFERÊNCIA 72 [1] 3 > Moda_poisson(5. 4.test() que serão usadas na parte de testes de hipóteses.test() e var.6) [1] 5 > Moda_poisson(10) $mo1 [1] 9 $mo2 [1] 10 Esta função recebe como argumento o valor de λ.

sum) . > TCL=function(r=runif.2)) > TCL() > par(op) >#População exponencial > op=par(mfrow=c(2. main=paste("n =".1) > par(op) . lwd=3. Esta função retornará os histogramas da variável Z para cada tamanho de amostra especicado. PROBABILIDADE E INFERÊNCIA 73 Onde Φ(.par){ + for (i in n) { + x=matrix(r(i*N).i). N=1000. 1. probability=T. Para ilustrar este teorema vamos construímos a função TCL().i*m )/(sqrt(i)*s) + hist(x. m=0.nc=i) + x=(apply(x. lty=3. bem como a média e desvio-padrão desta (estabelecemos por padrão uma √ população uniforme com média 0.5 e desvio padrão 1/ 12. density(x)$y))) + lines(density(x).30).100)) + } else { + rug(x) + } + } + } Apliquemos então para algumas populações. Esta função recebe como argumentos uma função que especica a população de referência.n=c(1.1. + ylim=c(0. podemos indicar um vetor contendo tamanhos de amostras e também o número de amostras simuladas.max(0.4. Além disso. col='red'. São também traçadas a curva teórica (linha pontilhada) e densidade simulada (linha vermelha). add=T) + if(N>100) { + rug(sample(x.5.3.2)) > TCL(rexp.) denota a função de distribuição de uma variável aleatória normal padrão. s=1/sqrt(12).10. col='blue'. col='light blue'.CAPÍTULO 4. >#População uniforme > op=par(mfrow=c(2. lwd=3) + curve(dnorm(x).

CAPÍTULO 4.10: Ilustração do TCL para amostras provenientes de uma popu√ lação uniforme com média 1/2 e desvio-padrão 1/ 12 Figura 4.11: Ilustração do TCL para amostras provenientes de uma população exponencial com média 1 e desvio-padrão 1 . PROBABILIDADE E INFERÊNCIA 74 Figura 4.

Vejamos.12: Ilustração do TCL para amostras √ provenientes de uma população Poisson com média 2 e desvio-padrão 2 >População Poisson > op=par(mfrow=c(2. .sqrt(2)) > par(op) 4.2)) > TCL(function(n){rpois(n. devemos seguir os seguintes passos: • Escolher a população de interesse e seus parâmetros.3. PROBABILIDADE E INFERÊNCIA 75 Figura 4. • Escolher um parâmetro de interesse e obter a sua estimativa para cada uma das N amostras simuladas. através de exemplos.CAPÍTULO 4.2 Distribuições Amostrais Na inferência paramétrica para obtermos informações sobre parâmetros de interesse de uma determinada população é necessário conhecermos a distribuição de seus estimadores desses parâmetros. bem como o tamanho n destas. como usar o R para obter distribuições amostrais.2)}. • Determinar um número N de amostras.2. De forma geral. Essas distribuições são chamadas distribuições amostrais. Pode-se ainda fazer um histograma destas estimativas e vericar se este sugere algum modelo conhecido.

Seguindo os passos acima e estabelecendo N = 10000 e n = 20 temos. Vamos considerar o parâmetro µ e Pn 2 2 2 i=1 (Xi −X) . Como vemos.50.function(x){((nrow(amos2)-1)*var(x))/10}) > mean(S2) [1] 9. Vamos inicialmente calcular a distribuição de X . Vamos ilustrar que σ e seus respectivos estimadores X e S = n−1 2 2 (n−1)S X ∼ N (µ.6). > set.0. mean = 100. n−1 > set. O leitor poderá também. as estimativas obtidas pela simulação são bem próximas do esperado. Como visto anteriorVamos agora considerar a estatística P = (n−1)S σ2 2 mente esta tem distribuição χn−1 este fato fato garante que: E(S 2 ) = σ 2 e 2 )2 Var(S 2 ) = 2(σ . 10).prob=T.main="". sd = sqrt(10)).967508 > var(S2) [1] 10.add=T) . nc = 10000) > S2=apply(amos2.0094 > var(xbar) [1] 0. PROBABILIDADE E INFERÊNCIA 76 • Utilizar as amostras para obter estimativas da média e da variância populacional. sd = sqrt(10)).ylim=c(0.5012133 Esperamos que a média das médias amostrais seja igual a 100 e a variância seja igual a (10/20) = 0.ylab="Densidade") > curve(dnorm(x. ao repetir esse procedimento.prob=T. mean) > mean(xbar) [1] 100. obter estimativas diferentes dependendo do valor da semente aleatória xada.100. É esperado também que a distribuição das médias amostrais sejam normalmente distribuídas. 5.sqrt(10/20)). mean = 100. > hist(xbar.ylab="Densidade") > curve(dchisq(x.CAPÍTULO 4. nc = 10000) > xbar=apply(amos1.seed(457) > amos2=matrix(rnorm(10000*20.2.add=T) 2 .seed(456) > amos1=matrix(rnorm(10000*20. A pequena discrepância entre estes valores é devido estarmos trabalhando com um número nito de amostras.0. 2. Seja então a população X ∼ N (100.nrow(amos2)-1). Ilustremos então estes resultados.main="". σn ) e σ2 ∼ χ2n−1 .2.43381 > hist(p.var) > p=apply(amos2. Vamos então completar a ilustração fazendo um histograma com curva teórica para as médias amostrais obtidas na simulação.

14: Histograma com curva teórica para as estatísticas P obtidas das amostras simuladas b 2) ≈ As estimativas para a média e variância de S 2 encontradas foram E(S d 2 ) ≈ 10. 9675 e Var(S 2 10 e Var(S 2 ) = 2(10) = 10. As distribuições das estatísticas X e 20−1 P de uma população normal são facilmente obtidas analiticamente. Por .CAPÍTULO 4. PROBABILIDADE E INFERÊNCIA 77 Figura 4. 4338 estão bem próximas dos valores teóricos E(S 2 ) = 9.13: Histograma com curva teórica para as médias amostrais simuladas Figura 4. 5263.

a distribuição de S/X (coeciente de variação amostral).seed(458) > amos3=matrix(rnorm(10000*20.2. .seed(459) > amos4=matrix(runif(10000*20.2026569 = Os valores teóricos obtidos através da densidade de Yn são E(Yn ) = 20×10 21 20×102 9.589526e-05 b v ) ≈ 0. 031 e var(c Temos então as estimativas E(c c v ) ≈ 0.03122713 > var(cv) [1] 2. θ] a densidade de Yn é dada por: fYn (y) = n n−1 y 1l(0.10). nc = 10000) > yn=apply(amos4. agora considerando a população Y ∼ U [0. 10] e tomando N = 10000 e n = 20: > set. Tomemos agora a população Y ∼ U [0. 5238 e Var(Yn ) = 212 ×22 = 0. nc = 10000) > cv=apply(amos3. 000. 10].1. 2061. 10) vamos determinar a média e a variância da estatística cv = S/X .max) > mean(yn) [1] 9. Vamos ilustrar a distribuição da estatística Yn = max(Y).1) Desta forma temos que: E(Yn ) = nθ n+1 e Var(Yn ) = nθ2 (n + 1)2 (n + 2) Vamos inicialmente obter estimativas para média e variância de Yn utilizando o mesmo procedimento anterior.525264 > var(yn) [1] 0. Considerando ainda a população X ∼ N (100.function(x){(sd(x)/mean(x))}) > mean(cv) [1] 0.0. Sabemos que se Y possui distribuição uniforme no intervalo [0. Por exemplo.2. mean = 100. Vamos agora gerar um histograma para os máximos obtidos nas amostras simuladas e acrescentaremos neste a curva teórica 4. sd = sqrt(10)).θ) (y) θn (4. Note que as estimativas obtidas através da simulação estão bem próximas destas. PROBABILIDADE E INFERÊNCIA 78 meio de simulação podemos investigar distribuições amostrais mais complicadas de serem obtidas analiticamente. > set.CAPÍTULO 4.

.ylab="Densidade") curve(fyn(x. ilustrar propriedades dos estimadores de verossimilhança. > + + > > PROBABILIDADE E INFERÊNCIA 79 fyn=function(x.ylim=c(0.2).CAPÍTULO 4.main="".3 Estimação de máxima verossimilhança Vamos agora utilizar o R para ilustrar o método de estimação de máxima verossimilhança. . Consideremos então X1 .20.3.prob=T. A função de verossimilhança (L(λ)) e log-verossimilhança (l(λ)) são dadas por: L(λ) = e−nλ λ P xi e l(λ) = Σxi ln λ − nλ .n.10. .theta){ (n/(theta^n))*(y^(n-1)) } hist(yn.0. X2 . etc. Vamos traçar curvas de verossimilhança e log-verossimilhança.10).add=T) Figura 4.15: Histograma com curva teórica para as estatísticas Yn obtidas das amostras simuladas 4. . Xn uma amostra aleatória da distribuição Poisson de parâmetro λ.

xlab=expression(lambda). • Plotar os grácos indicando o ponto de máximo.0.c(obl.ylab=expression(L(lambda))) maxL=optimize(L.10.obl.c(obL.lty=2) points(maxL.10). • Encontrar o máximo destas funções utilizando a função optimize(). PROBABILIDADE E INFERÊNCIA 80 Vamos gerar uma amostra aleatória de uma poisson de parâmetro λ = 2.c(0.-1000).2)) #Gráfico da Verossimilhança curve(L. No exemplo a seguir utilizaremos o método de Newton-Rapson para obter as estimativas dos parâmetros. • Escrever as funções L(λ) e l(λ).pch=20) par(op) De uma forma geral podemos resumir esse procedimento nos seguintes passos: • Escolher a população de interesse e seus parâmetros.2) n=length(xnpos) s=sum(xnpos) L=function(lam){(lam^s)*exp(-n*lam)} l=function(lam){log(lam)*s-n*lam} op=par(mfrow=c(1. Nesses casos.c(0. Nem sempre é possível encontrar formas fechadas para os estimadores de máxima verossimilhança.maximum=T)[[2]] lines(c(maxL.CAPÍTULO 4.maxL). Em seguida escreveremos as funções L(λ) e l(λ) e plotaremos seus grácos indicando o ponto de máximo que corresponde a λˆ .seed(165) xnpos=rpois(20.0.4. Examine o código abaixo: > > > > > > > > > > > > > > > > > > > > > > #Verossimilhança da Poisson #Gerar amostra aleatória de uma P(2) set.c(0.ylab=expression(l(lambda))) maxl=optimize(l.maximum=T)[[1]] obL=optimize(L.10). Isso pode ser feito com as funções points() e lines().obL.4).maximum=T)[[1]] obl=optimize(l.lty=2) points(maxl.-1).c(0.4). .pch=20) #Gráfico da Log-verossimilhança curve(l.xlab=expression(lambda).maximum=T)[[2]] lines(c(maxl.maxl). as estimativas são encontradas por meio de métodos numéricos.

34 1.96 1.16: Gráco de L(λ) e l(λ) para uma amostra da população Poisson(λ = 2) Exemplo (Kalbeisch.63 2.6 3.CAPÍTULO 4.04 2.52 0. . . Desejamos encontrar as estimativas de máxima ˆ.86 0. 1985): k = 5 diferentes doses de um inseticida são aplicadas sobre condições padronizadas em uma amostra de uma espécie de inseto. PROBABILIDADE E INFERÊNCIA 81 Figura 4.8 5. a probabilidade de que um inseto morra. os Yi0 s (número de insetos mortos) serão independentes e sua densidade de probabilidade conjunta é f (y1 .88 Se diferentes insetos são usados com diferentes doses.12 0. é relacionada com a dose através de um modelo logístico. . Os resultados são mostrados na Tabela 2.33 0.32 Número de insetos ni 50 48 46 49 50 Número de mortos yi 6 16 24 42 44 Fração de mortos 0. β) Tabela 4. verossimilhança (ˆ α. y2 .1 7.2 Log Concentração 0.1: Dados de um Experimento Dose-Resposta Concentração 2. y5 ) = 5   Y ni i=1 yi pyi i (1 − pi )ni −yi .7 10. Vamos assumir que p. .

pi = 1 − (1 + eα+βdi )−1 . β) = Σvi Σvi di Σvi di Σvi d2i  Onde µi = ni pi e vi = ni pi (1 − pi ). β) = 5 X [yi (α + βdi ) + ni ln(1 − pi )] i=1 Desta obtemos o vetor escore S(α. β) = (1 − pi )ni 1 − p i i=1 5  X l(α. Essa função retornará o valor das estimativas o número de iterações até a convergência. 1985 para mais detalhes sobre este exemplo).7.50) y=c(6.49.2) n=c(50.48.3.8.10. Logo. l(α. . β) e a matriz de informação I(α. β):  S(α. A função NR() recebe como argumentos um vetor com o valor inicial para os parâmetros e um critério de convergência.42. β) = yi ln i=1  pi + ni ln(1 − pi ) 1 − pi Mas sabemos que pi possui uma relação logística com di .1. ou seja. 82 PROBABILIDADE E INFERÊNCIA As funções de verossimilhança e log-verossimilhança são y i 5  Y pi L(α.24.CAPÍTULO 4.5.7.6. o valor das estimativas e o valor da log-verossimilhança. Vamos então tomar como valores iniciais α ≈ −5 e β ≈ 3 (Veja Kalbeisch.44)##número de insetos mortos(dose d_i) d=log(Con) Agora para dar início ao processo iterativo precisamos de uma estimativa inicial para os parâmetros α e β . > > > > Con=c(2.16. Vamos inicialmente entrar com os dados da Tabela 2.46. β) = Σ(yi − µi ) Σ(yi − µi )di   I(α.

"\t".ncol=2)# Informação logver=sum(y*(teta[1]+ teta[2]*d)+n*log(1-p)) j=j+1 } cat("\t".y).3).=".sum(v*d).sum(v*d^2))."\n") cat("Log-verossimilhança=".sum(v*d)."\n") cat("No de iterações =".. 23 amostras(corpos de prova) foram avaliadas resultando nos valores: .1035d )−1 Podemos utilizar também a função fitdistr() da biblioteca MASS que utiliza o algoritmo BFGS (Broyden et.al. beta esti.886912 .=". beta esti. o modelo de dose resposta estimado é pˆ = 1 − (1 + e−4. 1035. 1985): Suponha que para um teste de resistência de um componente metálico.".sum((y-u)*d))# Vetor escore Iteta=matrix(c(sum(v).103545 Log-verossimilhança= -119."\n") } NR(c(-5.teta[2].sum(v*d). Considere então o seguinte exemplo: Exemplo (Kalbeisch.j.sum((y-u)*d)) # Vetor escore Iteta= matrix(c(sum(v).ncol=2)# Informação epsilon=10^{-10} # Critério de convergência j=0 # de iterações while (sqrt(sum((solve(Iteta)%*%Steta)^2))>epsilon){ teta=teta+solve(Iteta)%*%Steta p=1 -1/(1+ exp(teta[1]+ teta[2]*d)) u=n*p v=n*p*(1-p) Steta=c(sum(y-u).sum(v*d).CAPÍTULO 4. αˆ = −4.10^(-10)) Resultado do Processo iterativo No de iterações = 4 alfa esti. 1970) para estimação de parâmetros.= -4.8869+3.logver."Resultado do Processo iterativo".teta[1]."alfa esti. Portanto. > > + + + + + + + + + + + + + + + + + + + + + + > > > PROBABILIDADE E INFERÊNCIA 83 # Início do processo iterativo NR=function(teta=c(x. 8869 e βˆ = 3.epsilon){ teta=teta # Chute inicial p=1 -1/(1+ exp(teta[1]+ teta[2]*d)) u=n*p v=n*p*(1-p) Steta=c(sum(y-u).sum(v*d^2)).= 3.8942 Obteve-se então. ao nal de 4 iterações.

101337 81.92.5*(1+nc).lim.inf=(xb-qt(0.52 42.12.836799 ( 0. nc*100.12.64.88 28.60.84 127.04.96 54.nc=0. 41.88 84.96. 54. 51. 16).12 55."\n") ic=c(lim.95){ xb=mean(amos4) s=sd(amos4) lim. 28.12.92 128.88. determinar (ˆ α.40 De estudos anteriores admite-se que a resistência apresenta aproximadamente uma distribuição de Weibull. cuja densidade é dada por f (x.40) require(MASS) #Estimativa dos parâmetros fitdistr(x."%".12 93.64 PROBABILIDADE E INFERÊNCIA 33.sup") .80.80 98.52.92 68. 93. 98. 55. 68.64 105.328613) ( 8.12.length(amos4)-1)*(s/sqrt(length(amos4)))) lim. onde α > 0 e β > 0.media=function(amos.04 173. 105.CAPÍTULO 4.sup=(xb+qt(0.64 68. normal com var. 68. 127. 84.12 105. 42.596717) A função fitdistr() recebe como argumentos um vetor de dados e um string indicando a distribuição que será utilizada.inf. 4. 45."lim.length(amos)-1)*(s/sqrt(length(amos)))) cat("\t"."IC para a média de uma pop.84.64. > + + > > > x<-c(17.3.00. β) Vamos então aplicar a função fitdistr(). α. 51. 67.92."weibull") shape scale 2.12 68.60 48."\n") cat("IC a". Nosso objetivo é ˆ com base na amostra observada.4 Intervalos de Conança Intervalo para a média de uma população normal com variância desconhecida: Vamos considerar uma amostra de tamanho 10 de uma população N (20.48. desconhecida".12 84 45. 0 < x < ∞.12. 173. 33.56 67.00 41.84. Vamos primeiramente escrever uma função que retorne este intervalo para um nível de conança xado. 128.sup) names(ic)=c("lim.48 51. Suponhamos que não conhecemos o verdadeiro valor de µ e σ 2 e desejamos construir um intervalo com γ % de conança para a média.5*(1+nc).56. 68. > + + + + + + + + IC.88. Esta retorna as estimativas dos parâmetros e seus respectivos erros-padrão (valores entre parênteses). β) = αβxβ−1 exp (−αxβ ).84 51.64.inf". 17. 105. 48.

> nivel.int + if(mu>inter[1] & mu<inter[2]) + cont=cont+1 . PROBABILIDADE E INFERÊNCIA 85 + ic + } Note que.nc=0. A proporção destes intervalos será o nível de conança.test(amos4)$conf.10292 attr(.conf=function(N. desconhecida IC a 95 % lim. normal com var.inf lim.99)$conf.03455 > IC.int [1] 16.media(amos4) IC para a média de uma pop.14058 21.07220 22.95 > t.sup 15. Devemos também contar o número de intervalos que contém a verdadeira média.99) IC para a média de uma pop.test() da seguinte forma: > t.sigma){ + cont=0 + for(i in 1:N){ + amo=rnorm(n.int [1] 15. A ideia é gerar um grade numero de amostras de tamanho n.media(amos4.14058 21. Vamos então aplicar utilizando 95% e 99% de conança.sup 16. estabelecemos como valor padrão o nível de conança de 95%.03455 attr(.sigma) + inter=t. > IC. e para cada uma delas determinar um intervalo de conança. normal com var.CAPÍTULO 4.test(amos4. desconhecida IC a 99 % lim.inf lim.07220 22.test() para calcular o nível de conança do intervalo para a média de uma população normal com variância desconhecida usando simulação.level=0.level") [1] 0.conf.test(amo)$conf."conf."conf.mu.99 Usaremos agora a função t.mu.10292 Estes mesmos intervalos podem ser obtidos com a função t.n.level") [1] 0.

O gráco é visto na Figura 4.963 Podemos ilustrar gracamente o que acabamos de fazer utilizando a função conf. iremos também escrever uma função que retorne uma estimativa intervalar para uma proporção.mu=20.1. Neste gráco também é traçada uma linha pontilhada que representa a verdadeira média e a taxa de cobertura (coverage rate).seed(556) > nivel.int().17 > > > > > > require(animation) oopt=ani.options(interval = 0.main="Demostração de Intervalo de Confiança") ani. Vejamos um exemplo onde utilizamos 100 amostras de tamanho 20.seed(643) > nivel. Esta função calcula intervalos de conança para amostras de uma distribuição normal padrão e estes são plotados como segmentos de reta em gráco.CAPÍTULO 4.options(oopt) Intervalos para proporção: Da mesma forma que zemos para a média. PROBABILIDADE E INFERÊNCIA 86 + } + return(cont/N) + } Vamos aplicar para n = 10 e n = 30.int(size=20.sigma=4) [1] 0. > set.n=30.Ou seja. P {−zα/2 √ n(ˆ p − p) ≤p ≤ zα/2 } = 1 − α pˆ(1 − pˆ) . sabendo que: √ n(ˆ p − p) p ∼ N (0.seed(900) conf. Note que obtemos uma maior cobertura com a maior amostra.conf(N=1000. 1) pˆ(1 − pˆ) Podemos calcular.mu=20.944 > set.conf(N=1000. Vamos considerar inicialmente o intervalo assintótico. nmax = 100) set.sigma=4) [1] 0.n=10.

95){ + pch=sum(amos)/length(amos) + lim.17: Intervalos de conança para a média de uma normal padrão para 100 amostras de tamanho 20 Logo.5*(1+nc))*(sqrt((pch*(1-pch))/length(amos)))) + cat("\t"."IC para proporção".inf=(pch-qnorm(0."\n") . " IC(p.CAPÍTULO 4.prop=function(amos. > IC. 1 − α) pˆ ± zα/2 r pˆ(1 − pˆ) n # que um intervalo assintóticoPpara p e pˆ é o estimador de máxima verossimin i=1 yi lhança de p dado por: pˆ = n Escrevamos então uma função que retorne este intervalo.sup=(pch+qnorm(0. PROBABILIDADE E INFERÊNCIA 87 Figura 4.5*(1+nc))*(sqrt((pch*(1-pch))/length(amos)))) + lim.nc=0.

wilson(sum(amos5).0.comp.IW x n proportion lower upper conf.approx(sum(amos5).lim.4901625 0.prop(amos5) IC para proporção IC a 95 % lim.W [1] 0. 1927).length(amos5)).CAPÍTULO 4.inf. nc*100.sup") + ic + } Gerando uma amostra de uma população de Bernoulli com p = 0.prop() obtemos os seguinte resultados: > set.W=IW$upper-IW$lower.A [1] 0.amos5 [1] 0 1 1 0 1 1 1 1 1 1 > IC.inf"."%".95 > #comprimento do intervalo de Wilson > comp.A=IA$upper-IA$lower.4531554 > > IA=binom.8 0.047918 0.495836 Vemos que para esta amostra o intervalo de Wilson apresentou um menor comprimento comparado com o intervalo assintótico. Este é dado por: pˆ + 1 2 z 2n 1−α/2 q ± z1−α/2 1+ pˆ(1−ˆ p) n + 2 z1−α/2 4n2 1 2 z n 1−α/2 Utilizando a mesma amostra anterior vamos determinar o intervalo de Wilson e comparar o seu comprimento com o intervalo assintótico. .sup 0.047918 A função binom.inf lim.IA x n proportion lower upper conf."lim.552082 1. 6 e aplicando a função IC. > require(epitools) > IW=binom.95 > #Comprimento do intervalo assintótico > comp.8 0.9433178 0.level 1 8 10 0.wilson() da biblioteca epitools retorna um intervalo para proporção baseado na correção de Wilson (Wilson."\n") + ic=c(lim.6). PROBABILIDADE E INFERÊNCIA 88 + cat("IC a".seed(7856) > amos5=rbinom(10.level 1 8 10 0.length(amos5)).1.552082 1.comp.sup) + names(ic)=c("lim.

262157 Vamos ilustrar gracamente a região crítica do teste e também a comparação do valor da estatística do teste com o valor crítico.169497 > #Estatística do teste > T=(sqrt(n)*(xb-30))/s.18661 29.35136 30.5 Testes de Hipóteses Teste para a média de uma população normal com variância desconhecida: Vamos considerar a seguinte amostra retirada de uma população supostamente normal: 32.71436 33.05 > > #t crítico > Tt=qt(1-alfa/2.71069 > s=sd(amos6).s [1] 3.3.CAPÍTULO 4. .n [1] 10 > xb=mean(amos6).Tt [1] 2.2886489 > > #nível de significância > alfa=0.12365 28.51114 27.09745 Deseja-se testar:  H0 : µ = 30 H1 : µ 6= 30 Sabendo que: √ T = n(X − µ0 ) ∼ t(n−1) S Vamos utilizar o R como uma calculadora e realizar o teste passo a passo.xb [1] 29.n-1).57830 31.T [1] -0.05036 32. PROBABILIDADE E INFERÊNCIA 89 4.37871 32.70124 31. > n=length(amos6).

4.n-1). Ho".l=30).c(0.c("Rej.0.seq(Tt.l=30). Ho".4.05.dt(seq(-Tt. Ho".-4.n-1).font=2) text(c(-3.05).seq(-4.l=30).-4.ylab="f (x)".l=30).18: Região crítica do teste > > + > > > + > + > > #Comaparando o valor tabelado com o calculado curve(dt(x.4).density=10) text(0.dt(seq(Tt.2.-4.font=2) Figura 4.n-1).05).seq(Tt.4.dt(seq(-Tt.font=2) . c(0.0.1).l=30).l=30).2.0. c(0.seq(-Tt.pos=-4) polygon(c(-Tt.2.dt(seq(Tt.seq(0. c(0.-4). > > > + > + > > PROBABILIDADE E INFERÊNCIA 90 #Região crítica curve(dt(x.0).density=10) text(0.4).ylab="f (x)") polygon(c(-Tt.1).0.4.font=2) text(c(-3.4.ylim=c(-0."AC.-4.2).pos=0) axis(2.3.4."AC.0)."Rej.density=10) polygon(c(Tt.0).c("Rej.2.0.l=30).xlab="") axis(1.n-1).axes=F.1.-4. Ho").4.0).-4).0.3. Ho").05.n-1).4).0.seq(-Tt. c(0.2).l=30).c(0. bty="n".CAPÍTULO 4.4.n-1)."Rej.density=10) polygon(c(Tt. Ho".-4.

"Tcal = -0.0. Podemos obter todos os resultados acima utilizando a função t. ao nível de signicância de 5%.n-1).CAPÍTULO 4.test().1. vemos que não há evidências contra a hipótese de que a média populacional é igual a 30.19: Marcando o valor da Estatística do teste > #nível descritivo do teste (valor p) > vp=2*pt(T.font=1) > arrows(T.-0.mu=30) One Sample t-test data: amos6 t = -0.77196 sample estimates: mean of x . PROBABILIDADE E INFERÊNCIA 91 > text(T. p-value = 0.T.085.vp Pelo exposto.-0.63575 31.lwd=2) Figura 4.7534 alternative hypothesis: true mean is not equal to 30 95 percent confidence interval: 27. df = 9.91".test(amos6. #utilizando uma função do R > t.3239.

13.96+((mean(amos7)-mus)/sqrt(4/9)). desejamos testar:  H0 : µ = 10 H1 : µ 6= 10 Chama-se poder do teste a probabilidade de se rejeitar a hipótese H0 dado um valor qualquer de µ.70386 Seja a população N (10.CAPÍTULO 4.96+((mean(amos7)-mus)/sqrt(4/20))) #poder do teste para n=30 pt3=pnorm(1.96+((mean(amos7)-mus)/sqrt(4/9))) #poder do teste para n=20 pt2=pnorm(1.tail=F)+pnorm(-1.lower.4) #valores alternativos para média mus=seq(7.col=2) points(pt3.c("n=9". PROBABILIDADE E INFERÊNCIA 92 29.0. 4).96+((mean(amos7)-mus)/sqrt(4/20)).1) # poder do teste para n=9 pt1=pnorm(1.bty="n") .lty=1.96+((mean(amos7)-mus)/sqrt(4/30))) #plotando em um único gráfico plot(pt1. > > > > > > > > > > > > > > > > > > #poder do teste set.tail=F)+pnorm(-1.ylab=expression(pi(mu))) points(pt2. Supondo desconhecida a verdadeira média desta população.col=3) legend("bottomleft".ty="l".10.ty="l".col=1:3. Para um µ especicado o poder do teste é dado por:     X −µ X −µ √ √ + P Z > zα/2 + P Z > zα/2 + σ/ n σ/ n Tomando valores em torno de µ = 10 e com base na expressão acima vamos calcular o desse teste para diferentes tamanhos de amostra. especicado ou não pela hipótese alternativa."n=20"."n=30").ty="l".seed(89081) amos7=rnorm(9.lower.tail=F)+pnorm(-1.lower. e será denotado por φ(µ).96+((mean(amos7)-mus)/sqrt(4/30)).

equal=T) prop.20: Gráco do poder do teste As principais funções do R para realizar testes paramétricos estão resumidas na Tabela 3.....var.test(x.y.test() var.test(x.2: Principais funções do R para realizar testes de hipóteses Comparação de médias de 1 média 2 médias 2 médias (populações dependentes) 2 médias com variâncias iguais Teste para proporções Comparação de variâncias populações normais t.y.CAPÍTULO 4.y. Tabela 4.test() . PROBABILIDADE E INFERÊNCIA 93 Figura 4.paried=T) t.) t.) t..test(x..test(x.

e devem ser instaladas posteriormente.exact() lm() anova() residuals() predict() aov() bartlett. Tabelas de frequências Gráco em setores e em colunas Moda de um conjunto de dados Obter probabilidades e números aleatórios das distribuições normal e binomial Realiza o teste t de Student Teste de normalidade Comparação de 2 grupos Intervalos para proporção Ajustar um modelo de regressão linear Análise de variância Resíduos Valores preditos Ajuste do modelo Teste de homogeneidade Teste de Tukey Transformação boxcox Grácos de controle Análise fatorial Componentes principais Análise Multivariada Análise de agrupamento MASS Análise discriminante linear energy∗ Teste de normalidade Multivariada chisq.org/ disponibiliza para download uma série de bibliotecas com as mais variadas nalidades.etest() .test() binom. barplot() Mode() pnorm().test() TukeyHSD() boxcox() qcc() Resumos estatísticos. PROBABILIDADE E INFERÊNCIA 94 .r-project. rnorm() pbinom(). A pagina ocial do R http://www.test() associação Biometria stats mantelhaen. Tabela 3: Principais bibliotecas e funções do R usadas nas disciplinas do curso de estatística da UFC Disciplina Estatística Descritiva Bibliotecas do R Principais funções Finalidade stats prettyR∗ Probabilidade e Inferência stats Métodos NãoParamétricos stats Análise de Regressão Planejamento de Experimentos Controle estatístico da Qualidade epitools∗ stats stats MASS qcc∗ summary(). table() pie(). rbinom() t. A tabela abaixo traz um resumo das principais bibliotecas e funções utilizadas no curso supracitado.CAPÍTULO 4. stats factanal() princomp() hclust() lda() mvnorm.test() Teste Cochran-Mantel-Haenszel glm() Regressão logística ts() Denir a série Séries filter() Filtros lineares Temporáis stats acf() Correlograma arima() Ajusta modelos autoregressivos tsdiag() Diagnóstico do ajuste (*): Estas bibliotecas não fazem parte do conjunto de bibliotecas padrão do R. hist().test() wilcox. histogramas.test() shapiro.test() Testes de fisher.1 Apêndice Software R no Curso de Estatística da UFC Há uma série de funções e bibliotecas que são constantemente usadas em disciplinas do curso de estatística da UFC.

R Foundation for Statistical Computing. Springer-Verlag. (2008). São Paulo: Editora Saraiva. Estatística Básica. B. Probability and Statistical Inference. Journal of the American Statistical Association 22: 209-212. P. [2] Pinheiro J. (2003). 1 ed. R. Rio de Janeiro. Austria. [4] Kalbeisch. E. Probabilidade: Um Curso em Nível Intermediário. the law of succession. (1985). (1981). e Morettin. Rio de Janeiro: Campus. Vienna.org.Referências Bibliográcas [1] Bussab. de O. URL http://www. Estatística básica: A arte de trabalhar com dados. Projeto Euclides. D. W. (1927).R-project. Probable inference. [6] Wilson. [3] James. 5ª ed. 95 . B. 2d edition. et al. G. Impa. and statistical inference. A. New York. [5] R Development Core Team (2005). R: A language and environment for statistical computing. I. J.