sample()
Pudimos ver como utilizar una tabla de números aleatorios para
seleccionar una muestra de la clase de biometría. Ahora vamos a utilizar
la función sample()
para seleccionar 12 estudiantes al
azar.
El comando sample()
permite seleccionar \(n\) números al azar del número total de
estudiantes, \(N\). Indicaremos que es
sin reemplazo al indicar replace = F
. Esto significa que
ningún número puede salir más de una vez.
NOTA: El total de estudiantes debemos ajustarlo de acuerdo a la asistencia del día.
# de la clase de biometria seleccionar 12 estud. al azar
N <- 33
n <- 12
sample(1:N, n, replace = F)
## [1] 12 28 20 22 8 4 16 26 21 24 31 32
El comando sample()
permite seleccionar \(n\) números al azar del número total de
estudiantes, \(N\). Indicaremos que es
con reemplazo al indicar replace = F
. Esto significa que
algún número puede salir más de una vez (pero no necesariamente).
# probando replace T
sample(1:N, n, replace = T)
## [1] 17 33 31 20 11 1 3 6 9 13 10 11
Si queremos seleccionar una muestra de 3 letras del alfabeto, y ver
si formamos una palabra luego de varios muestreos, podemos utilizar el
comando sample()
para seleccionar 3 letras al azar del
alfabeto. Para ello utilizaremos las siguientes fórmulas:
# Muestra de letras del alfabeto
letras <- letters
n <- 3
sample(letras, n, replace = T)
## [1] "m" "l" "r"
# aumentar la frecuencia de vocales
letras_v <- c(rep("a", 6), rep("e", 6), rep("i", 3), rep("o", 2), rep("u", 2), letters)
n <- 3
sample(letras_v, n, replace = F)
## [1] "w" "z" "p"
Si queremos seleccionar una muestra de 12 estudiantes de acuerdo a su
ubicación, podemos utilizar el comando sample()
para
seleccionar \(n_1\) estudiantes de las
filas laterales (\(N_1\)), y \(n_2\) estudiantes de los \(N_2\) ubicados en los restantes pupitres.
Para ello utilizaremos las siguientes fórmulas:
\[n_1 = \frac{N_1}{N_t} \times 12\] y \[n_2 = 12 - n_1\]
Donde \(N_t\) es el total de estudiantes presentes.
# Muestreo estratificado
# usar los valores de N1 y N2 según la asistencia
N1 <- 12
N2 <- 18
Nt <- N1 + N2
n1 <- (N1 / Nt) * 12
n2 <- 12 - n1 + 1 # ajuste para redondear porque sample() no usa los decimales para redondear
# usamos sample() para seleccionar n1 estudiantes de N1 y n2 de N2 sin reemplazo
muestra1 <- sample(1:N1, n1, replace = F)
muestra2 <- sample(1:N2, n2, replace = F)
muestra1
## [1] 1 7 11 10
muestra2
## [1] 8 14 13 2 10 9 5 1
Queremos tomar una muestra de 30 coordenadas de un campo de
girasoles, para realizar análisis del aceite. Para ello, vamos a generar
dos vectores de coordenadas \(X\) y
\(Y\) utilizando la función
sample()
.
Generamos un vector de 30 coordenadas \(X\) al azar entre 1 y 30.
coor.x <- sample(1:30, 30, replace = F) # ¿por qué con reemplazo?
coor.x
## [1] 2 12 11 10 30 15 17 5 29 23 18 7 8 20 26 24 27 6 1 13 28 14 9 21 3
## [26] 19 4 25 16 22
Generamos un vector de 20 coordenadas \(Y\) al azar entre 1 y 20.
coor.y <- sample(1:20, 30, replace = T) # ¿por qué con reemplazo?
coor.y
## [1] 3 16 19 8 3 16 7 18 9 5 1 20 13 15 15 18 20 5 8 13 16 3 7 7 8
## [26] 13 12 12 11 13
Para tener un data.frame
con las coordenadas de los
girasoles, unimos los vectores de coordenadas \(X\) y \(Y\) en un data.frame
llamado
coord.girasol
.
coord.girasol <- data.frame(coor.x, coor.y)
coord.girasol
## coor.x coor.y
## 1 2 3
## 2 12 16
## 3 11 19
## 4 10 8
## 5 30 3
## 6 15 16
## 7 17 7
## 8 5 18
## 9 29 9
## 10 23 5
## 11 18 1
## 12 7 20
## 13 8 13
## 14 20 15
## 15 26 15
## 16 24 18
## 17 27 20
## 18 6 5
## 19 1 8
## 20 13 13
## 21 28 16
## 22 14 3
## 23 9 7
## 24 21 7
## 25 3 8
## 26 19 13
## 27 4 12
## 28 25 12
## 29 16 11
## 30 22 13
¿Cuál es el riesgo de utilizar la función
sample()
con reemplazo en este caso?
Para visualizar las coordenadas de los girasoles en el campo, vamos a
realizar un gráfico de dispersión utilizando la función
plot()
. En el gráfico, la coordenada \(X\) se representa en el eje horizontal y la
coordenada \(Y\) en el eje vertical.
Con esta gráfica podemos verificar si hay pares de coordenadas
repetidas, ¿cómo?
# Gráfico de dispersión de las coordenadas
plot(coor.x, coor.y, main = "Coordenadas de los girasoles", xlab = "Coordenada X", ylab = "Coordenada Y", pch = 19, col = "blue")
numloteria <- sample(0:9, 5, replace = T)
numloteria
## [1] 2 1 5 0 4
¿Por qué usamos replace = T
?
¿Se usa replace = T
o replace = F
?
¿Por qué?
# sin repeticiones
fruits <- c("manzana", "guineo", "mango", "pera", "fresa", "uva", "naranja", "piña", "sandía", "papaya")
selected_fruitsF <- sample(fruits, 5, replace = F)
selected_fruitsF
## [1] "sandía" "naranja" "piña" "guineo" "fresa"
# con repeticiones
selected_fruitsT <- sample(fruits, 5, replace = T)
selected_fruitsT
## [1] "pera" "pera" "fresa" "uva" "pera"
fruits_prob <- c(rep("manzana", 6), rep("guineo", 6), rep("mango", 3), rep("pera", 2), rep("fresa", 2), rep("uva", 2), rep("naranja", 4), rep("piña", 1), rep("sandía", 1), rep("papaya", 1))
selected_fruitsP <- sample(fruits_prob, 5, replace = F)
selected_fruitsP
## [1] "manzana" "piña" "sandía" "uva" "guineo"
Simular la herencia de alelos donde cada descendiente hereda uno de dos alelos (A o a) de cada padre.
parent1 <- sample(c("A", "a"), 100, replace = TRUE)
parent2 <- sample(c("A", "a"), 100, replace = TRUE)
offspring <- paste(parent1, parent2, sep = "")
table(offspring)
## offspring
## aa aA Aa AA
## 20 22 28 30