Distribuição Uniforme com R
Distribuição Uniforme
Prof. Gallileu Genesis
1. Distribuição Uniforme
A Distribuição Uniforme é uma das distribuições de probabilidade mais simples e fundamentais. Ela descreve um cenário em que todos os eventos possíveis têm a mesma probabilidade de ocorrer. Isso significa que cada valor dentro de um intervalo específico é igualmente provável de ser observado.
Pode ser usada para modelar tanto variáveis discreta quanto variáveis continuas e é frequentemente representada graficamente como um retângulo, onde a altura do retângulo representa a probabilidade e a largura representa a amplitude do intervalo.
1.1 Distribuição Uniforme Discreta
A distribuição uniforme discreta é usada quando temos um número finito de valores possíveis, e cada um deles tem a mesma probabilidade. Matematicamente, para uma distribuição uniforme discreta com valores no conjunto {x1,x2,...,xn}, a função de probabilidade é definida da seguinte maneira:
P(X=xi)=1n , para i=1,2,...,n
Onde:
- P(X=xi) é a probabilidade de a variável aleatória X assumir o valor xi.
- n é o número total de valores possíveis, ou seja, o tamanho do conjunto de valores {x1,x2,...,xn}.
A média (valor esperado) de uma distribuição uniforme discreta é calculada da seguinte forma:
- Média: μ=(x1+x2+...+xn)n=1n∑ni=1xi
A variância de uma distribuição uniforme discreta é calculada como:
- Variância: σ2=(x1−μ)2+(x2−μ)2+...+(xn−μ)2n=1n∑ni=1(xi−μ)2
Um exemplo clássico é o lançamento de um dado justo de seis faces. Cada número de 1 a 6 tem uma probabilidade de 1/6 de ser lançado (Figura da esquerda, abaixo).
1.2 Distribuição Uniforme contínua
A distribuição uniforme contínua é usada quando os valores possíveis formam um intervalo contínuo. Matematicamente, uma distribuição uniforme contínua em um intervalo [a,b] é definida pela sua função de densidade de probabilidade f(x) da seguinte forma:
f(x)={1b−a,se a≤x≤b0,caso contrárioOnde:
- a e b são os limites inferior e superior do intervalo, respectivamente.
- x é uma variável aleatória dentro desse intervalo.
A integral da função de densidade de probabilidade ao longo do intervalo [a,b] é igual a 1, o que significa que a área sob a curva da distribuição uniforme é sempre igual a 1. Isso reflete o fato de que a probabilidade total de todos os eventos possíveis deve ser igual a 1.
Além disso, a média (valor esperado) e a variância de uma distribuição uniforme no intervalo [a,b] podem ser calculadas da seguinte forma:
- Média: μ=a+b2
- Variância: σ2=(b−a)212
Um exemplo é a escolha de um número aleatório entre 0 e 1. Nesse caso, qualquer número dentro desse intervalo tem a mesma probabilidade de ser escolhido, e a probabilidade é distribuída uniformemente ao longo desse intervalo (Figura da direita, abaixo).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Dados para a distribuição uniforme discreta
valores_discretos <- c(1, 2, 3, 4, 5, 6)
probabilidade_discreta <- rep(1/6, 6) # Probabilidade de 1/6 igual para cada valor
# Dados para a distribuição uniforme contínua
a <- 0 # inicio do intervalo
b <- 1 # fim intervalo
intervalo_contínuo <- seq(from = a, to = a, length.out = 100)
probabilidade_contínua <- rep(0.5, 100) # Probabilidade de 0.5 constante dentro do intervalo
# Define o tamanho das figuras
options(repr.plot.width = 10, repr.plot.height = 4)
# Criação dos gráficos usando plot() do pacote base do R
par(mfrow=c(1, 2)) # Configuração para exibir os gráficos lado a lado
# Gráfico da distribuição uniforme discreta
barplot(probabilidade_discreta, names.arg = valores_discretos, main = "Distribuição Uniforme Discreta", xlab = "Valores", ylab = "Probabilidade")
# Gráfico da distribuição uniforme contínua
plot(intervalo_contínuo, probabilidade_contínua, type = "n", main = "Distribuição Uniforme Contínua", xlab = "Intervalo", ylab = "Probabilidade")
polygon(c(intervalo_contínuo, rev(intervalo_contínuo)), c(probabilidade_contínua, rep(0, length(probabilidade_contínua))), col = "gray")
lines(intervalo_contínuo, probabilidade_contínua, type = "l")
# Configuração para salvar em uma única figura
png("Figures/distribuicoes.png", width = 800, height = 400)
# Reset das configurações de layout
par(mfrow=c(1, 1))
Exemplo: Tempo de espera em um semáforo
Vamos considerar um exemplo onde estamos interessados em modelar o tempo de espera aleatório que um motorista pode ter em um semáforo de trânsito. Suponha que o tempo de espera em segundos está uniformemente distribuído entre 20 e 60 segundos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Gerando 10 valores aleatórios seguindo a distribuição uniforme contínua
a <- 20
b <- 60
num_values <- 10
random_values <- runif(num_values, min = a, max = b)
# Criando um histograma
histogram <- ggplot(data.frame(x = random_values), aes(x)) +
geom_histogram(binwidth = 5, fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Histograma - Tempos de Espera em um Semáforo",
x = "Tempo de Espera (segundos)",
y = "Frequência")
# Exibindo o histograma
print(histogram)
# Calculando a média e a variância
mean_value <- mean(random_values)
variance <- var(random_values)
# Exibindo os resultados
cat("Valores aleatórios:", random_values, "\n")
cat("Média:", mean_value, "\n")
cat("Variância:", variance, "\n")
1
2
3
Valores aleatórios: 53.19356 50.58862 45.51637 36.22017 51.51233 55.44144 56.8377 48.71494 38.6505 36.34629
Média: 47.30219
Variância: 60.36523
O que acontece se gerarmos não 10, mas 1000 valores aleatório? Sim, notem que a média do tempo se descola mais para o centro do intervalo de distribuição e a distribuição começa a tomar uma forma mais uniforme, como era esperado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Gerando 1000 valores aleatórios seguindo a distribuição uniforme contínua
a <- 20
b <- 60
num_values <- 1000
random_values <- runif(num_values, min = a, max = b)
# Criando um histograma
histogram <- ggplot(data.frame(x = random_values), aes(x)) +
geom_histogram(binwidth = 5, fill = "blue", color = "black", alpha = 0.7) +
labs(title = "Histograma - Tempos de Espera em um Semáforo",
x = "Tempo de Espera (segundos)",
y = "Frequência")
# Exibindo o histograma
print(histogram)
# Calculando a média e a variância
mean_value <- mean(random_values)
variance <- var(random_values)
# Exibindo os resultados
cat("Média:", mean_value, "\n")
cat("Variância:", variance, "\n")
1
2
Média: 40.24155
Variância: 136.0465
Todo o código está disponível no Gihub
Comments powered by Disqus.