96
Mini - Curso Estatística em Hidrologia Software aplicado a recursos hídricos Setembro de 2011 Fernanda Valente

Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

  • Upload
    hatu

  • View
    214

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

Mini - Curso

Estatística em Hidrologia

Software aplicado

a recursos hídricos

Setembro de 2011

Fernanda Valente

Page 2: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

2

O que é o R?

É um conjunto integrado de ferramentas computacionais que permitem a manipulação e análise de dados, o cálculo numérico e a produção de gráficos.

É uma linguagem de programação simples (uma variante da linguagem S).

É uma linguagem interpretada: – os comandos são imediatamente executados.

É uma linguagem orientada por objectos: – os dados manipulados são armazenados na memória activa

do computador na forma de objectos, que têm um nome e aos quais se podem aplicar acções.

Page 3: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

3

Instalar o R

O R é uma aplicação de distribuição gratuita e de código público (http://cran.r-project.org/), existindo versões já compiladas para execução nos principais sistemas operativos (Windows, Linux e Macintosh).

Depois de fazer o download da versão adequada ao sistema operativo do computador (por ex. R-2.12.2-win32.exe, para o Windows), para instalar o R basta executar esse ficheiro.

Page 4: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

4

Iniciar uma sessão de R

Criar na área de trabalho uma nova pasta (por exemplo, CursoR) onde irão ser guardados os ficheiros de dados – pasta de trabalho.

Iniciar o R:Start → All Programs → R → R 2.12.1

(em alternativa, pode-se criar um atalho no desktop e alterar as suas propriedades de modo a iniciar a aplicação na pasta de trabalho)

Page 5: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

5

RGui (Graphical user interface)

O R funciona fundamentalmente no modo “pergunta-resposta”: – Os comandos (frases que se escrevem numa certa sintaxe)

introduzem-se a seguir à prompt ( > ) e são executados após pressionar Enter ( )

Edição de comandos:– Seleccionar comandos executados anteriormente: ↑ ou ↓– Percorrer a linha de comandos: ← ou → – Colocar o cursor no início / fim da linha de comandos:

Home / End

Para terminar o R:– Executar o comando q() ou fechar a janela da aplicação.

Page 6: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

6

Comandos elementares

Expressão - o resultado é apresentado no visor e não é registado em memória.

> 2+3/4*7^2[1] 38.75> exp(-2)/log(sqrt(2))[1] 0.3904951 Atribuição – o resultado da expressão é atribuído à variável e

não é apresentado no visor.> x <- 2 # <- é o operador de atribuição> x[1] 2> x <- 2+3/4*7^2> x[1] 38.75

Page 7: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

7

Designações das variáveis

Os nomes das variáveis podem ser uma combinação de letras (maiúsculas são diferentes de minúsculas), algarismos e pontos. O 1º caracter deve ser uma letra.

Alguns nomes são utilizados pelo sistema, pelo que devem ser evitados (por ex., c, q, t, C, D, F, I, T, diff, df, pt).

Exemplo: aula1.ex

Page 8: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

8

Ajuda Para obter informação sobre uma função específica, por exemplo a

função mean(), pode utilizar-se qualquer uma das opções:

> help(mean)> help("mean")> ?mean> ?"+" # Nalguns casos é obrigatório utilizar aspas Para pesquisar uma sequência de caracteres no help do R o comando é

help.search(), por exemplo

> help.search("standard desviation")> ??"standard desviation" Para navegar nas páginas de ajuda do R utilizando um browser de

internet o comando é

> help.start()Nota: qualquer um dos comandos anteriores pode também ser executado

através do menu Help.

Page 9: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

9

Objectos

As entidades que o R cria e manipula e que ficam guardadas na memória do computador. – Para listar os objectos disponíveis

> ls()– Para mostrar alguma informação sobre os objectos:

> ls.str()– Para remover objectos:

> rm(objecto1, objecto2,...)– Para remover todos os objectos:

> rm(list=ls())

Page 10: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

10

Workspace

O conjunto de todos os objectos disponíveis numa sessão.

Pode ser guardado num ficheiro com vista à sua utilização em futuras sessões de R.

menu File → Save Workspace...

– No final de cada sessão é perguntado ao utilizador se quer guardar o workspace. Caso a resposta seja afirmativa, todos os objectos disponíveis em memória são guardados no ficheiro “.RData”, na pasta de trabalho em uso, podendo ser carregados na próxima sessão de R.

Podem ser guardados só alguns dos objectos> save(x,file="Exemplo.RData”)

Page 11: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

11

Pasta de trabalho (Working Directory)

Localização da pasta de trabalho> getwd()

Especificação da pasta de trabalho> setwd("C:/Users/fernanda/Documents/CursoR")ou

menu File → Change dir...

Importar um ficheiro de objectos> load("Exemplo.RData”)ou

menu File → Load Workspace...

Page 12: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

12

Exercício 1

a) Importar os ficheiros de objectos DadosMeteo.RData e Precipitacao.RData

b) Ver todos os objectos em memória (com e sem informação adicional)

Nota: 1 - Os objectos precip, temp e vento contêm dados diários para o ano de 2006 de precipitação (mm), temperatura média do ar (ºC) e velocidade média do vento (ms-1), respectivamente, registados em Évora (Portugal).2 – O objecto pg.Jan contém valores totais de precipitação (mm) registados em Lisboa e no Porto no mês de Janeiro, no período 1980 - 1999.3 – O objecto pg.PGarcia contém valores totais anuais de precipitação (mm) registados em Penha Garcia, Castelo Branco (Portugal), entre 1910 e 1994.

Page 13: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

13

Scripts em R

Um script em R é um ficheiro de texto com a extensão “.R”, que contém uma sequência de comandos e que pode ser executado com o comando source("ficheiro") ou através do menu File → Source R code...

Tipicamente, um script é útil quando se pretende repetir as mesmas tarefas várias vezes ou quando se quer divulgar a outros os comandos necessários para resolver um dado problema.

Um modo simples de criar um script em R é abrir uma janela do editor de R (menu File → New script), ir escrevendo os diversos comandos e, no final, guardar o ficheiro de texto (menu File → Save). Caso se pretenda ver ou alterar um programa já existente

menu File → Open script...

Page 14: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

14

Alguns objectos

– vector– factor– matrix– list– data Frame– ts– function

Page 15: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

15

Vector

É uma colecção ordenada de elementos do mesmo tipo (valores numéricos, lógicos, alfanuméricos, ...).

Uma das maneiras de criar um vector no R é através da função c().

> x <- c(5.4, -3.7, 11.2, 0.78, 21.6) > x[1] 5.40 -3.70 11.20 0.78 21.60> y <- c(FALSE, TRUE, TRUE, TRUE, FALSE) > y[1] FALSE TRUE TRUE TRUE FALSE> nomes <- c("Ana","Paulo","Zé")> nomes[1] "Ana" "Paulo" "Zé"

Page 16: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

16

Vector

Um vector pode conter os símbolos especiais NA e NaN, que designam um valor desconhecido e um valor não definido, respectivamente.

> y <- c(NA, 53, 31, 15, 62)> sqrt(c(-1,1,2))[1] NaN 1.000000 1.414214Warning message: NaNs produced in: sqrt(c(-1, 1, 2))

Page 17: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

17

Vector

c() é a função concatenação. Os argumentos desta função podem ser eles próprios vectores, pelo que c(v1,v2) devolve a concatenação dos vectores v1 e v2. Esta função pode ter um qualquer número de argumentos.

> c(x,0,x)[1] 5.40 -3.70 11.20 0.78 21.60 0.00 5.40 -3.70 11.20 0.78 21.60

> nomes <- c(nomes,"Maria") > nomes[1] "Ana" "Paulo" "Zé" "Maria"

Page 18: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

18

Geração de sequências regulares

O R permite gerar sequências de valores numéricos > 1:15 # define o vector c(1,2,...,14,15)> 15:1 # define o vector c(15,14,...,2,1)> 2*1:15 # define o vector c(2,4,...,28,30)> (2*1):15 # define o vector c(2,3,...,14,15)> seq(1,15)> seq(to=15,from=1)> seq(-5,-1,by=0.5)[1] -5.0 -4.5 -4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 > seq(length=9, from=-5, by=0.5)> rep(1:3,2) # define o vector c(1,2,3,1,2,3)> rep(1:3,each=2) # é o vector c(1,1,2,2,3,3)> rep(1:3,1:3) # é o vector c(1,2,2,3,3,3)

Page 19: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

19

Vector numérico (operações aritméticas)

As operações entre vectores são realizadas componente a componente.

Alguns operadores aritméticos: +, -, *, /, ^> v1 <- c(5,7)> v2 <- 10:13> 1/v1[1] 0.2000000 0.1428571> v1+v2 # o vector de menor dimensão é repetido> v1*v2 # (total ou parcialmente) até ficar com o

mesmo número de elementos do maior

> v1*4 # cada componente de v1 é multiplicada por 4

Page 20: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

20

Vector numérico (algumas funções)

log,exp,sin,cos,tan,atan,sqrt,abs, ... length(x)devolve o número de elementos do vector x sum(x)devolve a soma dos elementos do vector x prod(x)devolve o produto dos elementos do vector x cumsum(x)devolve um vector cujos elementos são a soma

acumulada dos elementos do vector x cumprod(x)devolve um vector cujos elementos são o

produto acumulado dos elementos do vector x sort(x)devolve um vector com os elementos do vector x

ordenados por ordem crescente (decrescente com o argumento decreasing=TRUE)

choose(n,k)devolve o número de combinações nCk

Page 21: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

21

Vector lógicoOs resultados das operações que envolvem os

operadores relacionais: <, <=, >, >=, ==, !=

são valores lógicos.> 2==sqrt(4)[1] TRUE> 2!=sqrt(4)[1] FALSEQuando aplicados a vectores, produzem vectores

lógicos.> x[1] 5.40 -3.70 11.20 0.78 21.60> x>11[1] FALSE FALSE TRUE FALSE TRUE

Page 22: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

22

Vector lógico (operações)Os operadores lógicos conjunção, disjunção e

negação são, respectivamente: & | !

> x[1] 5.40 -3.70 11.20 0.78 21.60> x>13[1] FALSE FALSE FALSE FALSE TRUE> x<5[1] FALSE TRUE FALSE TRUE FALSE> x>13 | x<5[1] FALSE TRUE FALSE TRUE TRUE

Page 23: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

23

Vector lógico (função is.na)

A função is.na(x) devolve um vector lógico em que cada elemento é TRUE se o elemento homólogo em x é do tipo NA ou NaN, e ou FALSE caso contrário.

> z[1] 5.4 -3.7 11.2 NA 21.6> is.na(sqrt(z))[1] FALSE TRUE FALSE TRUE FALSEWarning message:NaNs produced in: sqrt(z)> !is.na(z)[1] TRUE TRUE TRUE FALSE TRUE

Page 24: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

24

Selecção de componentes de vectores

Cada elemento de um vector pode ser seleccionado indicando a sua posição entre parêntesis rectos a seguir ao nome do vector:

> letters> letters[3][1] "c" Pode também criar-se um novo vector constituído por alguns

dos elementos do vector indicando as suas posições num vector de índices colocado entre parêntesis rectos:

> letters[c(1,2,4)][1] "a" "b" "d"> letters[-(1:20)] # devolve os elementos de letters

que não estão nas posições indicadas

[1] "u" "v" "w" "x" "y" "z"

Page 25: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

25

Selecção de componentes de vectores (cont.)

Pode também seleccionar-se elementos de um vector escrevendo uma condição entre parêntesis rectos a seguir ao nome do vector.

> x[1] 5.40 -3.70 11.20 0.78 21.60> x[x>0][1] 5.40 11.20 0.78 21.60> x[x>0 & x<10][1] 5.40 0.78

> doy <- 1:365> doy[precip>5] # equivalente a which(precip>5)[1] 80 85 87 92 131 136 ...> temp[precip>0 & temp<5][1] 38 60

Page 26: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

26

Exercício 2

O ficheiro “serrasPortugal.RData” contém os objectos serras.altitude e serras.nome com dados da altitude (em m) e do nome (pela mesma ordem), respectivamente, das principais serras de Portugal Continental (Fonte: Instituto Nacional de Estatística, Portugal).

a) Importe este ficheiro de objectos.

b) Indique o número de serras de Portugal Continental existentes nestes dados.

c) Quais as serras que têm uma altitude inferior a 500 m?

d) Determine o nome e o número das serras que têm uma altitude entre os 800 e os 1000 m, inclusivé.

e) Determine a altitude da Serra da Estrela (Estrela).

Page 27: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

27

Revisões de Estatística

Estatística - ciência que se ocupa da recolha, organização e análise de informação, com a finalidade de inferir de um conjunto limitado de informação para o todo e eventualmente prever a evolução futura de um fenómeno.

A estatística deve ser considerada um instrumento, uma ajuda à compreensão dos fenómenos, e nunca deve substituir a necessária e importante reflexão sobre o problema em estudo.

Page 28: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

28

Dados estatísticos

Os dados (e respectiva variável) podem ser de natureza– qualitativa

• nominal (a ordem das categorias não tem significado)• ordinal (há uma ordenação natural das categorias)

– quantitativa• discreta (provêm de contagens)• contínua (provêm de medições)

Exemplos:– precipitação diária numa estação meteorológica– tipo de ocupação do solo numa bacia hidrográfica

Page 29: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

29

Análise exploratória

A análise inicial de dados univariados tem como principais objectivos: – a exploração dos dados para descobrir/identificar

aspectos ou padrões de maior interesse;– a representação dos dados de modo a destacar esses

aspectos ou padrões:• condensar os dados observados sob a forma de quadros;• representar graficamente os dados;• calcular indicadores numéricos de localização e de dispersão.

Ao explorar dados bivariados o objectivo é:– o estudo da variação conjunta das variáveis, procurando

pôr em evidencia “relações” eventualmente existentes entre elas, utilizando

• indicadores numéricos;• análise gráfica.

Page 30: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

30

Indicadores numéricos no R

mean(x)devolve a média dos elementos do vector x median(x)devolve a mediana dos elementos do vector x

quantile(x,probs=p)devolve o quantil de ordem p dos elementos do vector x; por omissão p=seq(0, 1, 0.25), isto é, devolve os extremos e os quartis de x

max(x)/min(x)devolve o máximo/mínimo dos elementos do vector x

range(x) devolve o vector c(min(x),max(x)) IQR(x) devolve a amplitude inter-quartil dos elementos

do vector x

Page 31: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

31

Indicadores numéricos no R

var(x) devolve a variância dos elementos do vector x; é igual a sum((x-mean(x))^2)/(length(x)-1)

sd(x)devolve o desvio padrão dos elementos do vector x; é igual a sqrt(var(x))

summary(x) devolve os extremos, os quartis e a média do vector x

cov(x,y)devolve a covariância entre x e y cor(x,y)devolve o coeficiente de correlação (de

Pearson) de x e y cor(x,y, method="spearman")devolve o

coeficiente de correlação de Spearman de x e y

Page 32: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

32

Exercício 3

1. Considere os vectores precip, temp e vento.a) Determine para cada vector o número total de elementos.

b) Determine indicadores numéricos de localização e de dispersão para estes dados meteorológicos.

c) Calcule o coeficiente de variação para cada um dos conjuntos de dados.

d) Calcular o coeficiente de assimetria para cada um dos conjuntos de dados.

e) Determine a precipitação anual medida nesta estação meteorológica.

Nota: coeficiente de variação:

coeficiente de assimetria:

C v=sx

C s=n∑ (x i− x)3

(n−1)(n−2) s3

Page 33: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

33

Nota: Funções e valores NA Muitas das funções estatísticas anteriores podem ser

usadas com um argumento adicional, na seguinte formafunção(x, na.rm=FALSE)

em que na.rm é uma variável lógica que indica se os valores desconhecidos devem ser ou não ignorados.Caso o vector x inclua elementos NA,• se na.rm=FALSE (o que ocorre por omissão) a função

devolve NA ou uma mensagem de erro, • se na.rm=TRUE os valores NA são ignorados.

> y[1] NA 53 31 15 62> mean(y)> mean(y,na.rm=TRUE)

Page 34: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

34

Factor

Um factor é um vector de categorias. É utilizado para dados de natureza qualitativa.

> nomes[1] "Ana" "Paulo" "Zé" "Maria" > sexo <- c("M","H","H","M")> sexo <- factor(sexo)> sexo[1] M H H MLevels: H M Os níveis (categorias) de um factor podem ser visualizados e

modificados através do atributo levels.> levels(sexo) <- c("Male","Female")> sexo[1] Female Male Male FemaleLevels: Male Female

Page 35: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

35

Matrix

Uma matrix é uma colecção de dados, todos do mesmo tipo, referenciados por dois índices. É uma generalização para duas dimensões de um vector.

Quando a dimensão é superior a dois, a colecção é designada array. Uma matrix é um array de dimensão 2.

Uma matriz é definida pelo número de linhas (n), número de colunas (m) e um conjunto de (n×m) valores.

Page 36: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

36

Matrix (cont.)

A função matrix()serve para criar matrizes. > M <- matrix(1:12,nrow=3,ncol=4)> M [,1] [,2] [,3] [,4][1,] 1 4 7 10[2,] 2 5 8 11[3,] 3 6 9 12 A opção byrow=TRUE faz com que os elementos sejam

dispostos por linha.> M <- matrix(1:12,3,4,byrow=TRUE)

Page 37: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

37

Matrix (cont.)

Um objecto do tipo matrix tem associado o atributo dim que indica a sua dimensão, i.e., nº de linhas e nº de colunas.

> dim(M) # ver a dimensão de M [1] 3 4Um vector pode ser transformado numa matriz.> A <- c(3,2,-4,0,-1,8) # A é um vector > dim(A) <- c(3,2) # transforma A numa

matriz com 3 linhas e 2 colunas

> A [,1] [,2][1,] 3 0[2,] 2 -1[3,] -4 8

Page 38: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

38

Matrix (cont.)

Uma matriz pode ser transformada num vector.> A [,1] [,2][1,] 3 0[2,] 2 -1[3,] -4 8> as.vector(A) # devolve um vector cujos

elementos são os da matriz

[1] 3 2 -4 0 -1 8

Page 39: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

39

Matrix (cont.)

Uma matriz pode ser criada por concatenação de vectores e/ou matrizes:

• A função cbind faz a concatenação dos objectos por coluna> u <- 1:3 ; v <- 4:6> U <- cbind(u,v)

• A função rbind faz a concatenação dos objectos por linha> V <- rbind(u,v)

Page 40: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

40

Matrix (indexação e selecção de componentes)

M[i,j] é o elemento de M que está na linha i e na coluna j > M[3,1] M[i,] é a linha i e M[,j] é a coluna j da matriz M. Estes

objectos são do tipo vector> M[2,] > M[,1] Para seleccionar parte de uma linha/coluna indicam-se os índices

correspondentes

> M[c(1,3),1] # igual a M[-2,1]

Se a selecção incluir mais do que uma linha e mais do que uma coluna, o resultado é uma submatriz

> M[2:3,c(1,3,4)]

Page 41: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

41

List

Uma lista é uma colecção ordenada de objectos, que podem ser de tipos diferentes (vectores numéricos, vectores lógicos, matrizes, listas, funções, ...).

Chama-se componente a cada um dos objectos da lista. As componentes são numeradas e podem ter um nome associado.

> uma.lista <-list(um.vector=1:10, + uma.palavra="Olá",+ uma.matriz=matrix(1:20,ncol=5),+ outra.lista=list(a=5,b=factor(c("a","b")))) Muitas funções no R devolvem uma lista, ou seja, um conjunto

de resultados de tipo e dimensão distintos.

Page 42: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

42

List (selecção de componentes)

As componentes de uma lista são indexadas e podem ser referidas pelo seu índice, utilizando parêntesis rectos duplos; se tiverem nome, também podem ser referidas pelo nome.

> uma.lista[[2]]> uma.lista$uma.palavra

Page 43: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

43

Data frame

Uma data frame é um caso especial de lista em que as componentes têm todas o mesmo nº de elementos.

É um quadro de dados em que as colunas podem ser de tipos diferentes.

> meteo.Evora <-data.frame(ano=rep(2006, + 365), dia=doy, vento,temperatura=temp,+ precipitacao=precip)

> pb.Jan

Page 44: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

44

Data frame (selecção de componentes)

Os elementos de uma data frame podem ser referidos indicando a linha e a coluna:

> meteo.Evora[3,1]> meteo.Evora[,2]

A notação nomeDataFrame$nomeComponente (como numa list) também pode ser usada:

> meteo.Evora$dia > meteo.Evora[[2]]

Page 45: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

45

Data frame (função attach)

As consultas a data frames podem ser simplificadas utilizando a função attach()

A função attach() coloca o nome da data frame no search path (o que permite aceder directamente às colunas de uma data frame, sem necessidade de referir o seu nome).

> diaError: object 'dia' not found> attach(meteo.Evora)> dia[1] [1] 1 2 3 4 5 …> search() # o search path> detach(meteo.Evora)> diaError: object 'dia' not found

Page 46: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

46

Leitura de ficheiros

Uma tabela de valores, registada num ficheiro de texto (ASCII), pode ser atribuída a uma data frame, através da função

read.table(ficheiro,header=FALSE,sep="", dec = ".",row.names, col.names, as.is = FALSE, na.strings = "NA")

em que,

ficheiro é o nome do ficheiro de dados (entre aspas); se este não se encontrar na pasta de trabalho, é necessário indicar o endereço (utilizando / ou \\ como separador de pastas);

header é uma variável lógica que indica se o ficheiro tem ou não os nomes das variáveis na primeira linha. Por omissão o valor é FALSE;

sep é o caracter que separa os valores em cada linha; por omissão é "" que corresponde a um ou mais espaços em branco;

Page 47: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

47

Leitura de ficheiros (cont.)

dec é o caracter utilizado como separador decimal. Por omissão é o ponto;

row.names é um vector com os nomes das linhas. Por omissão 1,2,3,...;

col.names é um vector com os nomes das colunas. Por omissão V1,V2,V3,...;

as.is é uma variável lógica que controla a conversão das variáveis alfanuméricas em factores. Se o seu valor é TRUE a leitura mantém o tipo original dos dados;

na.strings é o valor usado para os dados desconhecidos no ficheiro e que será convertido em NA.

Page 48: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

48

Leitura de ficheiros (exemplo)

O ficheiro de texto (com valores separados por vírgulas e com cabeçalho) “EstacMeteo.csv” contem dados referentes às estações meteorológicas automáticas do Instituto de Meteorologia de Portugal.Criar a data frame estac.meteo com o conteúdo deste ficheiro.

> estac.meteo <- read.table("EstacMeteo.csv",+ header=TRUE, as.is=TRUE,sep=",")

> estac.meteo <- read.csv("EstacMeteo.csv",+ as.is=TRUE)

Page 49: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

49

Importar dados de uma folha de cálculo

Há packages que têm funções para importar e exportar dados de folhas de cálculo (por exemplo, xlsReadWrite, ROpenOffice).

Em alternativa, pode-se:– copiar os dados a importar para uma nova folha de

cálculo,deste modo evitam-se problemas com a importação de colunas e linhas desnecessárias

– salvar essa folha como ficheiro de texto separado por tabs (.txt) ou por vírgulas (.csv), com ou sem cabeçalho,

note que o separador utilizado pode ser a vírgula ou o ponto e vírgula, dependendo da configuração regional do Windows

– ler o ficheiro no R com a função read.table (ou read.csv)

Page 50: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

50

Escrita em ficheiros

Para escrever num ficheiro o conteúdo de uma data frame ou de uma matriz usa-se a função

write.table(x,file="",quote=TRUE,sep=" ",na="NA",dec=".",row.names=TRUE,col.names=TRUE)em que,

x é o nome do objecto a guardar;

file é o nome do ficheiro, incluindo o caminho de pastas;

quote é uma variável lógica que indica se as variáveis alfanuméricas são ou não escritas entre aspas;

sep é o caracter que separa os valores em cada linha; por omissão é um espaço em branco;

Page 51: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

51

Escrita em ficheiros (cont.)

na é a representação no ficheiro dos NA’s de x;

dec é o caracter utilizado como separador decimal. Por omissão é o ponto;

row.names , col.names ou são variáveis lógicas que indicam se o ficheiro vai ou não conter os nomes das linhas/colunas de x, ou são vectores alfanuméricos com os nomes a atribuir às linhas/colunas no ficheiro.

Page 52: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

52

Escrita em ficheiros (exemplo)

Guardar no ficheiro “meteoEvora.txt” a data frame meteoEvora, utilizando como separador de campos o espaço em branco.

> write.table(meteo.Evora,"meteoEvora.txt",+ row.names=FALSE) Guardar no ficheiro “meteoEvora.csv” a data frame meteoEvora, utilizando como separador de campos a vírgula

> write.table(meteo.Evora,"meteoEvora.csv",+ row.names=FALSE, sep=",")> write.csv(meteo.Evora,"meteoEvora.csv",+ row.names=FALSE)

Page 53: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

53

Ler/Escrever dados de/em outros softwares

No package foreign, há funções para importar e exportar dados em formato binário de Minitab, S, SAS, SPSS, Stata,Systat, ….

É também possível ler/escrever em Bases de Dados. Para mais informações consultar o manual “R Data Import/Export”:

menu Help → Manuals (in PDF) → R Data Import/Export

Page 54: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

54

Gráficos

O R permite construir uma grande variedade de gráficos:> demo(graphics)> demo(persp) Os comandos para criar gráficos dividem-se

fundamentalmente em dois grupos:– funções gráficas de alto nível (que permitem criar um

novo gráfico);– funções gráficas de baixo nível (que permitem

acrescentar informação a um gráfico existente).

A função par permite ver e modificar uma lista de parâmetros gráficos.

> par() # devolve a lista dos valores dos parâmetros > ?par # informação sobre a função par

Page 55: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

55

Função gráfica: plot plot(x), com x um vector numérico, produz um diagrama dos

valores de x versus o seu índice:> plot(temp)

plot(x,y), com x e y vectores numéricos, produz um diagrama de pontos de y versus x:

> attach(pg.Jan)> plot(Lisboa,Porto)> attach(estac.meteo)> plot(-Longitude,Latitude)

plot(f,from=a,to=b), com f uma função, traça o gráfico de f entre a e b (por omissão, a=0 e b=1):

> plot(sin)> plot(sin,-2*pi,2*pi)

Page 56: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

56

Função gráfica: plot (argumentos)

Com a função plot podem ainda ser utilizados outros argumentos. O argumento type controla o tipo de gráfico produzido. O seu valor pode ser "p" (pontos) (valor por omissão), "l" (linhas), "b" (pontos ligados por linhas), "h" (linhas verticais dos pontos ao eixo das abcissas), "s" e "S" (função em escada).

> plot(precip,type="h")> plot(temp,type="l")> plot(Ano, Lisboa,type="h")

Page 57: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

57

Função gráfica: plot (argumentos)

O título, sub-título e as legendas dos eixos num gráfico podem ser criados/alterados através dos argumentos main, sub, xlab e ylab, respectivamente. Os extremos dos eixos podem ser definidos com os argumentos xlim e ylim, cujos valores são vectores de duas componentes.

> plot(temp,type="l",main=+ "Temperatura média do ar em 2006",+ xlab="dia do ano",ylab="Temp (ºC)") Qualquer um dos argumento da função par pode ser

também utilizado como argumento da função plot para modificar as características do gráfico produzido.

Page 58: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

58

Função gráfica: barplot

Cria um gráfico de barras> barplot(Lisboa,names.arg=Ano)

Um exemplo mais elaborado> LxPr.transp <- t(as.matrix(pb.Jan[,2:3]))> barplot(LxPr.transp,names.arg=Ano,+ beside=T, col=c("red","blue"),+ legend=c("Lisboa","Porto"),+ main="Precipitação mês de Janeiro (mm)")

Nota: a função colors() devolve o nome das cores que o R reconhece. Ver também palette()

Page 59: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

59

Visualização de vários gráficos

As funções gráficas de alto nível criam, por omissão, um novo gráfico, apagando, se necessário, aquele que se encontra na janela gráfica. – Em alguns casos, a utilização do argumento add=TRUE

permite sobrepor diferentes gráficos na mesma janela gráfica.

> plot(sin,-pi,pi)> plot(cos,-pi,pi,add=TRUE,col="red",lty=2)

Pode-se utilizar a função par para visualizar simultaneamente vários gráficos.

> op<-par(mfrow=c(2,1))> plot(dia,temp,type="l");plot(dia,precip,type="l")> par(op) # recupera os valores iniciais dos parâmetros

Page 60: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

60

Funções gráficas de baixo nível

Permitem acrescentar informação a um gráfico existente na janela gráfica:– as funções points(x,y) e lines(x,y) permitem

acrescentar, respectivamente, pontos e pontos ligados por linhas;

– a função abline(a,b) acrescenta uma recta de declive b e ordenada na origem a;

– as funções abline(v=x)e abline(h=y) permitem adicionar rectas verticais (de abcissa x) e horizontais (de ordenada y), respectivamente;

– a função legend permite acrescentar uma legenda ao gráfico.

Page 61: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

61

Funções gráficas de baixo nível (exemplos) Um exemplo> plot(Ano,Lisboa,ylab="precipitação", type="b")> points(Ano,Porto,col="red",type="b")> legend(1980,350,c("Lisboa","Porto"),+ col=c("black","red"),lty=1,pch=1)

Outro exemplo mais complexo> plot(dia,temp,type="l",ylab="Temperatura média+ diária (T, mm)")> abline(h=mean(temp))> abline(h=c(mean(temp)-sd(temp),+ mean(temp+sd(temp)), lty=2,col="red")> legend(0,30,c(expression(bar(T)),+ expression(bar(T) %+-% s[T])), + col=c("black","red"),lty=1:2)

Page 62: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

62

Guardar gráficos

Os gráficos produzidos podem ser guardados em ficheiros de vários tipos (pdf, jpeg, ps, …):– num ficheiro de format pdf> pdf("exemploG1.pdf")> plot(Ano,Lisboa,type="h")> dev.off()

– em formato ps segue-se um procedimento idêntico > postscript("exemploG1.ps")...

ou utiliza-se o botão direito do rato e escolhe-se a opção “Save as postscript ...”

Page 63: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

63

Histograma

A função hist(x), cria um histograma com os elementos do vector x.

> par(mfrow=c(1,2)) > hist(Porto); hist(Lisboa) O parâmetro breaks=x da função hist() permite definir

o número de rectângulos do histograma (por omissão, calculado pela regra de Sturges, 1 + log2(n)) em que :

– x é o número de classes em que se pretende agrupar os dados, ou

– x é um vector numérico com os limites das várias classes.> par(mfrow=c(2,2))> hist(Pg)> hist(Pg,breaks=seq(300,1700,by=200))> hist(Pg,breaks=seq(300,1600,by=100))> hist(Pg,breaks=seq(300,1600,by=100),prob=T)

Page 64: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

64

A função hist O parâmetro prob permite controlar se a área total do

histograma é um (prob=TRUE) ou se o histograma é construído com base nas frequências absolutas (prob=FALSE)– por omissão, prob=FAlSE sse as classes têm igual amplitude

Quando utilizada com o parâmetro plot=FALSE, a função hist devolve uma lista

> hist(Pg,breaks=seq(300,1600,by=100),plot=F)breaks – vector com os limites das classescounts – vector com as frequência absoluta das classesintensities – vector com (frequência relativa/amplitude) das classesdensity – idemmids – vector com os pontos médios das classesequidist – valor lógico que indica se as classes têm ou não amplitude

constante

Page 65: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

65

Caixa-de-bigodes (box plot)

É um gráfico que permite representar em simultâneo medidas de localização e dispersão de uma amostra:– transmite de modo imediato uma ideia da localização,

dispersão e forma da população de que foi extraída a amostra;

– é um instrumento adequado para comparar várias amostras.

Estes gráficos podem ser obtidos em R utilizando a função boxplot().

> boxplot(Pg)> boxplot(pg.Jan[,2:3])

Page 66: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

66

Exercício 4

Considere os dados do vector serras.altitude.a) Construa um diagrama de extremos e quartis e um

histograma.b) Construa três novos histogramas: um com classes de

amplitude de 100m, outro com classes de amplitude de 250m e outro com classes de amplitude 200m mas cujo o primeiro intervalo de classe é ]100,300].

c) Apresente os quatro histogramas construidos nas alíneas anteriores na mesma janela gráfica (sugestão: utilize a função par).

d) Dos quatro histogramas anteriores, qual permite ter uma melhor representação gráfica da distribuição das altitudes das serras de Portugal Continental? Justifique.

Page 67: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

67

Packages

Todas as funções e comandos do R estão armazenados em módulos (packages).

Numa sessão de R, o conteúdo de um package só fica disponível quando este é carregado em memória.– Para ver quais os packages disponíveis: >(.packages())– Para ver quais os packages instalados localmente: >library()– Para carregar em memória um package já instalado: >library(nome_package)

ou menu Packages → Load Package ... O R inclui um conjunto de packages desenvolvidos pelos

utilizadores para implementar métodos específicos, quer na área da estatística, quer noutras áreas (por ex. R Commander-Rcmdr). – Para instalar um package fazer:

menu Packages → Install Package(s) ...

Page 68: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

68

Package: fBasics

fBasics: estatísticas básicas e de mercado (ambiente criado para o ensino de “Engenharia Financeira” e “Finanças Computacionais”)

Indicadores de forma: – coeficiente de assimetria

> skewness(precip); skewness(pg.PGarcia$Pg)

– coeficiente de achatamento> kurtosis(precip); kurtosis(pg.PGarcia$Pg)

Resumos de indicadores:> basicStats(precip)> basicStats(pg.PGarcia$Pg)

Page 69: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

69

Package: Rcmdr

R commander: uma interface gráfica do R para análises estatísticas básicas.

Para um correcto funcionamento em Windows, o R commander deve ser utilizado quando o R está a ser executado numa janela gráfica de um único documento (SDI). – Pode-se alterar as propriedades de um atalho do R para iniciar

esta aplicação em modo SDI: acrescentar --sdi ao caminho indicado em Target.

A função Commander() inicia a interface gráfica do R commander

Page 70: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

70

Modelos probabilísticos no R

O software R disponibiliza “tabelas estatísticas” para um conjunto de distribuições.

Para cada distribuição estatística é possível calcular1. função massa de probabilidade ou função densidade 2. função distribuição cumulativa3. quantis4. números pseudo-aleatórios

Nota: o quantil de ordem p é o menor valor de x tal que F(x) ≥ p, sendo F a função distribuição cumulativa

Page 71: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

71

Modelos probabilísticos no R

Distribution R name additional argumentsbeta beta shape1, shape2, ncpbinomial binom size, probCauchy cauchy location, scalechi-squared chisq df, ncpexponential exp rateF f df1, df2, ncpgamma gamma shape, scalegeometric geom probhypergeometric hyper m, n, klog-normal lnorm meanlog, sdloglogistic logis location, scaleneg. binomial nbinom size, probnormal norm mean, sdPoisson pois lambdaStudent's t t df, ncpuniform unif min, maxWeibull weibull shape, scaleWilcoxon wilcox m, n

Page 72: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

72

Modelos probabilísticos no R

Ao nome R da distribuição acrescentam-se os prefixos:– d para função massa de probabilidade ou função densidade – p para função distribuição cumulativa– q para quantis– r para números pseudo-aleatórios

As funções pxxx e qxxx têm o argumentos lógico: lower.tail – se for TRUE (por omissão), as probabilidades são P[X ≤ x], caso contrário são P[X > x].

Page 73: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

73

Distribuição binomial

n inteiro positivo e 0 < p < 1

– pode tomar os valores

– com probabilidade

Exemplo: Seja

– > dbinom(2,4,0.3)– > pbinom(2,4,0.3)

Alguns gráficos da função massa de probabilidade: > x <- 0:4> plot(x,dbinom(x,4,0.3),type="h")> x <- 0:50> plot(x,dbinom(x,50,0.3),type="h")

X ∩B n , p

P [ X =x ]=nx px 1− pn−x

x=0, 1,2,⋯ , n

X ∩B 4, 0.3

P [ X =2]=0.2646P [ X ≤2]=0.9163

Page 74: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

74

Exercício 5

a) Qual a probabilidade do caudal instantâneo de um dado curso de água atingir ou ultrapassar (pelo menos uma vez) o valor associado a um período de retorno de T=50 anos durante os n=10 anos de construção de uma barragem nesse curso de água?

b) Construa um gráfico do risco R (a probabilidade de um determinado acontecimento hidrológico ser igualado ou excedido pelo menos uma vez em n anos sucessivos) em função do período de retorno T.Nota: utilize escalas logarítmicas nos dois eixos com a função par(xlog=TRUE,ylog=TRUE) e plot(...,log="xy")

Page 75: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

75

Exercício 5 b)

Page 76: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

76

Distribuição normal

– pode tomar qualquer valor real– função densidade– valor médio E[ X ] = μ– variância Var[ X ] = σ2

Exemplo: Seja – > pnorm(2,2,4)– > 1-pnorm(2.5,2,4)

Alguns gráficos da função densidade:> curve(dnorm(x), from=-6, to=13)> curve(dnorm(x,0,2), from=-6, to=6, add=T, col=2)> curve(dnorm(x,8,1), from=-6, to=13, add=T, col=3)

X ∩N ,

f ( x)= 1√2πσ

e−1

2 ( x−μσ )2

, x∈ℝ

∈ℝ , 0

P [ X ≤2]=0.5P [ X >2.5]=0.4502618

X ∩N (2, 4)

Page 77: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

77

Outras distribuições com interesse emhidrologia Log-normal, Gumbel, Pearson tipo III, Weibull ...

– aparecem em diferentes packages: stats, evd, lmom, lmomco, …

Exemplo: Seja – > plnorm(2,0,1)– > 1-plnorm(2.5,0,1)

Alguns gráficos da função densidade:> curve(dlnorm(x),from=0,to=6,ylim=c(0,2))> curve(dlnorm(x,0,0.5),from=0,to=6,add=T,col=2)> curve(dlnorm(x,0,0.25),from=0,to=6,add=T,col=3)> curve(dlnorm(x,1,1),from=0,to=6,add=T,col=4)

P [ X ≤1]=0.5P [ X >2.5]=0.1797572

X ∩ln N (1, 2)⇔ ln ( X )∩N (1, 2)

Page 78: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

78

Qual a distribuição teórica que se ajusta?

Métodos gráficos:– Histograma e função densidade (estimada e teórica)

> attach(pg.PGarcia)> hist(Pg)> hist(Pg,breaks=seq(200,1600,100),prob=TRUE)> lines(density(Pg)) # adiciona curva densidade estimada por

kernel> curve(dnorm(x,mean(Pg),sd(Pg)),from=200,to=1600,+ add=TRUE,lwd=2,col=2)

– Função distribuição cumulativa empírica> plot(ecdf(Pg))> plot(ecdf(Pg), verticals=TRUE, do.points=FALSE)> curve(pnorm(x,mean(Pg),sd(Pg)),from=200,to=1600,+ add=TRUE,lwd=2,col=2)

Page 79: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

79

Qual a distribuição teórica que se ajusta?

Métodos gráficos (cont.):– Diagrama quantil-quantil (q-q plot)

• é um diagrama de pontos dos quantis de uma amostra versus os quantis, da mesma ordem, de outra amostra (ou distribuição teórica).

– Se as amostras têm a mesma dimensão, o q-q plot não é mais do que um diagrama de pontos das amostras ordenadas.

• Objectivo: avaliar se as duas amostras provêm de populações com uma distribuição comum ou se a amostra se ajusta à distribuição teórica considerada.

– Neste caso, os pontos devem-se situar aproximadamente ao longo da recta bissectriz dos quadrantes ímpares; quanto mais se afastarem desta linha de referência, mais provável é as duas populações terem diferentes distribuições.

Page 80: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

80

Qual a distribuição teórica que se ajusta?

Métodos gráficos (cont.):– Diagrama quantil-quantil (q-q plot)

Exemplo: com a precipitação total anual de Penha Garcia

> par(pty="s") # gráfico numa região quadrada> qqnorm(Pg) # qqplot com a distribuição normal

idêntico ao comando seguinte> qqplot(qnorm(ppoints(length(Pg)),Pg)> qqline(Pg) # acrescenta uma linha recta ao

gráfico anterior que passa no 1º e 3º quartis

Nota: a função ppoints (também utilizada por qqnorm) gera uma sequência de n pontos de probabilidade utilizando a fórmula de Cunnane

(1:n – a)/(n + 1 – 2a) com a = 3/8 se n ≤ 10 ou a = 1/2 caso contrário.

Page 81: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

81

Qual a distribuição teórica que se ajusta?

Outro exemplo: Pretende analisar-se se a distribuição de Gumbel se ajusta adequadamente à precipitação diária máxima anual registada em Penha Garcia, Portugal (dados no ficheiro “Pmad.PGarcia.csv”)

Relembrando a distribuição Gumbel:

– função densidade– valor médio– Variância

Nota: as funções associadas à distribuição de Gumbel (dgumbel, pgumbel, qgumbel, rgumbel) encontram-se no package evd.

X ∩Gum (α ,β) ,α∈ℝ , β>0

f (x)= 1α exp [− x−β

α −exp(− x−βα )] , x∈ℝ

E [ X ]=α+0.5772β

Var [ X ]=π2

6β2

Page 82: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

82

Qual a distribuição teórica que se ajusta?

Outro exemplo (cont):

> Pmad.PGarcia<-read.csv("Pmad.PGarcia.csv")> lybrary(evd)> ?qgumbel# Cálculo das estimativas dos parâmetros de# escala (β) e localização (α)> escala<-sqrt(6)*sd(Pmad.PGarcia$Pmad)/pi> local<-mean(Pmad.PGarcia$Pmad)-+ 0.5772*escala> qqplot(qgumbel(ppoints(66),loc=local,+ scale=escala),Pmad.PGarcia$Pmad)> abline(a=0,b=1)

Page 83: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

83

Qual a distribuição teórica que se ajusta?

Outro exemplo: simulação de 66 valores provenientes de uma Dist. de Gumbel com os mesmos parâmetros de localização e de escala do exemplo anterior

# fixar a semente do gerador de nº aleatórios> set.seed(1234) > x <- rgumbel(66,loc=local,scale=escala)> qqplot(qgumbel(ppoints(66),loc=local,+ scale=escala),x)> abline(a=0,b=1)

Page 84: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

84

Qual a distribuição teórica que se ajusta?

Testes de ajustamento:– Teste de Shapiro-Wilk (teste de normalidade)shapiro.test(...)

– Teste do qui-quadrado de Pearsonchisq.test(...)

– Teste de Kolmogorov-Smirnovks.test(...)

Exemplo:> shapiro.test(Pg)> ks.test(Pmad.PGarcia$Pmad, + "pgumbel", loc = 45, scale=16.3)

Page 85: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

85

Testes de hipóteses:

Procedimento:1º Formular duas hipóteses:

Hipótese nula (H0) onde se especifica o valor do parâmetro ou distribuição a verificar (a que se dá o beneficio da dúvida)Hipótese alternativa (H1) onde se específica a hipótese a considerar se rejeitarmos H0 (a que se dá o ónus da prova)

2º Identificar a estatística do teste (e as condições em que é válida).

3º Definir o nível de significância (α)

4º Calcular a estatística do teste5º Conclusão: rejeitar H0 se o valor p (p-value) ≤ α

o p-value é a probabilidade da estatística do teste tomar valores mais extremos que o valor calculado com base na amostra, sob H0 verdadeira.

α=P [Rejeitar H 0∣ H 0 verdade ]

Page 86: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

86

Alguns testes paramétricos no R

Testes paramétricos – supõe-se conhecida a distribuição teórica da população em estudo e as hipóteses a formular dizem respeito ao(s) parâmetro(s).

t.test(…) Teste t-Student para o valor da média de uma população normal ou para a comparação das médias de duas populações (utilizando amostras independentes ou amostras emparelhadas)

Exemplo: Comparação da precipitação média no mês de Janeiro nas cidades do Porto e Lisboa (amostras emparelhadas – factor de emparelhamento: ano)> attach(pg.Jan)> shapiro.test(Lisboa-Porto) #teste à normalidade

da população das diferenças> t.test(Lisboa, Porto, pair=TRUE)var.test(…) Teste F à razão das variâncias de duas populações normais.

Page 87: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

87

Exercício 6

É desencadeado um programa de controlo da poluição de um rio em que foram efectuadas medições, antes de lançar a campanha anti-poluição e um ano após. As medições são combinações de vários índices: quanto maior for o valor resultante maior é a poluição. Obtiveram-se os seguintes resultados:

Será que a campanha anti-poluição reduziu de facto a poluição? Explicite e verifique todas as hipóteses necessárias à resolução do problema

Ponto de controlo

1 2 3 4 5 6 7 8 9 10

Antes da campanha

68 88 101 82 96 74 65 74 52 99

Um ano após 67 87 90 76 98 69 68 65 59 70

Page 88: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

88

O modelo linear

Designação genérica que engloba vários modelos estatísticos como:– a regressão linear (simples e múltipla)– a análise de variância– a análise de covariância

Relaciona, Y - a variável resposta (dependente, modelada), com x1, x2, …, xp - as variáveis preditoras (independentes, explicativas).

Pressupostos,Y i=β0+β1 x1(i)+β2 x2(i)+...+βp x p(i)+ϵi , i=1,... , nϵi∩N (0,σ2) ,∀i

{ϵ}i são v.a. independentes

Page 89: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

89

O modelo linear no R

lm(…) função básica no estudo do modelo linear (linear model). Tem como primeiro argumento (obrigatório) um objecto do tipo formula que indica qual a variável resposta (e.g., y) e quais as variáveis preditoras (e.g., x1, x2, x3)

y ~ x1 + x2 + x3 Exemplos:> lm(y ~ x) # RLS de y sobre x > lm(y ~ -1+x) # RLS de y sobre x com ordenada na

origem nula (recta passa na origem)> lm(y ~ x1+x2+x3)# RLM de y sobre x1, x2, x3> lm(log(y) ~ x1+x2)# RLM da variável transformada,

log(y), sobre x1, x2

Page 90: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

90

O modelo linear no R (cont.).

A função lm produz um objecto de classe “lm”, uma list com várias componentes. A maioria dessas componentes não é mostrada automaticamente.

Informação sobre o modelo ajustado pode ser obtida utilizando várias funções como, por exemplo,summary devolve um resumo alargado do resultado da

análise de regressão;coef devolve o vector das estimativas dos fitted devolve os valores ajustados da variável respostaresiduals devolve os resíduosconfint devolve intervalos de confiança para cadapredict permite ajustar novas observações à regressão

ajustada ou obter intervalos de confiança para o valor esperado da variável resposta ou intervalos de predição.

(e i= yi− yi)( yi)

βi

βi

Page 91: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

91

Um exemplo

Um dos métodos de estimar a capacidade de armazenamento de um copado arbóreo (parâmetro utilizado na modelação da intercepção) utiliza a relação linear que se pode estabelecer entre a precipitação (bruta) e precipitação sob-coberto para chuvadas independentes com completa saturação do copado.

> pinhal<- read.csv("Pinhal.csv")> pinhal[1:3,]> summary(pinhal)> boxplot(pinhal)> cor(pinhal)> plot(pinhal) # idêntico a plot(pinhal$tf ~ pinhal$pg)> lm(tf ~ pg, data=pinhal)> pinhal.lm<-lm(tf ~ pg, data=pinhal)# recta ajustada

Tf = -0.3798 + 0.86642 pg> abline(pinhal.lm)> summary(pinhal.lm)

Page 92: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

92

Os resultados de summary (lm(...)) Coefficientes: Estimate – estimativa de cada parâmetro do modelo

Std.Error – estimativa do erro padrão (desvio padrão associado a cada estimador dos parâmetros)t-value – valor da estatística num teste-t às hipótesesPr(>|t|) – p-value associado ao teste anterior

Residual standard error – estimativa do desvio padrão erros aleatórios (ε) e respectivos graus de liberdade.

Multiple R-squared – coeficiente de determinação (R2) Adjusted R-squared – R2 modificado

F-statistic – estatística do teste F de ajustamento global com as hipótesesrespectivos graus de liberdade e p-value

H 0 : β j=0 vs. H 1 : β j≠0

H 0 : β j=0, ∀ j=1,... , p vs. H 1: ∃ j t.q. β j≠0

=1−(1−R2)× n−1n−( p+1)

Page 93: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

93

Análise de resíduos e outros diagonósticos

Para identificar eventuais violações grosseiras aos pressupostos do modelo é conveniente analisar os resíduos.

Outras ferramentas de diagnóstico visam identificar observações individuais com características especiais (por exemplo, distância de Cook e “observações alavanca”- leverage points)

O R disponibiliza uma forma gráfica rápida para fazer esta análise: aplicar o comando plot a um objecto da classe “lm”> op <- par(mfrow=c(3,2))> plot(pinhal.lm,which=1:6)> par(op)

Page 94: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

94

Exercício 7

O ficheiro “Homogeneidade.csv” contém dados de precipitação anual (cm). A série AY corresponde a valores médios das precipitações anuais medidas em 25 estações homogéneas e a série Z às precipitações anuais registadas na estação z, situada na mesma região das anteriores. Sabe-se que na década de 1930 a estação z foi deslocada de lugar.

a) Utilizando o método da dupla-massa, verifique se a série Z é homogénea.b) Caso não haja homogeneidade, efectue as correcções necessárias para que a série Z fique homogénea.

Page 95: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

95

Mais algumas informações

O package topmodel faz a implementação deste modelo hidrológico em Rhttp://cran.r-project.org/web/packages/topmodel/index.html

Outro package com interesse EcoHydRologyhttp://cran.r-project.org/web/packages/EcoHydRology/index.html

Para mais informações sobre análise de dados hidrológicos e modelação http://rwiki.sciviews.org/doku.php?id=guides:tutorials:hydrological_data_analysis

Page 96: Mini - Curso Estatística em Hidrologia · > load("Exemplo.RData”) ou ... a sua posição entre parêntesis rectos a seguir ao nome do ... (a ordem das categorias não tem significado)

96

Bibliografia geral para o R

Documentação disponível no CRAN (Comprehensive R Archive Network - http://www.r-project.org/):

The R Manuals, editados por, R Development Core Team, Current Version: 2.13.1 (Julho 2011)

(http://cran.r-project.org/manuals.html).

Contributed Package: Available Bundles and Packages(http://cran.r-project.org/web/packages/)

Contributed Documentation, escritos por utilizadores de R. Por exemplo, “Introdução à Programação em R” por Luis Torgo. (http://cran.r-project.org/other-docs.html)

Fox, J., Getting Started With the R Commander (August 2006) (http://socserv.socsci.mcmaster.ca/jfox/Misc/Rcmdr/Getting-Started-with-the-Rcmdr.pdf)