O R inclui algumas operações com as distribuições de probabilidade. No caso, existe 4 operações básica indicada pela seguinte letras:
d calcula a densidade de probabilidade \(f(x)\) no ponto;
p calcula a função de probabilidade acumulada \(F(x)\) no ponto;
q calcula o quantil correspondente a uma dada probabilidade;
r gera uma amostra aleatória da distribuição.
\[ \mathbb{P}[X=k]=\left(\begin{array}{c}n\\k\end{array}\right) p^k(1-p)^{n-k}. ~~~~~~~~~ k = 0,1,\ldots,n \]
Uma moeda honesta é lançada quatro vezes. Assim, o nosso espaço amostral \((\Omega)\) pode ser apresentado pela tabela a seguir:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
coroa | coroa | coroa | coroa | cara | coroa | coroa | cara | cara | cara | cara | coroa | cara | cara | cara | cara |
coroa | coroa | coroa | cara | coroa | coroa | cara | cara | coroa | coroa | cara | cara | cara | coroa | cara | cara |
coroa | coroa | cara | coroa | coroa | cara | cara | coroa | coroa | cara | coroa | cara | cara | cara | coroa | cara |
coroa | cara | coroa | coroa | coroa | cara | coroa | coroa | cara | coroa | coroa | cara | coroa | cara | cara | cara |
Poderíamos está interessado em responder a seguinte pergunta: Ao lançarmos uma moeda quatro vezes, qual a probabilidade de ocorrer cara, exatamente, duas vezes.
Para responder a este questionamento, precisamos montar a seguinte trabela de frequências:
Quantidade de Caras | Frequência absoluta | Frequência Relativa | Frequência Relativa Acumulada |
---|---|---|---|
zero | 1 | 0,0625 | 0,0625 |
uma | 4 | 0,2500 | 0,3125 |
duas | 6 | 0,3750 | 0,6875 |
três | 4 | 0,2500 | 0,9375 |
quatro | 1 | 0,0625 | 1,0000 |
Total | 16 | 1,0000 |
Nota-se por meio da tabela de frequências que podemos dizer que a probabilidade de ocorrer exatamente duas caras em 4 lançamentos de uma moeda é de 0,375.
Outra conclussão: A probabilidade de ocorrer no máximo três caras em quatro lançamentos de uma moeda é de 0,9375.
moeda <- data.frame('cara'=
rep(c('0',"1","2","3","4"),
c(1, 4, 6, 4, 1)))
require(ggplot2)
## Loading required package: ggplot2
ggplot(moeda, aes(x = cara, y=..count../sum(..count..), fill = cara)) +
geom_bar(width=0.1) +
labs(title = "Lançamento de uma moeda quatro vezes",
x = "Quantidade de caras",
y = "Probabilidade",
fill='QTD caras')
Note que dar bastante trabalho montar uma tabela de frequência. A medida que aumenta a quantidade de lançamentos de uma moeda, o espaço amostral cresce significativamente.
Para resolver este e outros eventuais problemas, foi construída a distribuição de probabilidade Binomial. A qual deve ser utilizada que estamos diante de um experimente em que temos apenas dois resultados possíveis: sucesso e fracasso.
dbinom(x=3, #Calcula a probabilidade de P(X=x)
size=4, #Quantidade total de lançamentos
prob=0.5, #Probabilidade inicial de ocorrer o sucesso
log = FALSE)
## [1] 0.25
pbinom(q=3, #Quantidade de caras
size=4, #Quantidade total de lançamentos
prob=0.5, #Probabilidade inicial de ocorrência (lançar uma moeda uma única vez, qual a probabilidade de ocorrer cara)
lower.tail = TRUE #P[X<= x]
)
## [1] 0.9375
caras <- 0:4
probabilidade <- dbinom(x=caras, # Quantidade de sucessos
size = 4, # Quantidade de lançamentos
prob=0.5) # Probabilidade a priori de sucesso
probabilidade
## [1] 0.0625 0.2500 0.3750 0.2500 0.0625
plot(caras, probabilidade,
type='h', # Desenha uma linha vertical
col='red', # Cor da linha
lwd=3) # Espessura da linha/ponto
Exemplo : Suponha que numa linha de produção a probabilidade de se obter uma peça defeituosa (sucesso) é \(p=0,5\). Toma-se uma amostra de 10 peças para serem inspecionadas. Em que X é o número de peças defeituosa produzidas em único dia.
Qual é a probabilidade de um remessa com 10 peças conter pelo menos quatro peças defeituosa.
Note que, Pelos quatro significa, \(P[X \geq 4]\), isto é equivalente a \(1 - P[X<4]\) ou \(1 - P[X \leq 3]\).
Vamos ao R:
\[P[X \geq 4]\]
pbinom(q=3, #Quantidade de peças defeituosas
size=10, #Quantidade total de peças
prob=0.5, #Probabilidade inicial de peça defeituosa
lower.tail = FALSE #P[X> x]
)
## [1] 0.828125
Considere nascimentos de 4 filhotes de coelhos de uma determinada raça. Nesta raça há um distúrbio genético e a probabilidade de nascer fêmea é 5/8. Sendo X a ocorrência de fêmeas e utilizando a distribuição binomial obter:
femeas <- 0:4
probabilidade <- dbinom(x=femeas, # Quantidade de sucessos
size = 4, # Quantidade de nascimento
prob=5/8) # Probabilidade a priori de sucesso
probabilidade
## [1] 0.01977539 0.13183594 0.32958984 0.36621094 0.15258789
plot(femeas, probabilidade,
type='h', # Desenha uma linha vertical
col='red', # Cor da linha
lwd=3) # Espessura da linha/ponto
pbinom(q=2, # Quantidade de fêmeas
size=4, # Quantidade total de filhores
prob=5/8, # Probabilidade inicial de fêmea
lower.tail = FALSE #P[X> x]
)
## [1] 0.5187988
acidente <- data.frame('acd'= c(9, 6, 9, 11, 10, 10, 6, 10, 9, 4, 8, 10,
10, 7, 9, 11, 4, 6, 11, 8, 5, 3, 5, 9, 6))
table(acidente$acd)
##
## 3 4 5 6 7 8 9 10 11
## 1 2 2 4 1 2 5 5 3
ggplot(acidente, aes(x = as.factor(acd), y=..count../sum(..count..),
fill = as.factor(acd))) +
geom_bar(width=0.1) +
labs(title = "Acidentes por dia",
x = "Quantidade de acidentes",
y = "Frequência",
fill='QTD acidentes')
A questão aqui é que não temos condições de afirmar qual a quantidade máxima de acidentes que podem ocorrer em um único dia.
Olhando para os dados, temos que a média e o desvio padrão da quantidade de acidentes por dia são de:
mean(acidente$acd)
## [1] 7.84
sd(acidente$acd)
## [1] 2.44404
Observando o gráfico parece razoável aformar que: a probabilidade de ocorrer 9 acidentes em um único dia é de 0,20.
Mas, olhando para a amostra, não somos capazes de afirmar qual a probabilidade de ocorrer 12 acidentes em um único dia.
Para responder a este questionamente, temos que fazer o uso de um modelo probabilístico, neste caso, Poisson.
Neste modelo, uma estimativa relacionada ao parâmetro \(\lambda\) deve ser a média amostral. Logo, podemos utilizar \(\lambda=8\).
Questionamento: qual a probabilidade de ocorrer 12 acidentes em um único dia.
dpois(x = 12,
lambda = 8)
## [1] 0.0481268
acid_dia <- 0:20
probs <- dpois(x = acid_dia,
lambda = 8)
probs
## [1] 0.0003354626 0.0026837010 0.0107348041 0.0286261442 0.0572522885
## [6] 0.0916036616 0.1221382155 0.1395865320 0.1395865320 0.1240769173
## [11] 0.0992615338 0.0721902064 0.0481268043 0.0296164949 0.0169237114
## [16] 0.0090259794 0.0045129897 0.0021237599 0.0009438933 0.0003974287
## [21] 0.0001589715
plot(acid_dia, probs,
type='h', # Desenha uma linha vertical
col='red', # Cor da linha
lwd=4) # Espessura da linha/ponto
Exemplo: Uma empresa de telefonia recebe, em média, cinco chamadas por minuto. Supondo que a distribuição de Poisson seja adequada nessa situação, obter:
tel_min <- 0:10
probs <- dpois(x = tel_min,
lambda = 5)
probs
## [1] 0.006737947 0.033689735 0.084224337 0.140373896 0.175467370
## [6] 0.175467370 0.146222808 0.104444863 0.065278039 0.036265577
## [11] 0.018132789
plot(tel_min, probs,
type='h', # Desenha uma linha vertical
col='red', # Cor da linha
lwd=4) # Espessura da linha/ponto
dpois(x = 0, lambda = 5)
## [1] 0.006737947
No caso, para outras distribuição temos que:
# Binomial Negativa dnbinom(n,size, prob)
# Geométrica dgeom(n,prob)
# Hipergeometrica dhyper(nn, m, n, k)
Uma variável aleatória contínua \(X\) tem distribuição Normal se sua função densidade de probabilidade for dada por:
\[f(x)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp\left[-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2\right], \quad x\in(-\infty,\infty).\]
A seguir temos dados de variáveis climatológicas.
Link para download: https://www.dropbox.com/s/zx6311dpfcso2c0/clim_dou.csv?dl=0
clim_dou <- read.csv2("C:/Users/Carol/Dropbox/UFGD/2019.01_Disciplinas/Topicos de Estatistica/4_Aula/clim_dou.csv")
head(clim_dou)
## data Tem_max Tem_min Chuva Ano Meses
## 1 01/01/1980 25.0 11.0 0 1980 1
## 2 02/01/1980 28.2 12.1 0 1980 1
## 3 03/01/1980 30.5 14.8 0 1980 1
## 4 04/01/1980 31.9 18.7 0 1980 1
## 5 05/01/1980 31.8 18.1 0 1980 1
## 6 06/01/1980 30.2 18.2 0 1980 1
Vamos selecionar apenas o mês de janeiro
jan = subset(clim_dou, Meses==1)
ggplot(jan, aes(x = Tem_max, ..density..)) +
geom_histogram(binwidth = 1, # Amplitude da classe
fill = 'dodgerblue',
color = 'black') +
labs(title = "Distribuição da temperatura máxima diária",
x = "Temperatura Máxima (º C)",
y = "Densidade") +
geom_density(alpha = 0.5)+ # Linha de densidade
theme_light()
ggplot(jan, aes(x = Tem_max)) +
geom_histogram(aes(y = ..density..),
binwidth = 1, # Amplitude da classe
fill = 'dodgerblue',
color = 'black') +
labs(title = "Distribuição da temperatura máxima diária",
x = "Temperatura Máxima (º C)",
y = "Densidade") +
geom_density(alpha = 0.5)+ # Linha de densidade
stat_function(fun = dnorm, color='red', size = 2,
args = list(mean = mean(jan$Tem_max),
sd = sd(jan$Tem_max)))+ # Linha de densidade da distribuição Normal
theme_light()
Então, o cálculo de probabilidade se resumo a resolver a integral:
mean(jan$Tem_max)
## [1] 31.7134
sd(jan$Tem_max)
## [1] 2.412448
\[P[X \geq 36] = \int_{36}^{\infty}\frac{1}{\sqrt{2\pi 2,41}}\exp\left[-\frac{1}{2}\left(\frac{x-31,71}{2,41}\right)^2\right]dx \]
Vamos ao R
pnorm(q = 36, # x=36
mean = 31.71, # média
sd = 2.41, # Desvio padrão
lower.tail = FALSE # Calcula P[X > x]
)
## [1] 0.03753119
Assim, a temperatura máxima em um único dia exceder 36 ºC é de 0,04
pnorm(q = 30, # x=30
mean = 31.71, # média
sd = 2.41, # Desvio padrão
lower.tail = TRUE # Calcula P[X ??? x]
)
## [1] 0.2389936
pnorm(q = c(30, 35), # x=30
mean = 31.71, # média
sd = 2.41, # Desvio padrão
lower.tail = TRUE # Calcula P[X ??? x]
)
## [1] 0.2389936 0.9138963
0.9138963 - 0.2389936
## [1] 0.6749027
1.) Construa um gráfico de histograma em que seja possível analisar se a distribuição Normal é adequada para modelar a temperatura mínima.
ggplot(jan, aes(x = Tem_min)) +
geom_histogram(aes(y = ..density..),
binwidth = 1, # Amplitude da classe
fill = 'green',
color = 'gray60') +
labs(title = "Distribuição da temperatura mínima diária",
x = "Temperatura mínima (º C)",
y = "Densidade") +
geom_density(alpha = 0.5)+ # Linha de densidade
stat_function(fun = dnorm, color='red', size = 2,
args = list(mean = mean(jan$Tem_min),
sd = sd(jan$Tem_min)))+ # Linha de densidade da distribuição Normal
theme_light()
mean(jan$Tem_min)
## [1] 21.01679
sd(jan$Tem_min)
## [1] 1.60775
pnorm(q = 20, # x=20
mean = 21.02, # média
sd = 1.61, # Desvio padrão
lower.tail = TRUE # Calcula P[X ??? x]
)
## [1] 0.2631904
pnorm(q = 22, # x=22
mean = 21.02, # média
sd = 1.61, # Desvio padrão
lower.tail = FALSE # Calcula P[X > x]
)
## [1] 0.2713631
A variável aleatória \(X\) tem distribuição Exponencial com parâmetro \(\lambda\),se tiver função densidade de probabilidade dada por:
\[f(x)=\left\{\begin{array}{l}\lambda e^{-\lambda x} \ \hbox{se} \ x\geq 0\\0 \ \hbox{se} \ x \ < \ 0\end{array}\right.\]
Exemplo: O tempo até a falha do ventilador de motores a diesel tem uma distribuição Exponencial com parâmetro \(\lambda = \frac{1}{28700}\) horas. Qual a probabilidade de um destes ventiladores falhar nas primeiras 24000 horas de funcionamento?
x<- 24000
razao<- 1/28700
prob<-pexp(x,razao);prob
## [1] 0.5666619
Ou seja, a probabilidade de um destes ventiladores falhar nas primeiras $ 24000$ horas de funcionamento é de, aproximadamente, 56,7%
qf(0.975,12,10)
## [1] 3.620945
qt(0.9,10)
## [1] 1.372184
qchisq(0.975,12)
## [1] 23.33666
# Exemplo da normal : Qual deve ser o tempo de prova de modo a permitir que 95% dos vestibulandos terminem no prazo estipulado?
qnorm(0.95,120,15)
## [1] 144.6728
n=5
t <- rt(n,10);t
## [1] -0.01347506 -1.15017030 -0.44663557 1.25372468 0.38960113
normalp <- rnorm(10);normalp
## [1] -0.52916230 -2.48241327 1.08597494 -0.33566988 0.09418351
## [6] 0.57853408 -0.56159653 1.64843190 -1.00619723 1.19489573
normal <- rnorm(10,2,3); normal
## [1] 2.3790584 0.4720149 -0.2871017 -3.4771221 5.5861796 -0.2056282
## [7] 0.3092887 -1.5552943 4.9377231 4.4792388
bino<-rbinom(10,10,0.3);bino
## [1] 2 4 2 3 3 2 3 2 4 4
#Uniforme runif(n, min=0, max=1)
#Exponencial rexp(n, rate=1)
#T- Student rt(n, df) 'Student' (t)
#F rf(n, df1, df2)
#Quiquadrado rchisq(n, df)
#Gama rgamma(n, shape, scale=1)
#Beta rbeta(n, shape1, shape2) beta
#Log- Normal rlnorm(n, meanlog=0, sdlog=1) lognormal
#Cauchy rcauchy(n, location=0, scale=1) Cauchy