ESTATÍSTICA COMPUTACIONAL I

PRÁTICA 1: DISTRIBUIÇÕES DE PROBABILIDADE

Prof: Guilherme Augusto Veloso ()

\[\\[0.05in]\]

1 PACOTES NECESSÁRIOS

Para esta primeira aula prática de Estatística Computacional I, precisaremos dos seguintes pacotes:

require(ggplot2) # Abordagem gráfica
require(patchwork) # Ajuda no manejo de múltiplos gráficos

2 INTRODUÇÃO

A estatística está presente em quase todas as áreas do conhecimento, desde ciências da saúde até inteligência artificial. Um dos pilares da estatística é a teoria das distribuições de probabilidade, que descreve como os dados se comportam e nos permite fazer previsões e inferências. Mas por que estudá-las computacionalmente?

  • Exploração visual e interativa: Nas disciplinas teóricas, estudar as distribuições envolve apenas o uso de fórmulas e tabelas de valores críticos. Aqui, poderemos visualizar distribuições, simular dados e compreender comportamentos complexos por meio da programação.

  • Simulação de fenômenos reais: Para entender a variabilidade no tempo de espera de um ônibus, podemos usar a distribuição exponencial. Para modelar notas de provas de uma turma, podemos usar a distribuição Normal. Para simular um sorteio de loteria, podemos usar a distribuição Uniforme. Para prever o número de chamadas em um call center, podemos usar a distribuição Poisson.

  • Inferência Estatística e Modelagem: A maioria dos testes estatísticos assume que os dados seguem uma determinada distribuição. Ao simular diferentes distribuições e verificar suas propriedades, podemos entender quando certos métodos são válidos ou não.

  • Tomada de Decisão Baseada em Probabilidade: Em aplicações reais, como seguros, análise de risco e machine learning, entender distribuições permite construir modelos mais robustos e tomar melhores decisões.

  • O que faremos neste estudo computacional?: Vamos gerar dados de distribuições conhecidas e explorar suas características estatísticas. Além disso, vamos comparar distribuições diferentes e entender suas aplicações.

Essa abordagem vai permitir que vocês vejam a estatística além das fórmulas, transformando conceitos abstratos em algo visual e intuitivo. Para começar, o R oferece quatro funções principais para manipular distribuições de probabilidade: d"distribuição", r"distribuição", p"distribuição" e q"distribuição". Cada uma delas tem um primeiro argumento específico (veremos nas próximas seções). Já os demais argumentos são os parâmetros de cada distribuição analisada. Nesta aula, trabalharemos com as seguintes distribuições:

Distribuição d p q r
Poisson dpois ppois qpois rpois
Binomial dbinom pbinom qbinom rbinom
Exponencial dexp pexp qexp rexp
Normal dnorm pnorm qnorm rnorm
Gama dgamma pgamma qgamma rgamma

2.1 FUNÇÃO d: DENSIDADE OU PROBABILIDADE

Para distribuições contínuas, essa função retorna o valor da função densidade de probabilidade e, para distribuições discretas, a função retorna a probabilidade exata de um determinado valor. O primeiro argumento dessa função, x, é o valor o qual deseja-se obter a densidade (variável contínua) ou probabilidade (variável discreta).

2.2 FUNÇÃO p: PROBABILIDADE ACUMULADA

Essa função retorna, para uma variável aleatória X, a probabilidade acumulada \(P(X\leq x)\), no ponto x. Para variáveis contínuas, por exemplo, equivale à área abaixo da curva da densidade até o ponto x. O primeiro argumento dessa função, x, é o valor o qual deseja-se obter a probabilidade acumulada até ele. Para obter a probabilidade \(P(X > x)\), utilize o argumento lower.tail=F.

2.3 FUNÇÃO q: QUANTIS

A função q retorna o quantil, ou seja, o valor correspondente a uma determinada probabilidade p acumulada da distribuição. Isto é, dado uma variável aleatória X e um valor de probabilidade p, a função q encontra o valor x tal que \(P(X\leq x)\) = p. Basicamente, a função q é a inversa da função p. O primeiro argumento dessa função, p, é a probabilidade acumulada a qual deseja-se obter o quantil. Para encontrar o valor x tal que \(P(X > x)\) = p, utilize o argumento lower.tail=F.

2.4 FUNÇÃO r: GERAÇÃO DE AMOSTRAS ALEATÓRIAS

Permite a simulação de dados de distribuições conhecidas. O seu primeiro argumento, n, é o tamanho da amostra que será gerada.

3 DISTRIBUIÇÕES DE PROBABILIDADE DISCRETAS

Esta seção é dedicada ao estudo computacional de algumas distribuições discretas (Poisson e binomial).

3.1 DISTRIBUIÇÃO POISSON

A distribuição Poisson é uma distribuição de probabilidade discreta que descreve o número de eventos que ocorrem em um intervalo fixo de tempo ou espaço, assumindo que esses eventos ocorrem com uma taxa constante e independentemente uns dos outros. Alguns exemplos clássicos de aplicação incluem:

  • Número de chamadas recebidas por um call center por minuto;

  • Número de defeitos em um metro quadrado de tecido;

  • Número de acidentes de trânsito em um cruzamento por dia;

  • Número de mutações genéticas em um trecho específico de DNA.

A função de probabilidade de uma variável aleatória X com distribuição Poisson é dada por:

\[P(X = x) = \frac{\lambda^x e^{-\lambda}}{x!}, \quad x = 0, 1, 2, \dots\]

em que \(\lambda\) é o parâmetro da distribuição e representa a intensidade ou taxa de ocorrência. Por fim, lembre-se que os valores da média e variância associados a essa distribuição são:

\[E(X)=\lambda\] \[Var(X)=\lambda\]

A equidispersão é uma característica fundamental da distribuição Poisson e significa que a variância é igual à média. Isso implica que a dispersão dos dados aumenta proporcionalmente ao valor médio de eventos.

Para os estudos computacionais, suponha o seguinte exemplo: Uma central de atendimento recebe chamadas de clientes durante o dia. O número de chamadas por minuto pode variar, mas em média, a central recebe um número constante de chamadas por minuto. Esse tipo de fenômeno, onde os eventos (no caso, chamadas) ocorrem aleatoriamente, mas a uma taxa constante, pode ser modelado por uma distribuição Poisson. Vamos considerar, inicialmente, que o parâmetro \(\lambda\) seja igual a 5. Dessa forma, tem-se uma média de 5 chamadas por minuto. Podemos usar as funções d, p e q para calcular quantidades de interesse sobre esta distribuição. Cada uma dessas funções têm o argumento lambda para a distribuição Poisson.

lambdar=5

# A probabilidade de receber exatamente 10 chamadas em um minuto:
dpois(x=10,lambda=lambdar)
## [1] 0.01813279
# A probabilidade de receber 3 ou menos chamadas por minuto:
ppois(q=3,lambda=lambdar)
## [1] 0.2650259
# A probabilidade de receber mais de 8 chamadas por minuto:
1-ppois(q=8,lambda=lambdar)
## [1] 0.06809363
# A probabilidade de receber mais de 8 chamadas por minuto:
ppois(q=8,lambda=lambdar,lower.tail=F)
## [1] 0.06809363
# O percentil 80 do número de chamadas por minuto:
qpois(p=0.8,lambda=lambdar)
## [1] 7

EXERCÍCIO: Resolva os seguintes itens com as funções aprendidas.

  1. A probabilidade do número de chamadas recebidas ser maior que 6 e menor ou igual a 12.

  2. Qual é o número de chamadas recebidas x tal que 25% dos valores da variável são maiores que ele.

Agora, vamos gerar uma amostra de tamanho \(n=100\) desta distribuição com a função rpois e visualizá-la graficamente:

# tamanho da amostra  
n_amostra=100

# lambda verdadeiro
lambdar = 5

# media verdadeira
media = lambdar

# gerando os dados
set.seed(2025) # Fixar a semente para gerarmos juntos as mesmas amostras
dados <- rpois(n=n_amostra, lambda=lambdar)

# Criar data frame
df <- data.frame(valores = dados)
  
# Criar data frame das probabilidades teóricas
valores = min(dados):max(dados)
df_teorico <- data.frame(
    valores = valores,
    p_x = dpois(valores, lambda=lambdar)
  )
  
# Criar o gráfico
ggplot(df, aes(x = valores)) +
  
    # histograma
    geom_histogram(aes(y = ..count../sum(..count..)), binwidth = 1, 
                   fill = "lightblue", color = "black") +
  
    # ponto e segmento
    geom_point(data = df_teorico, aes(x = valores, y = p_x), 
               color = "red", size = 2) +
    geom_segment(data = df_teorico, aes(x = valores, xend = valores, 
                                        y = 0, yend = p_x),color = "red") +
  
    # acrescentar a média verdadeira em uma linha vertical
    geom_vline(xintercept = media, linetype = "dashed", color="blue",size=1)+
  
    labs(title = "Poisson(5)",
         x = "Valores", y = "Probabilidade") +
    theme_minimal() 

Para finalizar, vamos investigar o efeito de diferentes valores de \(\lambda\) para esta situação problema:

# Função para gerar o gráfico
gerar_grafico <- function(lambdar) {
  # Tamanho da amostra 
  n_amostra=500
  
  # Gerar amostra da distribuição Poisson
  set.seed(2025) # Fixar a semente para gerarmos juntos as mesmas amostras
  dados <- rpois(n_amostra, lambda=lambdar)
  
  # Criar data frame
  df <- data.frame(valores = dados)
  
  # Criar data frame das probabilidades teóricas
  valores = min(dados):max(dados)
  df_teorico <- data.frame(
    valores = valores,
    p_x = dpois(valores, lambda=lambdar)
  )
  
  # Calcular a média da distribuição Poisson
  media <- lambdar  
  
  # Criar o gráfico
  ggplot(df, aes(x = valores)) +
    # histograma
    geom_histogram(aes(y = ..count../sum(..count..)), binwidth = 1, 
                   fill = "lightblue", color = "black") +
  
    # ponto e segmento
    geom_point(data = df_teorico, aes(x = valores, y = p_x), 
               color = "red", size = 2) +
    geom_segment(data = df_teorico, aes(x = valores, xend = valores, 
                                        y = 0, yend = p_x),color = "red") +
  
    # acrescentar a média verdadeira em uma linha vertical
    geom_vline(xintercept = media, linetype = "dashed",color="blue",size=1)+
  
    labs(title = paste("Poisson(", lambdar, ")", sep = ""),
         x = "Valores", y = "Probabilidade") +
    theme_minimal()  +
    scale_x_continuous(limits = c(0, 30))  
}

# Usar lapply para gerar os gráficos para diferentes valores de lambda
lambdar <- c(5, 10, 15)
graficos <- lapply(lambdar, gerar_grafico)

# Combinar os gráficos com patchwork
graficos[[1]] + graficos[[2]] + graficos[[3]] + plot_layout(ncol = 1)

Quanto maior o valor de \(\lambda\) na distribuição Poisson:

  • A média e a variância aumentam: Como a média e a variância de uma distribuição Poisson são iguais a \(\lambda\), aumentar \(\lambda\) resulta em uma distribuição com maior média e maior variabilidade.

  • A distribuição fica mais simétrica: Para valores pequenos de \(\lambda\), a distribuição é assimétrica, com um pico mais próximo de 0 e caudas assimétricas à direita. À medida que \(\lambda\) aumenta, a distribuição torna-se mais simétrica.

  • O pico da distribuição se desloca para valores maiores: O valor mais provável (a moda) se aproxima de \(\lambda\), então, à medida que \(\lambda\) aumenta, o pico da distribuição se desloca para a direita. Isso implica que, à medida que \(\lambda\) cresce, o número de eventos mais provável se desloca para valores mais altos.

  • O intervalo de valores possíveis se expande: Para valores grandes de \(\lambda\), a distribuição Poisson abrange um intervalo maior de valores possíveis, com a maior parte da probabilidade concentrada em torno de \(\lambda\), mas com mais probabilidade de ocorrerem valores bem distantes da média.

  • Probabilidade de 0 eventos diminui: A probabilidade de observar 0 eventos diminui com o aumento de \(\lambda\).

3.2 DISTRIBUIÇÃO BINOMIAL

A distribuição binomial é uma distribuição discreta que modela o número de sucessos em n tentativas independentes de um experimento de Bernoulli (experimento 0 ou 1), onde cada tentativa tem apenas dois possíveis resultados: sucesso ou fracasso. A distribuição binomial é amplamente usada em situações onde há repetição de experimentos independentes, como:

  • O número de vezes que um aluno acerta uma questão em uma prova de múltipla escolha com alternativas ao acaso.

  • O número de clientes que compram um produto entre os que entram em uma loja.

  • O número de peças defeituosas em um lote de produção.

  • O número de pessoas que sobrevivem a uma determinada doença após um tratamento.

A função de probabilidade de uma variável aleatória X com distribuição binomial é dada por:

\[P(X = x) = \binom{n}{x} p^x (1 - p)^{n - x}, \quad x = 0, 1, 2, \dots, n\]

em que o parâmetro \(p\) é a probabilidade de sucesso. Por fim, lembre-se que os valores da média e variância associados a essa distribuição são:

\[E(X)=n\cdot p\] \[Var(X)=n \cdot p\cdot(1-p)\]

Para os estudos computacionais, considere a seguinte situação problema: Uma empresa realiza uma pesquisa de satisfação com seus clientes. Sabe-se que cada cliente tem uma probabilidade p de estar satisfeito com o produto ou serviço prestado. A empresa decide amostrar n clientes aleatoriamente para avaliar sua satisfação. Podemos modelar o número de clientes satisfeitos na amostra como uma distribuição binomial(n,p). Vamos considerar, inicialmente, que o tamanho da amostra seja n=10 e o parâmetro \(p\) seja igual a 0,50. Dessa forma, tem-se um valor esperado de 5 pessoas satisfeitas nessa amostra. Podemos usar as funções d, p e q para calcular quantidades de interesse sobre esta distribuição. Para a utilização dessas funções, os argumentos que representam os parâmetros da distribuição binomial são o size e p.

sizer = 10
probr = 0.5

# A probabilidade de que exatamente 4 clientes estejam satisfeitos:
dbinom(x=4,size=sizer,prob =probr)
## [1] 0.2050781
# A probabilidade de que menos de 6 clientes estejam satisfeitos:
pbinom(q=5,size=sizer,prob =probr)
## [1] 0.6230469
# A probabilidade de que mais de 9 clientes estejam satisfeitos:
1-pbinom(q=9,size=sizer,prob =probr)
## [1] 0.0009765625
# A probabilidade de que mais de 9 clientes estejam satisfeitos:
pbinom(q=9,size=sizer,prob =probr,lower.tail=F)
## [1] 0.0009765625
# O percentil 95 do número de clientes satistfeitos:
qbinom(p=0.95,size=sizer,prob =probr)
## [1] 8

EXERCÍCIO: Resolva os seguintes itens com as funções aprendidas.

  1. Calcule a probabilidade de que o número de clientes satisfeitos esteja entre 4 e 10, inclusive.

  2. Encontre o primeiro quartil (Q1) e o terceiro quartil (Q3) do número de clientes satisfeitos. Em seguida, determine a amplitude interquartílica (AIQ = Q3 – Q1).

Agora, vamos gerar uma amostra desta distribuição com a função rbinom e visualizá-la graficamente:

# tamanho da amostra gerada
n_amostra=100

sizer = 10
probr = 0.5

# media verdadeira
media = sizer*probr

# gerando os dados
set.seed(2025) # Fixar a semente para gerarmos juntos as mesmas amostras
dados <- rbinom(n_amostra, size=sizer,prob =probr)

# Criar data frame
df <- data.frame(valores = dados)
  
# Criar data frame das probabilidades teóricas
valores = min(dados):max(dados)
df_teorico <- data.frame(
    valores = valores,
    p_x = dbinom(valores, size=sizer,prob =probr)
  )
  
# Criar o gráfico
ggplot(df, aes(x = valores)) +
  
    # histograma
    geom_histogram(aes(y = ..count../sum(..count..)), binwidth = 1, 
                   fill = "lightblue", color = "black") +
  
    # ponto e segmento
    geom_point(data = df_teorico, aes(x = valores, y = p_x), 
               color = "red", size = 2) +
    geom_segment(data = df_teorico, aes(x = valores, xend = valores, 
                                        y = 0, yend = p_x),color = "red") +
  
    # acrescentar a média verdadeira em uma linha vertical
    geom_vline(xintercept = media, linetype = "dashed", color="blue",size=1)+
  
    labs(title = "Binomial (10,0.5)",
         x = "Valores", y = "Probabilidade") +
    theme_minimal() 

Para finalizar, vamos investigar o efeito de diferentes valores de \(n\) e \(p\) para esta situação problema:

# Função para gerar o gráfico
gerar_grafico <- function(sizer,probr) {
  
  # Tamanho da amostra 
  n_amostra=500
  
  # Gerar amostra da distribuição Binomial
  set.seed(2025) # Fixar a semente para gerarmos juntos as mesmas amostras
  dados <- rbinom(n_amostra, size=sizer,prob =probr)
  
  # Criar data frame
  df <- data.frame(valores = dados)
  
  # Criar data frame das probabilidades teóricas
  valores = min(dados):max(dados)
  df_teorico <- data.frame(
    valores = valores,
    p_x = dbinom(valores, size=sizer,prob =probr)
  )
  
  # Calcular a média da distribuição Binomial
  media <- sizer*probr
  
  # Criar o gráfico
  ggplot(df, aes(x = valores)) +
    # histograma
    geom_histogram(aes(y = ..count../sum(..count..)), binwidth = 1, 
                   fill = "lightblue", color = "black") +
  
    # ponto e segmento
    geom_point(data = df_teorico, aes(x = valores, y = p_x), 
               color = "red", size = 2) +
    geom_segment(data = df_teorico, aes(x = valores, xend = valores, 
                                        y = 0, yend = p_x),color = "red") +
  
    # acrescentar a média verdadeira em uma linha vertical
    geom_vline(xintercept = media, linetype = "dashed",color="blue",size=1)+
  
    labs(title = paste("Binomial(", sizer,",", probr, ")", sep = ""),
         x = "Valores", y = "Probabilidade") +
    theme_minimal()  +
    scale_x_continuous(limits = c(0, 20))  
}

# Definir os valores de size e prob
sizer <- c(10, 20)
probr <- c(0.25, 0.50, 0.75)

# Criar todas as combinações possíveis de n e p
combinacoes <- expand.grid(sizer = sizer, probr = probr)

# Aplicar a função gerar_grafico para cada combinação
graficos <- lapply(1:nrow(combinacoes), function(i) {
  gerar_grafico(combinacoes$sizer[i], combinacoes$probr[i]) 
})

# Combinar os gráficos usando patchwork
layout_graficos <- (graficos[[1]] | graficos[[3]] | graficos[[5]]) /
                   (graficos[[2]] | graficos[[4]] | graficos[[6]])

# Exibir o conjunto de gráficos
layout_graficos

O efeito gráfico das mudanças de size e prob na distribuição binomial pode ser analisado separadamente para cada parâmetro:

  • Aumento de size: A distribuição se espalha mais, pois a variância da binomial é np(1-p), que cresce com n (mantendo p constante). Visualmente, o histograma se alarga e se torna mais suave, se aproximando de uma curva contínua.

  • Aumento de p: A distribuição se desloca para a direita, pois a média da binomial é np. Visualmente, a moda da distribuição se move para valores mais altos.

3.3 EXERCÍCIO: APROXIMAÇÃO DA DISTRIBUIÇÃO BINOMIAL PELA DISTRIBUIÇÃO POISSON

A aproximação Poisson para a distribuição binomial é relevante porque permite simplificar cálculos probabilísticos quando n (o número de tentativas) é grande e p (a probabilidade de sucesso em cada tentativa) é pequeno. Em muitos contextos práticos, como na modelagem de eventos raros (por exemplo, número de falhas em um sistema ou mutações genéticas em um DNA), a distribuição binomial é a escolha natural, mas seu cálculo direto pode ser computacionalmente custoso para valores altos de n.

A distribuição Poisson fornece uma aproximação útil nesses casos, já que seu formato matemático é mais simples e os cálculos de probabilidade podem ser realizados sem recorrer a fatoriais ou coeficientes binomiais, que podem ser complicados para números grandes.

A aproximação Poisson para uma variável aleatória \(X\sim Bin(n,p)\) é dada por:

\[X \approx Y\sim Poisson(\lambda=np)\]

Quando a aproximação é boa? A regra prática para que a aproximação de Poisson seja adequada é que n seja grande e p seja pequeno, de modo que np (a média da binomial) se mantenha em um valor moderado (típicamente menor que 10). Embora não haja um limite rígido, costuma-se considerar \(n\geq 30\) e \(p\leq0,1\). De um modo geral, aproximação de Poisson funciona bem quando \(np\leq 5\) ou, em alguns casos, até \(np\leq 10\).

EXERCÍCIO: Gere uma amostra de tamanho 200 de uma variável aleatória Binomial(n=50,p=0.05). Faça o histograma dessa amostra e acrescente a função de probabilidade da aproximação pela distribuição Poisson. Verifique se a aproximação é boa.

4 DISTRIBUIÇÕES DE PROBABILIDADE CONTÍNUAS

Esta seção é dedicada ao estudo computacional de algumas distribuições contínuas (Exponencial, Normal e Gama).

4.1 DISTRIBUIÇÃO EXPONENCIAL

A distribuição exponencial é amplamente utilizada em estatística e probabilidade, principalmente para modelar o tempo entre eventos, que ocorre de maneira contínua e independente ao longo do tempo. Aqui estão algumas aplicações básicas dessa distribuição:

  • Tempo de espera entre as ligações recebidas em um call center

  • Tempo até até a falha de um sistema ou produto

  • Tempo de decaimento de partículas radioativas.

A função densidade de probabilidade de uma variável aleatória X com distribuição exponencial é dada por:

\[f(x) = \lambda e^{-\lambda x}, \quad x \geq 0, \quad \lambda > 0\]

em que o parâmetro \(\lambda\) controla a taxa de ocorrência dos eventos. Ele está diretamente relacionado à frequência com que os eventos ocorrem ao longo do tempo. Por fim, lembre-se que os valores da média e variância associados a essa distribuição são:

\[E(X)=\frac{1}{\lambda}\] \[Var(X)=\frac{1}{\lambda^2}\]

Uma situação clássica onde a distribuição exponencial é aplicável é o tempo entre chegadas de clientes no caixa de uma loja. Suponha que em este tempo, em minutos, seja modelado por uma distribuição exponencial com parâmetro \(\lambda\). Inicialmente, suponha que \(\lambda=1/2\) e, dessa forma, temos um tempo médio de 2 minutos entre as chegadas dos clientes. Podemos usar as funções d, p e q para calcular quantidades de interesse sobre esta distribuição. Para utilizar estas funções, o argumento que representa o parâmetro da distribuição exponencial é denotado por rate.

rater = 1/2

# A probabilidade de que o tempo entre chegada de clientes é maior que 10 minutos
1-pexp(q=10,rate = rater)
## [1] 0.006737947
# A probabilidade de que o tempo entre chegada de clientes é maior que 10 minutos
pexp(q=10,rate = rater,lower.tail=F)
## [1] 0.006737947
# A probabilidade de que o tempo entre chegada de clientes é menor que 4 minutos
pexp(q=4,rate = rater)
## [1] 0.8646647
# A mediana do tempo entre chegada de clientes:
qexp(p=0.5,rate = rater)
## [1] 1.386294

EXERCÍCIO: Resolva os seguintes itens com as funções aprendidas.

  1. Qual a probabilidade de que esse tempo esteja entre 5 e 15 minutos?

  2. Qual o tempo t tal que a probabilidade de que o próximo cliente chegue antes de t minutos seja igual a 0.9?

Vamos gerar uma amostra desta distribuição com a função r e visualizá-la graficamente:

# tamanho da amostra gerada
n_amostra=100

# lambda verdadeiro
rater = 1/2

# media verdadeira
media = 1/rater

# gerando os dados
set.seed(2025) # Fixar a semente para gerarmos juntos as mesmas amostras
dados <- rexp(n=n_amostra, rate = rater)

# Criar data frame
df <- data.frame(valores = dados)
  
# Criar data frame das probabilidades teóricas

valores = seq(min(dados),max(dados),length.out = 500)
df_teorico <- data.frame(
    valores = valores,
    dens = dexp(valores, rate = rater)
  )
  
# Criar o gráfico
ggplot(df, aes(x = valores)) +
  
    # histograma
    geom_histogram(aes(y = ..density..), 
                   fill = "lightblue", color = "black") +
  
    # gráfico de linha
    geom_line(data = df_teorico, aes(x = valores, y = dens), 
               color = "red", size = 1) +
    
    # acrescentar a média verdadeira em uma linha vertical
    geom_vline(xintercept = media, linetype = "dashed", color="blue",size=1)+
  
    labs(title = "Exponencial (1/2)",
         x = "Valores", y = "Densidade") +
    theme_minimal() +
    xlim(0,10)

Para finalizar, vamos investigar o efeito de diferentes valores de \(\lambda\) para esta situação problema:

# Função para gerar o gráfico
gerar_grafico <- function(rater) {
  # Tamanho da amostra 
  n_sample=100
  
  # Gerar amostra da distribuição Exponencial
  set.seed(2025) # Fixar a semente para gerarmos juntos as mesmas amostras
  dados <- rexp(n_sample, rate=rater)
  
# Criar data frame
df <- data.frame(valores = dados)
  
# Criar data frame das probabilidades teóricas

valores = seq(min(dados),max(dados),length.out = 500)
df_teorico <- data.frame(
    valores = valores,
    dens = dexp(valores, rate = rater)
  )
  
  # Calcular a média da distribuição Exponencial
  media <- 1/rater  
  
  # Criar o gráfico
  ggplot(df, aes(x = valores)) +
    # histograma
    geom_histogram(aes(y = ..density..),  
                   fill = "lightblue", color = "black") +
  
    # gráfico de linha
    geom_line(data = df_teorico, aes(x = valores, y = dens), 
               color = "red", size = 1) +
  
    # acrescentar a média verdadeira em uma linha vertical
    geom_vline(xintercept = media, linetype = "dashed",color="blue",size=1)+
  
    labs(title = paste("Exponencial (", rater, ")", sep = ""),
         x = "Valores", y = "Densidade") +
    theme_minimal()  +
    scale_x_continuous(limits = c(0, 10))  
}

# Usar lapply para gerar os gráficos para diferentes valores de rate
rater <- c(1/2, 1, 2)
graficos <- lapply(rater, gerar_grafico)

# Combinar os gráficos com patchwork
graficos[[1]] + graficos[[2]] + graficos[[3]] + plot_layout(ncol = 1)

Nota-se que, com o aumento de \(\lambda\):

  • Concentração perto de zero: À medida que \(\lambda\) cresce, os valores pequenos da variável tornam-se mais prováveis.

  • Decaimento mais rápido: A curva da f.d.p. cai mais rapidamente para valores maiores da variável, indicando que a probabilidade de valores altos é menor.

  • Média e dispersão: A média e a variância diminuem com o aumento de \(\lambda\), indicando que a distribuição fica mais concentrada perto de zero.

4.1.1 EXERCÍCIO: PROPRIEDADE PERDA DE MEMÓRIA

A propriedade de perda de memória (ou sem memória) da distribuição exponencial é uma característica importante e única dessa distribuição. Ela diz que a probabilidade de um evento ocorrer após um determinado tempo não depende do tempo que já passou sem o evento ocorrer. Formalmente, a propriedade de perda de memória pode ser enunciada da seguinte forma:

Se X é uma variável aleatória com distribuição exponencial, então para quaisquer \(t,s\geq 0\), temos:

\[ P(X > t + s \mid X > t) = P(X > s) \]

Para ilustrar, considere X um tempo de falha, em dias, exponencialmente distribuido. A propriedade da perda de memória diz que dado um tempo de falha maior do que t, a probabilidade de ele ser maior que t+s é igual a probabilidade de que ele seja somente maior que s. Isto é como se o relógio começasse a contar novamente a partir de t.

EXERCÍCIO Use o R, para mostrar que se \(X\sim exp(\lambda=1/100)\)

\[P(X > 150 \mid X > 100) = P(X > 50)\]

4.2 DISTRIBUIÇÃO NORMAL

A distribuição normal, também conhecida como distribuição de Gauss, é uma das distribuições mais importantes da estatística. Ela é uma distribuição contínua e simétrica em torno da média, modelando fenômenos naturais e diversas variáveis em contextos estatísticos.

Aplicabilidade:

  • Alturas e pesos de uma população.

  • Erros de medição em experimentos científicos.

  • Notas de alunos em provas padronizadas.

  • Flutuações em retornos financeiros.

A função densidade de probabilidade de uma variável aleatória X com distribuição normal é dada por:

\[f(x) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp \left( -\frac{(x - \mu)^2}{2\sigma^2} \right), \quad x \in \mathbb{R}\]

em que o parâmetro \(\mu\) é a média e o parâmetro \(\sigma\) é o desvio padrão.

Um exemplo clássico de situação prática modelada pela distribuição normal é a altura de adultos em uma população. Se você medir a altura de um grande número de adultos de um mesmo grupo populacional (por exemplo, homens brasileiros adultos), perceberá que os valores tendem a se concentrar em torno de uma média, com poucas pessoas sendo muito mais altas ou muito mais baixas. Esse padrão simétrico, com a maioria dos valores próximos à média e caudas que se afunilam para os extremos, é característico da distribuição normal. Suponha que determinada população tenha a altura modelada pela distribuição normal com média \(\mu=170\) e desvio padrão \(\sigma=7cm\). Podemos usar as funções d, p e q para calcular quantidades de interesse sobre esta distribuição. Nessas funções, os argumentos que representam os parâmetros da distribuição são mean e sd.

meanr = 170
sdr = 7

# A probabilidade de que a altura de uma pessoa da população seja maior que 180 cm
1-pnorm(q=180,mean=meanr,sd=sdr)
## [1] 0.07656373
# A probabilidade de que a altura de uma pessoa da população seja maior que 180 cm
pnorm(q=180,mean=meanr,sd=sdr,lower.tail=F)
## [1] 0.07656373
# A probabilidade de que a altura de uma pessoa da população seja menor que 150 cm
pnorm(q=150,mean=meanr,sd=sdr)
## [1] 0.002137367
# A probabilidade de que a altura de uma pessoa da população esteja entre 140 cm e 150 cm

pnorm(q=150,mean=meanr,sd=sdr)-pnorm(q=140,mean=meanr,sd=sdr)
## [1] 0.002128259
# O percentil 95 do da altura de uma pessoa da população:
qnorm(p=0.95,mean=meanr,sd=sdr)
## [1] 181.514

EXERCÍCIO: Resolva os seguintes itens com as funções aprendidas.

  1. Apenas os 10% mais altos serão chamados para um determinado processo. Qual deve ser a altura mínima exigida?

  2. Qual a proporção de pessoas tem uma altura que esteja fora do intervalo (160;180)?

Vamos gerar uma amostra desta distribuição e visualizá-la graficamente:

# tamanho da amostra gerada
n_amostra=100

# Parametros verdadeiros
meanr = 170
sdr = 7

# gerando os dados
set.seed(2025) # Fixar a semente para gerarmos juntos as mesmas amostras
dados <- rnorm(n_amostra, mean=meanr,sd=sdr)

# Criar data frame
df <- data.frame(valores = dados)
  
# Criar data frame das probabilidades teóricas
valores = seq(min(dados),max(dados),length.out = 500)
df_teorico <- data.frame(
    valores = valores,
    dens = dnorm(valores, mean=meanr,sd=sdr)
  )
  
# Criar o gráfico
ggplot(df, aes(x = valores)) +
  
    # histograma
    geom_histogram(aes(y = ..density..),  
                   fill = "lightblue", color = "black") +
  
    # gráfico de linha
    geom_line(data = df_teorico, aes(x = valores, y = dens), 
               color = "red", size = 1) +
  
    # acrescentar a média verdadeira em uma linha vertical
    geom_vline(xintercept = meanr, linetype = "dashed", color="blue",size=1)+
  
    labs(title = "Normal (170,7)",
         x = "Valores", y = "Densidade") +
    theme_minimal() 

Para finalizar, vamos investigar o efeito de diferentes valores de \(mean\) e \(sd\) para esta situação problema:

# Função para gerar o gráfico
gerar_grafico <- function(meanr,sdr) {
  # Tamanho da amostra 
  n_amostra=100
  
  # Gerar amostra da distribuição de Normal
  set.seed(2025) # Fixar a semente para gerarmos juntos as mesmas amostras
  dados <- rnorm(n_amostra, mean=meanr,sd=sdr)
  
  # Criar data frame
  df <- data.frame(valores = dados)
  
# Criar data frame das probabilidades teóricas
  valores = seq(min(dados),max(dados),length.out = 500)
  df_teorico <- data.frame(
     valores = valores,
      dens = dnorm(valores, mean=meanr,sd=sdr)
  )
  
  # Criar o gráfico
  ggplot(df, aes(x = valores)) +
    # histograma
    geom_histogram(aes(y =..density..), 
                   fill = "lightblue", color = "black") +
  
    # gráfico de linha
    geom_line(data = df_teorico, aes(x = valores, y = dens), 
               color = "red", size = 1) +
  
    # acrescentar a média verdadeira em uma linha vertical
    geom_vline(xintercept = meanr, linetype = "dashed",color="blue",size=1)+
  
    labs(title = paste("Normal(", meanr,",", sdr, ")", sep = ""),
         x = "Valores", y = "Densidade") +
    theme_minimal()  +
    scale_x_continuous(limits = c(135,200))  
}

# Definir os valores de mu e sigma
mean <- c(160, 170)
sd <- c(5, 7, 10)

# Criar todas as combinações possíveis de mu e sigma
combinacoes <- expand.grid(mean = mean, sd = sd)

# Aplicar a função gerar_grafico para cada combinação
graficos <- lapply(1:nrow(combinacoes), function(i) {
  gerar_grafico(combinacoes$mean[i], combinacoes$sd[i]) 
})

# Combinar os gráficos usando patchwork
layout_graficos <- (graficos[[1]] | graficos[[3]] | graficos[[5]]) /
                   (graficos[[2]] | graficos[[4]] | graficos[[6]])

# Exibir o conjunto de gráficos
layout_graficos

O efeito do aumento de \(\mu\) e \(\sigma\) na função densidade de probabilidade de uma distribuição normal pode ser analisado assim:

  • Aumento de \(\mu\): A curva se desloca horizontalmente para a direita, mantendo a mesma forma. Isso ocorre porque \(\mu\) define a localização central da distribuição.

  • Aumento de \(\sigma\): A curva se alarga e abaixa, espalhando os valores por uma faixa maior. Isso acontece porque \(\sigma\) controla a dispersão: valores mais altos significam maior variação nos dados.

4.2.1 EXERCÍCIO: PROPRIEDADE DE ESCALA DA NORMAL

Uma propriedade fundamental da Normal é a propriedade de escala:

Seja
\[ X \sim N(\mu, \sigma^2), \]
e seja \(a \in \mathbb{R}\). Definindo
\[ Y = aX, \]
temos que
\[ Y \sim N(a\mu, a^2\sigma^2). \]

Ou seja, multiplicar a Normal por uma constante \(a\) altera a média e a variância é multiplicada por \(a^2\).

Considere \(X \sim N(170, 7^2)\):

  1. Gere 500 observações de \(X\) no R.
  2. Defina \(Y = 2X\).
  3. Faça o histograma dos dados da variável Y
  4. Acrescente a densidade verdadeira de Y, conforme a propriedade de escala da normal.

4.3 EXERCÍCIO: DISTRIBUIÇÃO GAMA

A distribuição Gamma é utilizada em diversas áreas quando se deseja modelar tempos de espera e tempos de vida.

Aplicabilidade:

  • Tempo de vida de componentes eletrônicos, motores, lâmpadas e outros dispositivos que falham ao longo do tempo

  • Modelagem da precipitação acumulada em um período específico.

  • Tempo até que um determinado nível de perdas seja atingido em um processo financeiro.

  • Duração de doenças ou tempo até a recuperação de pacientes.

A função densidade de probabilidade de uma variável aleatória X com distribuição gama é dada por:

\[ f(x; \alpha, \beta) = \frac{\beta^\alpha x^{\alpha - 1} e^{-\beta x}}{\Gamma(\alpha)}, \quad x > 0 \]

em que o parâmetro \(\alpha\) é o parâmetro de forma (shape) e o parâmetro \(\beta\) é a taxa (rate). Os valores da média e variância associados a essa distribuição são:

\[E(X)=\frac{\alpha}{\beta}\] \[Var(X)=\frac{\alpha}{\beta^2}\]

Utilizaremos, portanto, as funções rgamma, dgamma, pgamma e qgamma com os argumentos shape e rate.

Um hospital quer modelar o tempo de atendimento de pacientes na emergência. Sabe-se que o tempo total de atendimento depende de várias etapas, como triagem, consulta e exames. Esse tipo de fenômeno pode ser bem modelado pela distribuição Gamma, pois o tempo total até a conclusão de várias etapas sucessivas frequentemente segue essa distribuição. Considere, portanto, que o tempo total de atendimento, em horas, tem uma distribuição Gama com parâmetros \(\alpha=2\) e \(\beta=1\). Dessa forma, tem-se um tempo médio de atendimento de \(\alpha/\beta\)=2 horas.

ATIVIDADES

  1. Calcule as seguintes probabilidades:
  1. Qual a probabilidade de o tempo total de atendimento ser superior a 4 horas?
  2. Qual a probabilidade de o tempo total de atendimento estar entre 1 e 2 horas?
  3. Qual o tempo total de atendimento mediano?
  4. Determine o tempo t tal que 25% dos atendimentos no hospital levam mais que t horas para serem concluídos.
  1. Simule uma amostra de tamanho 100 desta distribuição. Faça o histograma e acrescente a densidade verdadeira.

  2. Sabemos que Gama(\(\alpha=1\),\(\beta\)) \(\equiv\) Exponencial(\(\lambda=\beta\)). Assim, gere uma amostra de tamanho 500 de uma Gama(\(\alpha=1\),\(\beta=4\)) e sobreponha a densidade da distribuição Exponencial(\(\lambda=4\)). O que acontece?

5 SIMULANDO ALGUNS RESULTADOS TEÓRICOS

No estudo de distribuições de probabilidade, é comum encontrar relações matemáticas entre diferentes distribuições. Algumas dessas relações podem ser demonstradas analiticamente, enquanto outras podem ser exploradas por meio de simulações. O R oferece uma excelente plataforma para esse tipo de investigação, permitindo gerar amostras aleatórias, visualizar distribuições e verificar empiricamente certas propriedades estatísticas.

O estudo das relações entre distribuições de probabilidade é fundamental para a estatística teórica e aplicada. Essas conexões permitem desenvolver métodos estatísticos mais poderosos, justificar aproximações, facilitar cálculos complexos e compreender o comportamento de estimadores e testes estatísticos.

5.1 DISTRIBUIÇÃO T-STUDENT

A distribuição T de Student surge naturalmente em estatística quando trabalhamos com amostras finitas e não conhecemos a variância populacional, para populações normais. A variável aleatória T que possui distribuição T-student com \(\nu\) graus de liberdade é definida como:

\[ T = \frac{Z}{\sqrt{W / \nu}} \]

onde:

  • \(Z\sim N(0,1)\) é uma variável aleatória normal padrão,
  • \(W\sim\chi^2_\nu\) segue uma distribuição qui-quadrado com \(\nu\) graus de liberdade,
  • \(Z\) e \(W\) são independentes.

Lembre-se que \(E(T)=0\) e \(Var(T)=\frac{\nu}{\nu-2}\). Vamos gerar uma amostra de 500 observações da distribuição T com \(\nu=10\) graus de liberdade segundo a fórmula acima e, posteriormente, verificar a aproximação com a densidade verdadeira.

  • Para a distribuição qui-quadrado, utilizaremos o comando rchisqcom o argumento df para os graus de liberdade da distribuição.

  • Para a distribuição T, utilizaremos o comando dtcom o argumento df para os graus de liberdade da distribuição.

# tamanho da amostra gerada
n_amostra=500

# Graus de liberdade verdadeiro
dfr=10

# media verdadeira
media = 0

# gerando os dados
set.seed(2025) # Fixar a semente para gerarmos juntos as mesmas amostras
# Normal padrão
dadosZ <- rnorm(n=n_amostra, mean=0,sd=1)
# Qui-Quadrado
dadosChi <- rchisq(n_amostra,df=dfr)
# T-Student
dados <- dadosZ/sqrt(dadosChi/dfr)

# Criar data frame
df <- data.frame(valores = dados)
  
# Criar data frame das probabilidades teóricas

valores = seq(min(dados),max(dados),length.out = 500)
df_teorico <- data.frame(
     valores = valores,
      dens = dt(valores, df=dfr)
  )
  
# Criar o gráfico
ggplot(df, aes(x = valores)) +
  
    # histograma
    geom_histogram(aes(y = ..density..), 
                   fill = "lightblue", color = "black") +
  
    # gráfico de linha
    geom_line(data = df_teorico, aes(x = valores, y = dens), 
               color = "red", size = 1) +
  
    # acrescentar a média verdadeira em uma linha vertical
    geom_vline(xintercept = media, linetype = "dashed", color="blue",size=1)+
  
    labs(title = "T-student (10)",
         x = "Valores", y = "Densidade") +
    theme_minimal() 

5.2 EXERCÍCIO

Gere uma amostra de tamanho 500 de uma distribuição \(Y\sim Uniforme(0,1)\). Aplique a transformação \(W=-log(Y)\) e prove que \(W\sim Exp(1)\). Compare os gráficos empíricos e teóricos. Use a função runif para a distribuição uniforme. Essa função tem como argumentos min e max.

6 COMO O R GERA VALORES DE DISTRIBUIÇÕES DE PROBABILIDADE?

A geração de números aleatórios é um componente essencial da Estatística Computacional e da Simulação. Sempre que usamos funções como rnorm(), rexp() ou rbinom() no R, estamos gerando números de distribuições específicas. Mas como o R consegue criar números que seguem uma determinada distribuição de probabilidade?

A resposta está na geração de números pseudoaleatórios e em métodos matemáticos que transformam esses números para se adequarem a distribuições desejadas. O principal método utilizado para essa transformação é o método da transformação inversa, que exploraremos em detalhes nesta seção.

6.1 NÚMEROS PSEUDOALEATÓRIOS E O PAPEL DAS “SEMENTES”

Antes de falar sobre a transformação inversa, precisamos entender como os números “aleatórios” são gerados em um computador. Nesse sentido, vamos entender a diferença entre números verdadeiramente aleatórios e números pseudoaleatórios.

  • Números verdadeiramente aleatórios vêm de fenômenos físicos imprevisíveis, como ruído térmico ou decaimento radioativo.

  • Números pseudoaleatórios são gerados por algoritmos determinísticos que produzem sequências que parecem aleatórias, mas são completamente previsíveis se soubermos o estado inicial do algoritmo.

Os números gerados no R (e em praticamente todas as linguagens de programação) são pseudoaleatórios, pois vêm de um gerador de números pseudoaleatórios (PRNG - Pseudo Random Number Generator).

O gerador de números aleatórios do R baseia-se no algoritmo Mersenne Twister, que é um dos geradores de números pseudoaleatórios mais utilizados devido à sua longa sequência periódica e boas propriedades estatísticas.

A semente (set.seed()) é um número inicial que determina o estado do PRNG. Se usarmos a mesma semente, o R produzirá exatamente os mesmos números aleatórios, o que é essencial para reprodutibilidade em estudos computacionais.

6.2 O PAPEL DA DISTRIBUIÇÃO UNIFORME U(0,1)

A distribuição uniforme contínua no intervalo (0,1) tem um papel central na geração de números aleatórios. Isso acontece porque:

  • Ela é fácil de gerar computacionalmente.

  • Podemos transformá-la em muitas outras distribuições usando funções matemáticas adequadas.

Para gerar os dados de uma distribuição uniforme (0,1) o R, em sequência:

1- Semente inicial: O gerador inicia com uma semente (definida pelo usuário via set.seed() ou aleatória). No caso de semente aleatória, o R pega um estado aleatório baseado no relógio do sistema, gerando sequências diferentes a cada execução.

2- De acordo com o estado inicial (fixado ou aleatório) o R gera uma sequência de números pseudoaleatórios \(K_1,K_2,K_3,...\).

3- Os números gerados são transformados para o intervalo (0,1) ao serem divididos pelo maior valor possível que o gerador pode produzir.

Uma vez que temos valores da distribuição Uniforme(0,1), podemos usar técnicas para convertê-los em amostras de outras distribuições. A mais conhecida dessas técnicas é o método da transformação inversa.

6.3 MÉTODO DA TRANSFORMAÇÃO INVERSA

O método da transformação inversa é uma técnica fundamental para gerar valores de distribuições arbitrárias a partir da distribuição uniforme U(0,1). Ele é amplamente usado porque permite transformar facilmente um gerador de números pseudoaleatórios uniforme em valores de determinadas distribuições.

A ideia principal é a seguinte:

1- Geramos um número aleatório \(u \sim U(0,1)\).

2- Transformamos \(u\) aplicando a inversa da função de distribuição cumulativa \(F\), denotada por \(F^{-1}(\cdot)\), para obter um valor da distribuição desejada. Matematicamente, o valor x, gerado da distribuição de interesse, será dado por:

\[x=F^{-1}(U)\]

Esse método funciona porque a função \(F\) de qualquer distribuição mapeia o intervalo (0,1) no suporte da variável aleatória. Assim, quando aplicamos sua inversa, obtemos valores com a mesma distribuição da variável original. Graficamente, temos a seguinte situação:

6.3.1 EXEMPLO: DISTRIBUIÇÃO EXPONENCIAL

Para uma variável aleatória \(X\sim Exp(\lambda)\), tem-se a seguinte função densidade de probabilidade (já vista anteriormente):

\[f(x) = \lambda e^{-\lambda x}, \quad x \geq 0, \quad \lambda > 0\]

A função de distribuição \(F\) é obtida fazendo:

\[ F(x) = \int_{0}^{x} \lambda e^{-\lambda t} \, dt = 1 - e^{-\lambda x}, \quad x \geq 0. \]

Na sequência, precisamos gerar valores x dessa variável aleatória segundo o método da transformação inversa. Para um valor u, gerado a partir da distribuição uniforme(0,1), temos que encontrar \(x=F^{-1}(u)\). Para isto, tem-se o seguinte raciocínio:

\[\begin{align*} F(x) &= u \Rightarrow 1 - e^{-\lambda x} = u \\ &\Rightarrow 1 - u = e^{-\lambda x} \\ &\Rightarrow \ln(1 - u) = -\lambda x \\ &\Rightarrow x = -\frac{1}{\lambda} \ln(1 - u) \\ &\Rightarrow x = F^{-1}(u) \end{align*}\]

Assim, geramos um valor x da distribuição exponencial (\(\lambda\)), ao aplicar um valor \(u\) na função \(F^{-1}(u)=-\frac{1}{\lambda} \ln(1 - u)\). Portanto, para gerar \(n\) valores da distribuição exponencial (\(\lambda\)), basta gerar \(n\) valores da distribuição Uniforme (0,1) e aplicar na função inversa \(F^{-1}(u)\).

No R, vamos criar uma função para gerar os valores da distribuição exponencial para qualquer valor de \(\lambda\). Na sequência, vamos gerar uma amostra de tamanho 500 de uma exponencial com parâmetro \(\lambda=1/2\) usando essa função e verificar a aproximação com a densidade verdadeira:

set.seed(2025)  # Define uma semente para reprodutibilidade

# Metodo da transformação inversa
r_exp = function(u,rate)
  return(-(1/rate)*log(1-u))

# Lambda verdadeiro
rater = 1/2

# Gerando a amostra
n_amostra = 500
u = runif(n_amostra,min=0,max=1)
dados = r_exp(u=u,rate=rater)

# media verdadeira
media = 2

# Criar data frame
df <- data.frame(valores = dados)
  
# Criar data frame das probabilidades teóricas
valores = seq(min(dados),max(dados),length.out = 500)
df_teorico <- data.frame(
     valores = valores,
      dens = dexp(valores,rate=rater)
  )

# Criar o gráfico
ggplot(df, aes(x = valores)) +
  
    # histograma
    geom_histogram(aes(y = ..density..), 
                   fill = "lightblue", color = "black") +
  
    # gráfico de linha
    geom_line(data = df_teorico, aes(x = valores, y = dens), 
               color = "red", size = 1) +
    
    # acrescentar a média verdadeira em uma linha vertical
    geom_vline(xintercept = media, linetype = "dashed", color="blue",size=1)+
  
    labs(title = "Exponencial (1/2)",
         x = "Valores", y = "Densidade") +
    theme_minimal() +
    xlim(0,10)

Acabamos de fazer, portanto, o que a função rexp() faz automaticamente.

6.3.2 EXERCÍCIO: DISTRIBUIÇÃO PARETO

A distribuição de Pareto é especialmente útil para modelar variáveis positivas com alta assimetria à direita, sendo frequentemente associada à chamada lei dos poucos vitais.

Considere a variável aleatória \(X \sim \text{Pareto}(x_m, \alpha)\), com:

  • \(x_m > 0\): parâmetro de escala (valor mínimo da variável);
  • \(\alpha > 0\): parâmetro de forma (relacionado ao decaimento da cauda).

As expressões da função densidade de probabilidade e da função de distribuição acumulada são, respectivamente:

\[ f(x) = \frac{\alpha\, x_m^\alpha}{x^{\alpha + 1}}, \quad x \ge x_m \]

e

\[ F(x) = 1 - \left(\frac{x_m}{x}\right)^\alpha, \quad x \ge x_m \]

A esperança existe somente se \(\alpha > 1\):

\[ \mathbb{E}[X] = \frac{\alpha x_m}{\alpha - 1}, \quad \alpha > 1. \]

A variância existe somente se \(\alpha > 2\):

\[ \text{Var}(X) = \frac{\alpha x_m^2}{(\alpha - 1)^2(\alpha - 2)}, \quad \alpha > 2. \]

  1. Utilizando o método da transformação inversa, crie a função r_pareto que gera \(n\) observações da distribuição de Pareto com parâmetros \(x_m\) e \(\alpha\).

  2. Use essa função para gerar 500 valores de uma distribuição Pareto (\(\alpha=1\) e \(x_m=10\)). Gere o histograma dos dados e verifique a aproximação para a verdadeira distribuição. Dica: Utilize a função dpareto do pacote VGAM com os argumentos shape (\(\alpha\)) e scale (\(x_m\))

6.4 OUTROS MÉTODOS DE GERAÇÃO

O método da transformação inversa é uma abordagem fundamental para gerar amostras aleatórias a partir de distribuições de probabilidade arbitrárias. Como vimos, ele se baseia na inversão da função de distribuição acumulada, transformando números uniformemente distribuídos em números que seguem a distribuição desejada. O R usa este método para gerar as seguintes distribuições:

  • Exponencial
  • Cauchy
  • Gumbel
  • Laplace
  • Pareto
  • Weibull

Por depender, analiticamente, da função \(F\), o método da transformação inversa possui algumas desvantagens. Para muitas distribuições, essa inversa não possui uma forma fechada, o que pode dificultar ou até inviabilizar a implementação direta do método. Quando a inversa da FDA não tem uma forma analítica simples, precisamos recorrer a métodos numéricos (como bissecção ou Newton-Raphson) para encontrar \(F^{-1}(u)\). Isso pode ser computacionalmente custoso, especialmente para distribuições complexas ou quando precisamos gerar um grande número de amostras rapidamente. Além disso, podem ocorrer erros de arredondamento, impactando a qualidade das amostras geradas. Se a distribuição tem múltiplos picos (multimodalidade), o método da transformação inversa pode ser ineficiente porque pode ser difícil encontrar a inversa de \(F\) com precisão.

O R não usa métodos numéricos para calcular a inversa da função de distribuição acumulada ao gerar amostras de distribuições. Quando a inversa de \(F\) não tem uma forma fechada, o R geralmente adota outros métodos mais eficientes:

  • Método de Box Muller ou Método polar de Marsaglia: Normal.
  • Método de Aceitação-Rejeição: Gama, Beta, T, Qui-Quadrado e F.
  • Método da Decomposição: Binomial e Poisson.