Minicurso de Estatística com
Dilermando Pacheco e Petrônio Cândido
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
O pacote estatístico R
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
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
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
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!
Características do R
● Atualmente já existem interfaces gráficas com o usuário, tais como o:○ R Commander○ R Studio
Instalando o R
● R Básico○ http://www.r-project.org/
● R Studio○ https://www.rstudio.com/
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
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")
Carregando e explorando dados
Variáveis
● Uma variável armazena um ou mais valores
nome <- valor
Tipos de Dados no R
● Escalar● Vetores● Matrizes● Fatores● Data Frames
Tipos de Dados no R
● Escalar○ Um único dado.○ Número
■ 1, -1, 1.5○ Caractere
■ “texto”○ Lógico
■ TRUE / FALSE
● 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
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)
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)
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)
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;
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
Tipos de Dados no R
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)
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)
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")
Carregar dados
● Existem pacotes para interagir com diversas
outras fontes de dados:■ Excell
■ SPSS
■ Bancos de Dados
● Consulte: (CRAN, 2014)
Estatística DescritivaTendências e Gráficos
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
Estatísticas Descritivas
● Resumo: summary(dados)● Média: mean(dados)● Mediana: median(dados)● Quantis: quantile(dados)● Variância: var(dados)● Desvio Padrão: sd(dados)
Tabelas de Frequênciatabela <- table(dados)
tabela <- table(dados$variavel, dados$variavel)
tabela <- xtabs(dados$variavel ~ dados$variavel)
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)
Gráficos
Função Plotplot(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
)
Parâmetros● Type
○ l = Linha
○ p = Pontos
○ b = Linha e ponto não sobrepostos
○ o = Linha e ponto sobrepostos
○ h = Histograma
○ s = Degraus
Parâmetros
● pch ● lty
Parâmetros● Color
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
Gráficosbarplot(dados)
dotchart(dados)
hist(dados)
lines(dados)
pie(dados)
points(dados)
polygon(dados)
Gráficos 3D
● Scatterplot 3Dlibrary(scatterplot3d)scatterplot3d(x,y,z)
● Plot 3D (Gráfico Interativo)library(rgl)
plot3d(x,y,z)
Estatística InferencialAmostra -> População
Probabilidades
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
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;
Distribuições de Probabilidades
● Distribuição Normal
Distribuições de Probabilidades● d <- dnorm(valor, media, desviopadrao)
○ dnorm(95, 70, 15)
● p <- pnorm(valor, media, desviopadrao)
○ dnorm(95, 70, 15)
● valor <- qnorm(quantis, media, desviopadrao)
○ dnorm(c(0.05, 0.95), 70, 15)
● vetor <- rnorm(n, media, desviopadrao)
○ dnorm(30, 70, 15)
Distribuições de Probabilidades● qqnorm(dados)
○ dnorm(95, 70, 15)
● qqline(valores)
○ dnorm(95, 70, 15)
Outras distribuições● Binomialdbinom(x, tamanho, prob)
pbinom(q, tamanho, prob)
qbinom(p, tamanho, prob)
rbinom(n, tamanho, prob)
● Poissondpois(x, lamda)
ppois(q, lamda)
qpois(p, lamda)
rpois(n, lamda)
Distribuições Empíricas
w <- density(dados)
plot(w)
Modelos e FórmulasRelações entre variáveis
● Um modelo é uma fórmula que expressa algum relacionamento entre variáveis;
● Variáveis Dependentes
● Variáveis Independentes
Modelo
● dependentes ~ independentes
Y = β0 + β1Xa + β2Xb + … + ϵ● Dependente: Y● Independentes: Xa, Xb, …● Coeficientes: β0, β1, β2, ...
Y ~ Xa + Xb
Fórmulas
RegressãoAjustando os coeficientes...
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?
Análise de Variáncia - ANOVA
● Data Frame○ Variável de Bloco : Factor○ Variável quantitativa mensurada
modelo <- aov(Variavel ~ Bloco)
Análise de Variáncia - ANOVAA <- 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)
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)
Exemplox <- 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)
Exemplox <- 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)
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))
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)
Teste e simulação dos modelosx <- 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_linear <- lm(y ~ x)
teste_linear <- predict(modelo_linear, list(x))
modelo_naolinear1 <- nls(y ~ cos(x)*a + b, start=c(a=0, b=0))
teste_naolinear1 <- predict(modelo_naolinear1, list(x))
modelo_naolinear2 <- nls(y ~ exp(x)*a + cos(x)*b + c, start=c(a=0, b=0, c=0))
teste_naolinear2 <- predict(modelo_naolinear2, list(x))
Ajuste de Modelosplot(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")
Intervalos de Confiança
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%)
Intervalo de Confiançadados <- 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) )
Testes EstatísticosTestes de Hipóteses ou Testes de Significância
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 = μbHa: μa ≠ μb
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ãoRejeitar H0 Erro Tipo I Sem Erro
Aceitar H0 Sem Erro Erro Tipo II
Teste Tt.test(vetor1, vetor2, conf = .95)
Welch Two Sample t-test
data: vetor1 and vetor2t = 3.4843, df = 14.894, p-value = 0.00336alternative hypothesis: true difference in means is not equal to 095 percent confidence interval: 1.861895 7.738105sample estimates:mean of x mean of y 113.4 108.6
H0: μa ≠ μbHa: μa = μb
Teste Tmacho <- c(120, 107, 110, 116, 114, 111, 113, 117, 114, 112)
femea <- c(110,111,107, 108, 110, 105, 107, 106, 111, 111)
t.test(macho, femea)
Fonte: (BATISTA ; PRADO, 2014)
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 esperadasHa: As freq. observadas são diferentes das esperadas
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: xX-squared = 15.68, df = 2, p-value = 0.0003937
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
Teste χ2
amostra <- c(14, 25, 81)
probabilidades <- c(1/4, 1/8, 5/8)
chisq.test(amostra, p = probabilidades)
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)
Teste de Correlação cor.test(variável, variável)
Pearson's product-moment correlation
data: anos and diversidadet = 4.3848, df = 8, p-value = 0.002334alternative hypothesis: true correlation is not equal to 095 percent confidence interval: 0.4474675 0.9613274sample estimates: cor 0.840339
H0: Não existe correlação (ρ = 0)
Ha: Existe correlação (ρ ≠ 0)
Teste de Correlaçãoanos <- 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)
Referências
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.