Última atualização: 12 de maio, 2025 às 20:38.

1 Vetores aleatórios com sample()

1.1 Amostragem com e sem reposição

Descreva como obter o listado a seguir com o uso da função sample().

  1. Uma turma tem 45 alunos. Vai se escolher uma comissão de cinco representantes selecionando os indivíduos ao acaso.
  2. Obter uma sequencia de resultados de 10 lançamentos de uma moeda.
  3. Utilizando os algarismos 0 a 9 obter um número de 4 algarismos.
  4. Em uma corrida de automóveis com 20 pilotos obter um possível pódium (três primeiros colocados), considerando chances iguais de resultados entre os pilotos.

Solução parcial:
a. Os indivíduos podem ser identificados por números de 1 a 45 e depois sorteados sem reposição.
b. O sorteio é agora com reposição.

sample(1:45, 5)
sample(c("cara","coroa"), 10, replace = TRUE)

1.2 Opções da função

  1. Acesse informações sobre função sample() (use args(sample) e help(sample)). Descreva o uso e crie exemplos do uso de cada um dos argumentos da função.

1.3 Lançamentos de um dado

  1. Use a função sample() para simular o lançamento de um dado.
  2. Idem anterior porém agora 20 lançamentos.
  3. Verifique quantas foram as ocorrências de cada face.
  4. Faça um gráfico do número obtido e o esperado de ocorrências das faces.
  5. Obtenha as frequências e proporções de cada face em 12, 60, 120, 600, 12.000 e 600.000 lançamentos. Avalie a proximidade dos resultados à frequencia esperada. Faça teste de aderência em cada caso. Voce notou algum resultado “potencialmente” contra intuitivo?
  6. Simule agora o lançamento de dois dados e obtenha a soma das faces.
  7. Obtenha a frequência dos valores da soma das faces em 1800 lançamentos de dois dados. Compare com o valor teórico e faça um gráfico adequado.

## Warning in chisq.test(tsam12): Aproximação do qui-quadrado pode estar incorreta

1.4 Amostrando conjunto de dados

Considere o conjunto de dados mtcars incluído no R.

  1. Componha um novo objeto selecionando, ao acaso, cinco linhas deste conjunto de dados.
  2. Compare o consumo (mpg) médio calculado com os dados originais e no subconjunto obtido.
  3. Repita a criação do novo conjunto e cálculo da média de mpg 1000 vezes. Compare agora os 1000 valores de médias obtidas com a média original calculada com todos os dados. Discuta os resultados.

Solução parcial:

Seja uma variável aleatória \(Y\) representando o consumo (mpg).
Tem-se que a distribuição amostral da média de \(Y\) é dada por: \[ \bar{Y} \approx N\left(\mu_Y, \frac{\sigma_Y^2}{n}\right),\] em que \(\mu_Y\) e \(\sigma_Y^2\) são a média e a variância populacional de \(Y\), respectivamente, e \(n\) é o tamanho da amostra.

Neste exercício vamos investigar esta distribuição amostral obtida de outro maneira que não o resultado teórico acima: por simulação. A seguir são apresentados o histrograma dos dados originais e a distribuição amostral das médias obtidas por simulação. A distribuição teórica é sobreposta (linha azul). 

O método de simulação confirma o resultado teórico neste caso mas permite ainda a obtenção da variância da distribuição amostral de quantidades paras as quais não pode ser obtida analiticamente.

OBS: neste caso seria ainda possível obter a distribuição amostral “exata” considerando todas as amostra que podem ser montadas com 5 elementos do conjunto de dados. Isto é, a distribuição amostral de \(\bar{Y}\) é obtida considerando todas as amostras possíveis de 5 elementos do conjunto de dados.

1.5 (Re)Amostrando com repetição

Repita o exercício anterior porém no passo (a.) retire amostras com reposição com tamanho igual ao tamanho dos dados. Discuta resultados e ainda semelhanças e diferenças com o problema anterior.

2 Vetores aleatórios com runif()

2.1 Simulando e visualizando simulações

  1. Acesse informações sobre função runif() (use args(runif) e help(runif)).
  2. Use a função para gerar 10 valores. Armazene os valores em um objeto chamado y1.
  3. Rode a função novamente gerando 10 valores. Armazene os valores em um objeto chamado y2. Os valores de y1 e y2 são iguais? Explique.
  4. Gere agora um vetor com 10000 valores gerados por runif() e imagine fazer um histograma com estes valores. Qual o padrão que voce espera encontrar neste histograma? Use hist() para fazer o histograma e verifique se o padrão é o que voce imaginou. Use também density() para visualizar a distribuição empírica do dado.
  5. Coloque em mesmo um gráfico as distribuições acumuladas teórica e empírica (voce pode usar punif() e ecdf()).

2.2 Simulando em outros intervalos

Utilizando runif():

  1. Gere agora 8 valores aleatórios entre 4 e 10 de duas formas:
  • usando argumentos de runif(),
  • fazendo uma operação com valores gerados por runif(8).
  1. Simular o lançamento de 10 moedas.
  2. Simular 10 lançamento de um dado.
  3. Gere uma sequência (aleatória) de 20 resultados do lançamento de uma moeda.
  4. Quantas caras e coroas voce espera? Quantas foram geradas?
  5. Uma sequência (aleatória) de 30 resultados do lançamento de um dado.
  6. Quantas de cada face do dado voce espera observar? Quantas foram geradas?

3 Simulando com rnorm()

3.1 Explorando simulações

  1. Acesse informações sobre função rnorm() (use args(rnorm) e help(rnorm))
  2. Gere 100 valores de uma distribuição normal padrão (ou seja, com média zero e desvio padrão 1) e faça um histograma destes valores.
  3. Simule 200 valores de uma distribuição normal de média 70 e desvio padrão 8. Compare os valores simulados com teóricos usando:
  • histograma (hist()),
  • gráfico de densidade (density()),
  • gráfico de distribuição acumulada (teórica e empírica),
  • qq-plot normal (qqnorm() e qqline()).