Anda di halaman 1dari 48

Estatstica Computacional

Reviso do Contedo Profa.: M.Sc Ana Maria de Souza

Vetores

Vetores so uma estrutura de dados sobre a qual podemos aplicar funes como por exemplo as que fornecem medidas estatsticas.

Vetores
A funo c() usada para criar um vetor a partir de seus argumentos. Por exemplo: > x <- c(2,3,5,7,11) # os 5 primeiros nmeros primos >x [1] 2 3 5 7 11 # digitando o nome do objeto exibido o seu contedo Os argumentos de c() podem ser escalares ou vetores. > y <- c(x,13,17,19) # adicionando mais trs nmeros primos >y [1] 2 3 5 7 11 13 17 19

Sequncia
H ainda outras formas de se gerar um vetor. Por exemplo, para gerar uma sequncia de nmeros inteiros usa-se os dois pontos: > xx <- 1:10 > xx [1] 1 2 3 4 5 6 7 8 9 10 Se o vetor muito longo e no "cabe" em uma linha o R vai usar as linhas seguintes para continuar imprimindo o vetor.

Vejamos como fica:


>xx <- 100:1 # sequncia decrescente de 100 a 1 > xx [1] 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 [19] 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 [37] 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 [55] 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 [73] 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 [91] 10 9 8 7 6 5 4 3 2 1

Os nmeros entre colchetes no fazem parte do objeto e indica a posio do vetor naquele ponto. Pode-se ver que [1] indica que o primeiro elemento do vetor est naquela linha, [19] indica que a linha seguinte comea pelo dcimo nono elemento do vetor e assim por diante.

Usando o comando seq()


Uma maneira de produzir sequncias de valores usando a funo seq() que tem como argumentos o incio, fim e passos da sequncia. > seq(1,10,1) # o mesmo que 1:10 [1] 1 2 3 4 5 6 7 8 9 10 > seq(1,10,2) # de 2 em 2 [1] 1 3 5 7 9 # no necessariamente termina em 10 > seq(10,1,3) # tentando ordem inversa... Error in seq.default(10, 1, 3): Wrong sign in 'by' argument > seq(10,1,-3) # a forma correta usando passo negativo... [1] 10 7 4 1

Funo seq()
> seq(1,27,3) [1] 1 4 7 10 13 16 19 22 25 Poderamos usar argumentos com nomes na forma: > seq(from=1,to=27,by=3) A funo seq() pode gerar uma sequencia de certo nmero de elementos se usar o argumento length= : > seq(from=1,to=27,length=4) [1] 1.000000 9.666667 18.333333 27.000000 Isto retorna uma sequncia de 4 valores que comea no valor do argumento from e termina no valor do argumento to. Neste caso o argumento by com os intervalos entre os valores calculado automaticamente.

Usando rep()
Outra funo til para produzir vetores a funo rep() que retorna o primeiro argumento repetido o nmero de vezes indicado pelo segundo argumento: > rep(1,10) [1] 1 1 1 1 1 1 1 1 1 1 > rep(c(1,2),10) [1] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 > c(rep(0,10),rep(1,5)) [1] 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1

Usando funo rep()


Pode-se ainda usar variveis (objetos) como argumentos das funes: > x <- 10 > rep(c(1,2),x) [1] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 Se ambos argumentos tem mais de um elemento ento cada elemento do primeiro argumento ser associado ao elemento correspondente do segundo argumento. Examine estes exemplos: > rep(4:1,1:4) > rep(c(23, 32, 42), c(3, 1, 2)) [1] 23 23 23 32 42 42

E se os vetores tiverem tamanhos diferentes?


Neste caso o R usa a "lei da ciclagem", o que significa que os elementos do menor vetor sero repetidos at atingir o tamanho do maior vetor. Veja o exemplo: > x <- 1:10 > y <- c(1,2) > x+y [1] 2 4 4 6 6 8 8 10 10 12 Neste exemplo y foi repetido cinco vezes e adicionado a x da seguinte forma, x : 1 2 3 4 5 6 7 8 9 10 y : 1 2 1 2 1 2 1 2 1 2 (note como foi repetido) ----------------------------------x+y : 2 4 4 6 6 8 8 10 10 12

Caracteres e Fatores
O R pode armazenar dados alfanumricos da mesma forma que armazena dados numricos. Dados na forma de caracteres devem estar entre aspas simples como ' ou duplas como ". Pode-se usar uma ou outra contanto que sejam as mesmas no incio e no final. Exs.: > c1 <- "Hello" # um caracter como escalar > c1 [1] "Hello > c2 <- c("Yes",'Maybe',"No") # um vetor de caracters > c2 [1] "Yes" "Maybe" "No"

Caracteres
Algumas das funes usadas para construir vetores numricos podem tambm ser usadas com caracteres. > c3 <- rep("Monkey",4) # usando rep() > c3 [1] "Monkey" "Monkey" "Monkey" "Monkey > c4 <- rep(c("Monkey","Bucket"),3) > c4 [1] "Monkey" "Bucket" "Monkey" "Bucket" "Monkey" "Bucket

Obviamente operaes numricas como soma, subtrao etc no fazem sentido.

Fatores
Fatores so usados para armazenar dados categricos. Por exemplo, suponha que voc tem dados de um grupo de pessoas e quer armazenar a informao sobre o sexo dos indivduos. Pode-se usar um cdigo numrico como 0 para homens e 1 para mulheres ou pode-se usar um cdigo na forma de caracter como 'H' para homens e 'M' para mulheres. Mas em ambos casos DEVE-SE usar um factor.

Construindo fatores
Fatores so facilmente construdos a partir de vetores alfanumricos. Para tal utiliza-se a funo as.factor combinada com o vetor: > c5 <- c('M','F','F','F','M','M') > c5 [1] "M" "F" "F" "F" "M" "M > f5 <- as.factor(c5) > f5 [1] M F F F M M Levels: F M
Note que fatores so mostrados de forma semelhante mas no identica aos vetores alfanumricos. Os valores dos fatores so impressos sem aspas e os nveis do fator so tambm impressos.

funo levels()
As categorias (nveis) de um fator podem ser vistas usando a funo levels(): > levels(f5) [1] "F" "M" # o resultado um vetor alfanumrico
Alm disto, os nveis de um fator podem ser facilmente modificados assinalando um novo vetor alfanumrico aos nveis do fator: > levels(f5) <- c("Female","Male") > f5 [1] Male Female Female Female Male Male Levels: Female Male

funo table()
Uma das coisas que se pode fazer com um fator tabular os nmeros em cada categoria usando a funo table(): > table(f5) Female Male 3 3 # 3 de cada! Vamos examinar um exemplo mais detalhado.

Exemplo:
Suponha que temos dados de altura de 4 homens e 3 mulheres. As alturas dos homens em centmetros so: 175, 184, 180, 182. As alturas das mulheres so: 176, 174, 169. Entrando com os dados das alturas, temos: > alt <- c(175, 184, 180, 182, 176, 174, 169) > alt [1] 175 184 180 182 176 174 169 E com os dados de sexo, j definindo um fator > sexo <- as.factor(rep(0:1, c(4,3))) > sexo [1] 0 0 0 0 1 1 1 Levels: 0 1

Continuao do Exemplo:
Agora assinalando nomes aos nveis do fator: > levels(sexo) <- c("homem", "mulher") > sexo [1] homem homem homem homem mulher mulher mulher Contando o nmero de elementos em cada sexo: > table(sexo) # tecla enter sexo homem mulher 4 3

Calculando a Mdia
> mean(alt) # mdia de todos os individuos [1] 177.1429 Agora calculando a altura mdia para cada sexo. > by(alt, sexo, mean) # Aps o comando Teclar enter INDICES: homem [1] 180.25 -----------------------------------------------------------INDICES: mulher [1] 173

Medidas resumo bsicas


> dat <- c(23, 34, 56, 55, 43, 22, 39, 50) # Dados do Vetor declarado > mean(dat) # Clculo da mdia do arquivo acima [1] 40.25 > median(dat) # Clculo da Mediana [1] 41 > var(dat) # Clculo da Varincia [1] 177.0714 > sd(dat) # Clculo do Desvio Padro [1] 13.30682 > min(dat) # Clculo do mnimo [1] 22 > max(dat) # Clculo do mximo [1] 56

Vetores de ndices
Voce pode extrair partes de um vetor usando um vetor de ndices: > y <- x[c(1,3,5)] >Y [1] 10 8 6 x[4:7] [1] 7 6 5 4 Notem que o valor retornado um vetor.

ndices Negativos
Isto a princpio pode parecer estranho mas o R define isto como sendo todo o vetor exceto o N-simo elemento. Este mecanismo nos d uma forma fcil de remover elementos de um vetor. > x <- 1:10 > x[-3] [1] 1 2 4 5 6 7 8 9 10 # sem o 3 > x[c(3,4,7)] > x[-c(3,4,7)] # Menos os valores 3,4, e 7 [1] 1 2 5 6 8 9 10

Outros exemplos:
> x <- 1:10 > x[-length(x)] # todos exceto o ultimo elemento [1] 1 2 3 4 5 6 7 8 9 > x[length(x):1] # inverte a ordem dos elemento de x[1] 10 9 8 7 6 5 4 3 2 1 H tambm uma funo para fazer esta inverso: rev(x) - na verdade h funes no R para maioria das coisas simples que voce possa querer fazer.

Objetos:
A funo summary() muito til. Para um vetor numrico ela retorna um rpido resumo: > x <- (1:100)**2 > summary(x) Min. 1st Qu. Median Mean 3rd Qu. Max. 1.0 663.3 2551.0 3384.0 5663.0 10000.0

ndices
ndices so a maneira utilizada pelo R para extrair partes de um vetor. So utilizados colchetes e os ndices so contados a partir de 1. > x <- 10:1 y Recebe 2 valor de x >x [1] 10 9 8 7 6 5 4 3 2 1 > y <- x[2] >y [1] 9 Aqui y recebe o valor do segundo elemento de x.

Criando Grficos
>riqueza <- c(15,18,22,24,25,30,31,34,37,39,41,45) >area <- c(2,4.5,6,10,30,34,50,56,60,77.5,80,85) >area.cate <- rep(c("pequeno", "grande"), each=6) >plot(riqueza~area) >plot(area,riqueza) # o mesmo que o anterior >boxplot(riqueza~area.cate) >barplot(riqueza)

Comando plot(riqueza~area)

Funes dos Grficos


O plot ou scatterplot um grfico de disperso, sendo que cada ponto no plot representa uma das rplicas (e.g. 12 rplicas, 12 pontos). Quando as variveis so categricas, o grfico padro que o R produz o boxplot ou box and whiskers plot (chamado em portugus de desenho esquemtico, desenho da caixa, ou desenho de caixa e bigode).

boxplot(riqueza~area.cate)

Funes dos Grficos


No boxplot, a linha grossa do meio representa a mediana, a caixa representa o 1 e 3quartil, e os bigodes podem representar ou os valores mximos e mnimos, ou 1.5 vezes o valor dos quartis (aproximadamente 2 desvios padres). desenhado o que for menor. s vezes, alguns pontos so desenhados individualmente alm dos bigodes, estes so os outliers, que podem ser suprimidos com o argumento outline=F. O barplot, ou grfico de barras, mostra cada ponto da varivel especificada como uma barra. Na sua forma mais simples, so apresentados apenas os valores brutos e no h informao alguma quanto disperso dos dados.

barplot(riqueza)

Grfico Simples
> x <- 1:20 >x [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 > y <- x**3 >y [1] 1 8 27 64 125 216 343 512 729 1000 1331 1728 2197 2744 3375 [16] 4096 4913 5832 6859 8000 > plot(x,y)

Argumentos Opcionais
Grficos com linhas ligando os pontos podem ser obtidos utilizando o argumento opcional type="l" na funo plot(): > plot(x,y,type="l") H vrias outras opes para os grficos. > plot(x,y,type="b") > plot(x,y,type="o") > plot(x,y,type="s") > plot(x,y,type="c") > plot(x,y,type="h")

plot(x,y,type="l")

Outros tipos
>points(rev(x),y) # Estes vocs mesmos testaro > lines(x,8000-y) # Qualquer dos grficos forma um arco > points(rev(x),y,pch=3) # adiciona cruzes > points(x,8000-y,pch="$") # usando o smbolo dlar >plot(x,y, pch="@") # usando o smbolo arroba >plot(x,y, pch= 1:3) # usa Triangulos, Circulos e cruzes >lines(x,y,lwd=4) # linha grossa >lines(rev(x),y,lty=2) # linha interrompida Estes Grficos vocs mesmos iro plotar e os prximos..

Definindo o intervalo dos eixos


Se voce quiser preencher um mesmo grfico com linhas e pontos que possuem diferentes amplitudes deve usar o argumento type="n". Com este argumento um "grfico em branco" criado, so ajustadas apenas as margens e eixos do grfico e o restante deixado em branco. A seguir adiciona-se linhas e pontos desejados. Voce deve fornecer coordenadas x e y que cubram a amplitude de valores de todos os elementos que voce deseja adicionar ao grfico.

Comandos
> plot(c(0,20),c(-8000,8000),type='n') > lines(x,y) > lines(x,-y) Vejamos um outro exemplo: > plot(c(0,20),c(0,30), type='n') > segments(5, 3, 15, 20) > lines(c(12, 15, 7), c(3, 10, 8), col="red") > abline(30, -2, lty=2, col="blue")

Diferenas Entre Tipos de Grfico


Infelizmente, a forma como se muda argumentos do plot(), boxplot() e barplot() no sempre a mesma, ou seja, comandos que funcionam perfeitamente para o plot() podem no produzir efeito algum no boxplot(), e vice-versa. Esta caracterstica, de fato, atrapalha um pouco, mas assim que se acostuma fica mais fcil. H duas dicas para resolver este problema: (i) tente sempre jogar os argumentos para o par() pois s vezes eles podem no funcionar se chamadas por dentro do plot(), boxplot(), etc, mas iro funcionar pelo par(); (ii) descubra o nome em ingls do parmetro que se quer mudar (label, tick, legend) e jogue no Google legend boxplot. Com certeza, algum j teve este mesmo problema, e entrando dentro da lista do R (as diversas que existem) ou em aulas disponibilizadas na internet, com certeza se acha uma soluo.

Funes para Grficos


abline() : Para inserir linhas de tendncia criadas a partir de um modelo linear. Para isso primeiro necessrio criar o modelo, para depois criar a linha. text() : Para inserir texto dentro do grfico. O texto pode ser uma letra, um smbolo (muito usado para mostrar diferenciar classes no grfico), uma palavra ou at mesmo uma frase. mtext() : Este comando acrescenta texto nas margens do grfico ou da janela grfica. Seu uso mais frequente inserir legendas dos eixos. par(new=TRUE) : Para sobrepor um novo grfico a um grfico j existente. Em vez de criar grficos lado-a-lado, como em par(mfrow=c()), este argumento ir desenhar o novo grfico sobre o grfico anterior.

Funes para Grficos


axis() : Para se inserir um eixo novo. Esta funo bastante usada nos casos em que se deseja ter dois grfico dentro de uma mesma figura (ver par(new=TRUE)), ou ento se deseja controlar muitos dos parmetros dos eixos (como em mtext()). arrows(), rect(), polygon() : Para inserir flechas ou barras de erros use arrows(). J para inserir retngulos, polgonos e outros formatos use rect() e polygon(). demo(graphics) : Vamos testar, apresenta 11 tipos de grficos diferentes, para cada grfico apresenta a funo especifca, apenas precisa entrar com o n para start= ?

Outras Funes Eficientes


demo(plotmath): Apresenta diferentes tabelas com frmulas, outras funes e etc.. demo(image) : Apresenta vrios desenhos com tonalidades diiferentes. demo(persp): GrficosTridimensionais. demo(tkttest): Primeiramente precisa digitar no console = require(tcltk), depois o comando. Estimativas da mdia e varincia. demo(tkdensity): Aparece a curva Glausiana. demo(tkcanvas): Plota um grfico de disperso, com uma linha (linear).

Criando Matrizes
PROXIMA AULA CRIANDO MATRIZES..........