Professional Documents
Culture Documents
Estatística em Hidrologia
Software aplicado
a recursos hídricos
Fernanda Valente
Setembro de 2011
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.
2
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.
3
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
4
RGui (Graphical user interface)
Exemplo: aula1.ex
7
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
8
através do menu Help.
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())
9
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
10
> save(x,file="Exemplo.RData”)
Pasta de trabalho (Working Directory)
Localização da pasta de trabalho
> getwd()
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. 12
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... 13
Alguns objectos
– vector
– factor
– matrix
– list
– data Frame
– ts
– function
14
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é"
15
Vector
Um vector pode conter os símbolos especiais NA e
NaN, que designam um valor desconhecido e um
valor não definido, respectivamente.
16
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" 17
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)18
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
19
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)
n
choose(n,k)devolve o número de combinações Ck
20
Vector lógico
Os resultados das operações que envolvem os
operadores relacionais:
<, <=, >, >=, ==, !=
são valores lógicos.
> 2==sqrt(4)
[1] TRUE
> 2!=sqrt(4)
[1] FALSE
Quando aplicados a vectores, produzem vectores
lógicos.
> x
[1] 5.40 -3.70 11.20 0.78 21.60
> x>11
21
[1] FALSE FALSE TRUE FALSE TRUE
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
22
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 FALSE
Warning message:
NaNs produced in: sqrt(z)
> !is.na(z)
[1] TRUE TRUE TRUE FALSE TRUE
23
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"
24
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
27
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
28
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. 29
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
30
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
31
Exercício 3
> y
[1] NA 53 31 15 62
> mean(y)
> mean(y,na.rm=TRUE) 33
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 M
Levels: 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 Female
Levels: Male Female 34
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.
35
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)
36
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 4
Um 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 37
[3,] -4 8
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
38
Matrix (cont.)
Uma matriz pode ser criada por concatenação de vectores
e/ou matrizes:
39
Matrix (indexação e selecção de componentes)
42
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.
> pb.Jan
43
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]]
44
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).
> dia
Error: object 'dia' not found
> attach(meteo.Evora)
> dia
[1] [1] 1 2 3 4 5 …
> search() # o search path
> detach(meteo.Evora)
> dia
Error: object 'dia' not found
45
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;
46
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.
47
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.
48
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)
49
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; 50
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.
51
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)
52
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, ….
53
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 54
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(precip,type="h")
> plot(temp,type="l")
> plot(Ano, Lisboa,type="h")
56
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.
57
Função gráfica: barplot
Cria um gráfico de barras
> barplot(Lisboa,names.arg=Ano)
Nota: a função colors() devolve o nome das cores que o R reconhece. Ver também
palette() 58
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
59
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.
60
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)
65
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. 66
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) ...
67
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) 68
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
69
Modelos probabilísticos no R
70
Modelos probabilísticos no R
Distribution R name additional arguments
beta beta shape1, shape2, ncp
binomial binom size, prob
Cauchy cauchy location, scale
chi-squared chisq df, ncp
exponential exp rate
F f df1, df2, ncp
gamma gamma shape, scale
geometric geom prob
hypergeometric hyper m, n, k
log-normal lnorm meanlog, sdlog
logistic logis location, scale
neg. binomial nbinom size, prob
normal norm mean, sd
Poisson pois lambda
Student's t t df, ncp
uniform unif min, max
Weibull weibull shape, scale
Wilcoxon wilcox m, n 71
Modelos probabilísticos no R
72
Distribuição binomial
X ∩B n , p n inteiro positivo e 0 < p < 1
– pode tomar os valores x=0, 1, 2,⋯, n
– com probabilidade P [ X = x]= n p x 1− pn−x
x
Exemplo: Seja X ∩B 4, 0.3
75
Distribuição normal
X ∩N , ∈ℝ , 0
– pode tomar qualquer valor real 2
− ( σ )
1 x−μ
1
– função densidade f ( x)= e 2 , x∈ℝ
– valor médio E[ X ] = μ
√2 πσ
– variância Var[ X ] = σ2
77
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)
79
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
> 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)
82
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
83
Qual a distribuição teórica que se ajusta?
Testes de ajustamento:
– Teste de Shapiro-Wilk (teste de normalidade)
shapiro.test(...)
– Teste de Kolmogorov-Smirnov
ks.test(...)
Exemplo:
> shapiro.test(Pg)
> ks.test(Pmad.PGarcia$Pmad,
+ "pgumbel", loc = 45, scale=16.3) 84
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 (α)
α= P [ Rejeitar H 0 ∣ H 0 verdade]
4º Calcular a estatística do teste
5º 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. 85
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)
Ponto de 1 2 3 4 5 6 7 8 9 10
controlo
Antes da 68 88 101 82 96 74 65 74 52 99
campanha
Um ano após 67 87 90 76 98 69 68 65 59 70
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
89
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 βi
fitted devolve os valores ajustados da variável resposta ( ŷ i )
residuals devolve os resíduos (e i = yi − ŷ i )
confint devolve intervalos de confiança para cada βi
predict 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
90
predição.
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)
91
> summary(pinhal.lm)
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óteses H 0 : β j =0 vs. H 1 : β j ≠0
Pr(>|t|) – p-value associado ao teste anterior
94
Mais algumas informações
O package topmodel faz a implementação deste modelo
hidrológico em R
http://cran.r-project.org/web/packages/topmodel/index.html
96