r - Problema de Set.seed con la muestra al cambiar el orden de los valores

CorePress2024-01-25  10

set.seed(59)
mean(sample(c(12,7,5),7,prob = c(.3,.3,.4),replace = T))
[1] 9.571429}

set.seed(59)
mean(sample(c(5,7,12),7,prob = c(.4,.3,.3),replace = T))
[1] 8.142857

¿Ambos códigos no deberían devolver la misma media de muestra? ¿Por qué es diferente?



------------------------------------

Bueno, primero considere el caso más simple en el que omite el problema=

set.seed(59) 
sample(c(12,7,5),7,replace = T)
# [1]  5 12 12  5  5 12  5
set.seed(59) 
sample(c(5,7,12),7,replace = T)
# [1] 12  5  5 12 12  5 12

Debido a que tienes entradas diferentes, obtienes un resultado diferente. Pero también tenga en cuenta que la función de muestra en realidad toma muestras de los índices del vector, no de los valores reales del vector. Vea cómo en el segundo resultado, básicamente simplemente intercambió los 5 y los 12. Lo único que importa es la longitud del vector de entrada. Si lo pruebas con

set.seed(59) 
sample(1:3,7,replace = T)
# [1] 3 1 1 3 3 1 3

Mira cómo todavía obtienes el mismo sabor "accaaca". patrón (el medioEl valor nunca se elige). Eso es lo que hará por usted el establecimiento de la semilla. En realidad, solo obtienes exactamente el mismo resultado, ya que todos los demás parámetros son idénticos.

Si cambia el orden de los valores en el vector e intercambia las probabilidades, no obtendrá las mismas observaciones de un generador de números pseudoaleatorios como el que usa R. Simplemente no es una estrategia "inteligente". basta ver que tienen la misma distribución estadística. Sin embargo, si extraes un montón de muestras una y otra vez, a la larga tendrán medias similares gracias a la ley de los grandes números.



------------------------------------

Ademásn a MrFlick quiero señalar:

Establecer una semilla significa que cada vez que use una línea de código, por ejemplo, su primera línea significa (muestra (c (12,7,5), 7, prob = c (.3, .3, .4), reemplazar = T) ) con un conjunto de semillas.seed(59) en cada máquina del mundo y más allá de la salida debe ser > [1] 9.571429 Por otro lado, si usa la misma semilla set.seed(59) para un conjunto de datos diferente, como es en su caso, mean(sample(c(5,7,12),7,prob = c(. 4,.3,.3),replace = T)) le dará otro resultado.

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare