1. Como coletar amostras de dados em R

Por Andrie de Vries, Joris Meys

Os estatísticos geralmente precisam coletar amostras de dados e depois calcular as estatísticas. Coletar uma amostra é fácil com o R, porque uma amostra nada mais é do que um subconjunto de dados. Para fazer isso, você usa sample (), que recebe um vetor como entrada; então você diz quantas amostras extrair dessa lista.

Digamos que você queira simular rolos de um dado e que deseja obter dez resultados. Como o resultado de um único lançamento de um dado é um número entre um e seis, seu código fica assim:

> amostra (1: 6, 10, substituir = VERDADEIRO)
 [1] 2 2 5 3 5 3 5 6 3 5

Você diz a sample () para retornar dez valores, cada um no intervalo de 1: 6. Como cada rolo do dado é independente de todos os outros rolos do dado, você está fazendo uma amostragem com substituição. Isso significa que você pega uma amostra da lista e redefine a lista para seu estado original (em outras palavras, coloca o elemento que acabou de desenhar na lista).

Para fazer isso, adicione o argumento replace = TRUE, como no exemplo.

Como o valor de retorno da função sample () é um número determinado aleatoriamente, se você tentar repetidamente essa função, obterá resultados diferentes a cada vez. Esse é o comportamento correto na maioria dos casos, mas às vezes você pode querer obter resultados repetíveis sempre que executar a função.

Geralmente, isso ocorrerá apenas quando você desenvolver e testar seu código ou se quiser ter certeza de que alguém pode testar seu código e obter os mesmos valores que você. Nesse caso, é habitual especificar um valor de semente chamado.

Se você fornecer um valor inicial, a sequência de números aleatórios será redefinida para um estado conhecido. Isso ocorre porque R não cria números verdadeiramente aleatórios, mas apenas números pseudo-aleatórios. Uma sequência pseudo-aleatória é um conjunto de números que, para todos os efeitos práticos, parecem ser aleatórios, mas foram gerados por um algoritmo. Quando você define uma semente inicial para um processo pseudo-aleatório, R sempre retorna a mesma sequência pseudo-aleatória.

Mas se você não definir a semente, R será extraído do estado atual do gerador de números aleatórios (RNG). Na inicialização, R pode definir uma semente aleatória para inicializar o RNG, mas cada vez que você o chama, R inicia a partir do próximo valor no fluxo RNG. Você pode ler a Ajuda do? RNG para obter mais detalhes.

Em R, você usa a função set.seed () para especificar o valor inicial da semente. O argumento para set.seed () é qualquer valor inteiro.

> set.seed (1)
> amostra (1: 6, 10, substituir = VERDADEIRO)
 [1] 2 3 4 6 2 6 6 4 4 1

Se você desenhar outra amostra, sem definir uma semente, obterá um conjunto diferente de resultados, como seria de esperar:

> amostra (1: 6, 10, substituir = VERDADEIRO)
 [1] 2 2 5 3 5 3 5 6 3 5

Agora, para demonstrar que o set.seed () realmente redefine o RNG, tente novamente. Mas desta vez, coloque a semente mais uma vez:

> set.seed (1)
> amostra (1: 6, 10, substituir = VERDADEIRO)
 [1] 2 3 4 6 2 6 6 4 4 1

Você obtém exatamente os mesmos resultados da primeira vez que usou o set.seed (1).

Você pode usar sample () para colher amostras da íris do quadro de dados. Nesse caso, convém usar o argumento replace = FALSE. Como esse é o valor padrão do argumento de substituição, você não precisa escrevê-lo explicitamente:

> set.seed (123)
> índice <- amostra (1: nrow (íris), 5)
> índice
[1] 44 119 62 133 142
> íris [index,]
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
44 5,0 3,5 1,6 0,6 setosa
119 7,7 2,6 6,9 2,3 virginica
62 5,9 3,0 4,2 1,5 versicolor
133 6,4 2,8 5,6 2,2 virginica
142 6,9 3,1 5,1 2,3 virginica