O documento apresenta a agenda de um minicurso sobre estatística utilizando o software R. O curso abordará introdução ao R, carregamento e exploração de dados, estatística descritiva, regressão, testes estatísticos e gráficos.
2. Agenda
● O Pacote R
● Carregando Dados
● Estatística Descritiva
○ Medidas de tendência central e dispersão
○ Gráficos
● Estatística Inferencial
○ Regressão
○ Testes Estatísticos
4. O que é o R
● Um programa de estatística para uso geral;
○ Um conjunto de bibliotecas/plugins
○ Uma linguagem de programação
● FOSS
○ Free open source software
○ Programa gratuito de código aberto
5. Porquê usar o R?
● Primeiro: ELE É GRATUITO!
○ Ao contrário do SPSS, SAS…
● Ele é não é voltado para nenhuma área
específica
○ Ao contrário do SPSS...
● Muita documentação, em todas as
linguagens
6. Porquê usar o R?
● No R é possível programar!
○ Grande base de plugins para todo o tipo de tarefa
de análise de dados
● Interoperabilidade
○ Abre diversos tipos de arquivos
○ Comunica-se com outros sistemas
7. Características do R?
● O R originalmente usa uma interface de linha de
comando que é pouco amigável para usuários que não
vem das exatas/tecnológicas e engenharias…
● Para tarefas mais complexas algum conhecimento em
programação é bastante recomendado!
8. Características do R
● Atualmente já existem interfaces gráficas com
o usuário, tais como o:
○ R Commander
○ R Studio
9. Instalando o R
● R Básico
○ http://www.r-project.org/
● R Studio
○ https://www.rstudio.com/
10. Pacotes
● Pacotes são extensões ao programa básico
escritos pela comunidade de usuários;
● Com os pacotes podemos agregar novas
funcionalidades ao R
11. Pacotes
● Baixa o pacote da internet e instalar no computador
install.packages("pacote")
● Carregar o pacote na memória (antes de começar a
utilizá-lo)
library("mypkg")
13. Variáveis
● Uma variável armazena um ou mais valores
nome <- valor
14. Tipos de Dados no R
● Escalar
● Vetores
● Matrizes
● Fatores
● Data Frames
15. Tipos de Dados no R
● Escalar
○ Um único dado.
○ Número
■ 1, -1, 1.5
○ Caractere
■ “texto”
○ Lógico
■ TRUE / FALSE
16. Tipos de Dados no R
● Vetores
○ Conjunto de dados de um mesmo tipo, com uma
única dimensão [linha OU coluna]
v1 <- c(1,2,3,5) # vetor numérico
v2 <- c("A","BB","CCC") # vetor de caracteres
v3 <- c(TRUE,TRUE,FALSE) #vetor de valores lógicos
17. Tipos de Dados no R
● Intervalos
○ seq(from = inicio, to = fim, by = passo)
■ v1 <- seq(from = 1, to = 50, by = 10)
○ início : fim
■ v1 <- c(1:20)
18. Tipos de Dados no R
● Fatores
○ Associa um índice a cada valor nominal;
○ Variáveis categóricas/nominais sem relação de
ordem
dados <- c(“M”,”F”,”F”,”M”,”F”,”M”,”M”,”F”)
sexos <- factor(dados)
19. Tipos de Dados no R
● Matrizes
○ Um conjunto de dados de um único tipo, com duas
dimensões
○ Tabela do um mesmo tipo de dados, com várias
linhas e colunas
m<-matrix(dados, nrow=linhas,ncol=colunas)
20. Tipos de Dados no R
● Data Frames
○ Tabela com várias linhas e colunas, em que cada
coluna pode ser de um tipo de dados diferente:
■ Linhas : Observações
■ Colunas : Variáveis
○ As colunas em um data frame podem ter nomes;
21. Tipos de Dados no R
● Data Frames
○ idades <- c(20, 30, 25)
○ sexos <- c(“M”,”F”,”F”)
○ pesos <- c(70.5, 64.3, 60.1)
○ df <- data.frame(idades, sexos, pesos)
○ df$idades
22. Funções Úteis
● Gera uma matriz a partir da combinação em colunas de dois vetores
dados <- cbind(vetor, vetor, …)
● Gera uma matriz a partir da combinação em linhas de dois vetores
dados <- rbind(vetor, vetor, …)
● Edita os dados de um objeto (vetor, matriz, data frame etc…)
dados <- edit(dados)
23. Funções Úteis
● O somatório de todos os itens de um vetor
soma <- sum(vetor)
● A quantidade de itens de um vetor
n <- length(vetor)
● Edita os dados de um objeto (vetor, matriz, data frame etc…)
dados <- edit(dados)
24. Carregar dados
● Ler um arquivo de dados simples
mydata <- read.table("c:/mydata.csv", header=TRUE,
sep=",")
● Gravar um arquivo de dados simples
write.table(mydata, "c:/mydata.txt", sep="t")
25. Carregar dados
● Existem pacotes para interagir com diversas
outras fontes de dados:
■ Excell
■ SPSS
■ Bancos de Dados
● Consulte: (CRAN, 2014)
27. Funções úteis
Função Utilidade
abs(x) Valor absoluto
sqrt(x) Raiz quadrada
ceiling(x), floor(x) Arredondamento para cima e para baixo
trunc(x) Retorna a parte inteira
cos(x), sen(x), tan(x) Funções trigonométricas
log(x), log10(x), exp(x) Logaritmos e exponenciação
30. Correlação e Covariância
● Coeficiente de correlação entre dois vetores
cor(vetor,vetor)
● Matriz de correlação em matrizes e data
frames
cor(dados)
32. Função Plot
plot(dados,
main = ”titulo”, sub=”sub título”,
type =”tipo”, col = vetordecores,
xlab = “rótulo do eixo x”, ylab = “rótulo do eixo y”
pch = simbolo, lty = tipo de linha, ltw = expessura da linha
)
33. Parâmetros
● Type
○ l = Linha
○ p = Pontos
○ b = Linha e ponto não sobrepostos
○ o = Linha e ponto sobrepostos
○ h = Histograma
○ s = Degraus
36. Outras funções úteis
● legend(“orientação”, valores, fill=cores)
○ Acrescenta uma legenda no gráfico
● text(x, y, “texto”)
○ Acrescenta uma anotação no gráfico
● mtext(“texto”, side=n)
○ Acrescenta uma anotação na bordas do gráficos
41. Distribuições de Probabilidades
● ddist(valor, …)
○ Retorna a densidade de probabilidade (Probabilidade de um
valor dentro da distribuição)
● pdist(valor, …)
○ Retorna a densidade acumulada de probabilidade
42. Distribuições de Probabilidades
● qdist(quantis,...)
○ Retorna os valores, dentro da distribuição, para as
probabilidades informadas;
○ Pode ser um escalar ou um vetor com os quantis;
● rdist(n,...)
○ Gera um vetor de n números aleatórios dentro da distribuição;
52. Análise de Variáncia - ANOVA
● Dados segmentados em blocos;
● Há diferenças significativas nas médias e
variâncias nas amostras colhidas entre os
blocos?
53. Análise de Variáncia - ANOVA
● Data Frame
○ Variável de Bloco : Factor
○ Variável quantitativa mensurada
modelo <- aov(Variavel ~ Bloco)
54. Análise de Variáncia - ANOVA
A <- c(78, 88, 87, 88, 83, 82, 81, 80, 80, 89)
B <- c(78, 78, 83, 81, 78, 81, 81, 82, 76, 76)
C <- c(79, 73, 79, 75, 77, 78, 80, 78, 83, 84)
D <- c(77, 69, 75, 70, 74, 83, 80, 75, 76, 75)
dados <- data.frame(Localidade=gl(4,10), Massa=c(A,B,C,D))
dados$Localidade <- as.factor(dados$Localidade)
# Análise de variância
modelo <- aov(Massa ~ Localidade)
summary(modelo)
# o teste de Tukey HSD para mostrar os pares de grupos
TukeyHSD(modelo)
plot(TukeyHSD(modelo))
Fonte: (BASLEY, 2004, p. 32)
55. Regressão Linear Simples
● Ajusta os coeficientes das variáveis
independentes de uma fórmula a partir de
um conjunto de dados
modelo <- lm(formula = y ~ x, data = dados)
56. Exemplo
x <- c(1,2,3,4,5,6,7,8)
y <- c(9.6, 18.0, 18.7,26.0,4.6,18.3,19.7,37.8)
modelo <- lm(y ~ x)
plot(x, y)
abline(modelo)
57. Exemplo
x <- c(1,2,3,4,5,6,7,8)
y <- c(9,3,2,7,3,3,1,1)
z <- c(9.6, 18.0, 18.7,26.0,4.6,18.3,19.7,37.8)
modelo <- lm(z ~ x + y)
library(scatterplot3d)
grafico <- scatterplot3d(x, y, z)
grafico$plane3d(modelo)
58. Regressão Não Linear
● Ajusta os coeficientes das variáveis independentes de
uma fórmula a partir de um conjunto de dados
● Os coeficientes e seus valores iniciais devem ser
indicados
modelo <- nls(formula = z ~ a^x + b*y + c,
data = dados, start=c(a=0, b=0, c=0))
59. Teste e simulação dos modelos
● Gera predições para a variável dependente
a partir de um conjunto de dados para as
variáveis independente utilizando o modelo.
dados <- predict(modelo, dadossimulacao)
modelo <- lm(y ~ x)
predicao <- predict(modelo, x)
61. Ajuste de Modelos
plot(x, y, main="Modelos de Regressão",
sub="Ajuste de modelos lineares e não
lineares")
legend("topleft",c("a.x+b","a.cos(x)
+b","a.e^x + b.cos(x) + c"), fill=c
("black","blue","red"))
lines(teste_linear, col="black")
lines(teste_naolinear1, col="blue")
lines(teste_naolinear2, col="red")
63. Intervalo de Confiança
● Intervalo de confiança para a média populacional (μ)
quando a variância populacional (σ2) é desconhecida:
α = Nível de confiança (99% ou 95%)
64. Intervalo de Confiança
dados <- c()
a <- 0.95
n <- length(dados)
z <- qnorm( (1 + a) / 2 )
s <- sqrt( var(dados) )
x <- mean(dados)
ic <- c( x - z*s/sqrt(n) , x + z*s/sqrt(n) )
66. Teste T
● Teste de hipótese para médias
● Valida se a diferença entre as médias é significativa ou se
pode ser gerada pelo acaso;
● A probabilidade da diferença ser gerada pelo acaso
H0: μa = μb
Ha: μa ≠ μb
67. Teste T
● Erro Tipo I
○ Rejeitar H0 quando H0 é verdadeira
● Erro Tipo II
○ Aceitar H0 quando H0 é falsa
Situação
H0 Verdadeira H0 Falsa
Decisão
Rejeitar H0 Erro Tipo I Sem Erro
Aceitar H0 Sem Erro Erro Tipo II
68. Teste T
t.test(vetor1, vetor2, conf = .95)
Welch Two Sample t-test
data: vetor1 and vetor2
t = 3.4843, df = 14.894, p-value = 0.00336
alternative hypothesis: true difference in means is not
equal to 0
95 percent confidence interval:
1.861895 7.738105
sample estimates:
mean of x mean of y
113.4 108.6
H0: μa ≠ μb
Ha: μa = μb
70. Teste χ2
● Frequências observadas x Frequências Observadas
● Testa se duas variáveis são independentes ou associadas, e se o grau de
associação é significativo;
● É utilizado para validar se uma variável adere à uma determinada
distribuição:
H0: As freq. observadas não são diferentes das esperadas
Ha: As freq. observadas são diferentes das esperadas
71. Teste χ2
chisq.test(dados, p = distribuição)
H0: “dados” é aderente à
distribuição
Ha: “dados” não é adere à
distribuição
Chi-squared test for given probabilities
data: x
X-squared = 15.68, df = 2, p-value =
0.0003937
72. Teste χ2
● Se χ2 calculado >= χ2 tabelado: Rejeita-se H0.
● Se χ2 calculado < χ2 tabelado: Aceita-se H0.
● Observações:
○ As amostras devem ser independentes;
○ Os itens de cada amostra devem ser selecionados aleatoriamente;
○ As observações devem ser frequências ou contagens.
● O número de graus de liberdade, nesse caso é assim calculado:
○ G.L. = número de classes - 1
73. Teste χ2
amostra <- c(14, 25, 81)
probabilidades <- c(1/4, 1/8, 5/8)
chisq.test(amostra, p = probabilidades)
74. Teste de Correlação
● Testa se há correlação significativa (não
casual) entre duas variáveis:
H0: Não existe correlação (ρ = 0)
Ha: Existe correlação (ρ ≠ 0)
75. Teste de Correlação
cor.test(variável, variável)
Pearson's product-moment correlation
data: anos and diversidade
t = 4.3848, df = 8, p-value = 0.002334
alternative hypothesis: true correlation
is not equal to 0
95 percent confidence interval:
0.4474675 0.9613274
sample estimates:
cor
0.840339
H0: Não existe correlação (ρ = 0)
Ha: Existe correlação (ρ ≠ 0)
76. Teste de Correlação
anos <- c(0, 1, 3, 5, 9, 12, 13, 15, 21, 25)
diversidade <- c(0, 0.19, 0.15, 1.49, 1.10, 1.12, 1.61, 1.42,
1.48, 1.92)
cor.test(anos, diversidade)
Fonte: (BASLEY, 2004, p. 45)
78. CRAN. The Comprehensive R Archive Network. Disponível em: http://cran.r-project.
org/. Acesso em: 01/03/2014.
BASLEY, Colin R. Bioestatística Usando o R: Apostila de exemplos para o
biólogo. Bragança: UFPA, 2004. Disponível em :http://cran.r-project.
org/doc/contrib/Beasley-BioestatisticaUsandoR.pdf. Acesso em: 10/03/2014.
BATISTA, João L. F.; PRADO, Paulo I. K. Introdução ao R: Apostila on-line.
Disponível em: http://ecologia.ib.usp.br/bie5782/doku.php?id=bie5782:
03_apostila:start. Acesso em: 09/03/2014.
WILD, Christopher J.; SEBER, George AF. Encontros com o acaso: um
primeiro curso de análise de dados e inferência. Rio de Janeiro: LTC, 2004.