Para selecionar uma amostra aleatória em R, podemos utilizar a função amostra() que utiliza a seguinte sintaxe:
sample(x, size, replace = FALSE, prob = NULL)
onde:
- x: Um vetor de elementos a partir do qual se pode escolher.
- tamanho: Tamanho da amostra.
- substituir: Se a amostragem deve ser efectuada com substituição ou não. A predefinição é FALSO.
- prob: Vetor de pesos de probabilidade para obter elementos do vetor. A predefinição é NULL.
Este tutorial explica como utilizar esta função para selecionar uma amostra aleatória em R a partir de um vetor e de um quadro de dados.
Exemplo 1: Amostra aleatória de um vetor
O código seguinte mostra como selecionar uma amostra aleatória de um vetor sem substituição :
#criar um vetor de dados data <- c(1, 3, 5, 6, 7, 8, 10, 11, 12, 14) #selecionar uma amostra aleatória de 5 elementos sem substituição sample(x=data, size=5) 10 12 5 14 7
O código seguinte mostra como selecionar uma amostra aleatória de um vetor com substituição :
#criar vetor de dados data <- c(1, 3, 5, 6, 7, 8, 10, 11, 12, 14) #selecionar amostra aleatória de 5 elementos com substituição sample(x=data, size=5, replace= TRUE ) 12 1 1 6 14
Exemplo 2: Amostra aleatória de um quadro de dados
O código seguinte mostra como selecionar uma amostra aleatória de um quadro de dados:
#criar quadro de dados df <- data.frame(x=c(3, 5, 6, 6, 8, 12, 14), y=c(12, 6, 4, 23, 25, 8, 9), z=c(2, 7, 8, 8, 15, 17, 29)) #visualizar quadro de dados df x y z 1 3 12 2 2 2 5 6 7 3 6 4 8 4 6 23 8 5 8 25 15 6 12 8 17 7 14 9 29 #selecionar amostra aleatória de três linhas do quadro de dados rand_df <- df[ sample ( nrow (df), size= 3 ), ] #exibir linhas seleccionadas aleatoriamente rand_df x y z 4 6 23 8 7 14 9 29 1 3 12 2
Eis o que está a acontecer neste pedaço de código:
1. Para selecionar um subconjunto de um quadro de dados em R, utilizamos a seguinte sintaxe: df[linhas, colunas]
2. No código acima, seleccionamos aleatoriamente uma amostra de 3 linhas da base de dados e todos colunas.
3. O resultado final é um subconjunto do quadro de dados com 3 linhas seleccionadas aleatoriamente.
É importante notar que cada vez que usamos o amostra() o R seleccionará uma amostra diferente, uma vez que a função escolhe os valores aleatoriamente.
Para replicar os resultados de algumas análises, certifique-se de que utiliza set.seed(algum número) para que a função sample() escolha sempre a mesma amostra aleatória. Por exemplo:
#fazer este exemplo reprodutível set.seed(23) #criar quadro de dados df <- data.frame(x=c(3, 5, 6, 6, 8, 12, 14), y=c(12, 6, 4, 23, 25, 8, 9), z=c(2, 7, 8, 8, 15, 17, 29)) #selecionar amostra aleatória de três linhas do quadro de dados rand_df <- df[ sample ( nrow (df), size= 3 ), ] #exibir linhas seleccionadas aleatoriamente rand_df x y z 5 8 25 15 2 5 6 7 6 12 8 17
De cada vez que executar o código acima, serão seleccionadas as mesmas 3 linhas do quadro de dados.