Sampling and Replication
Sampling and Replication
1 configuración
4 La función de muestra
4.2 B. Uso de la función de ejemplo y Bootstrapping en nuestros datos de usuario de PC y Mac simulados
Felix Pambuccian
1 Setup
NOTE ON PACKAGES: I use the following packages in this chapter. If you do not have these packages installed, you
may use the script below to install them and load their libraries. I use the kable function of the “knitr” package to create a
table in section 5.2 B, and I use the dcast function of the “reshape2” package to restructure that table, also in section 5.2
B.
#install.packages("reshape2")
#install.packages("knitr")
library(reshape2)
library(knitr)
Before beginning, you may set your working directory if you desire:
The rnorm function is used to generate a specified number of “samples” from a normally distributed population with a
user-specified mean and standard deviation. As such, the rnorm function is often used to simulate empirical data
ll df l i ihk d d dd i i Th f i
https://ademos.people.uic.edu/Chapter7.html#31_a_examples_of_simple_replication_of_individual_values_and_vectors h f ll i d 1/16
6/11/2019 Chapter 7: Sampling and Replication
collected from a population with known mean and standard deviation. The rnorm function uses the following syntax and
arguments:
rnorm(n, mean = 0, sd = 1)
Where n is the number of “observations” to be generated, “mean” is the user-specified population mean, and “sd” is the
user-specified standard deviation of the population. To begin to show the usefulness of this function, I will introduce a
few basic examples.
mean(rnorm.example)
## [1] 14.68365
It is important to note that while these observations are drawn from a normally distributed population with a mean of 15
and a standard deviation of 2, the mean of this sample is NOT 15, as seen above. The rnorm function does not create a
normally distributed sample with specified mean, sd, and number of observations - it draws observations from a
theoretical population with specified parameters.
Note that performing the same rnorm operation will result in a different set of values being generated each time:
By contrast, running the named object “rnorm.example” repeatedly returns the same set of values each time:
rnorm.example
rnorm.example
https://ademos.people.uic.edu/Chapter7.html#31_a_examples_of_simple_replication_of_individual_values_and_vectors 2/16
6/11/2019 Chapter 7: Sampling and Replication
However, re-running the original expression and then calling the object will result in the values of “rnorm.example” being
changed each time the expression is re-run:
As such, if you want to obtain same set of numbers each time you run a chunk of code, you must use the set.seed()
function.
If you want to generate the same numbers each time you run an rnorm expression, you can use the set.seed function,
which uses the following syntax: set.seed(seed)
In which “seed” is an integer that sets the seed, such that specifying that same integer later will recall the particular set
of values associated with that seed integer.
To see how setting a given seed will produce the same values every time that seed is specified, even if the expression is
re-run, let’s reproduce the previous code chunk but specify a seed of “1” for “rnorm.example”:
set.seed(1)
rnorm.example<-rnorm(10, mean=15, sd=2)
rnorm.example
set.seed(1)
rnorm.example<-rnorm(10, mean=15, sd=2)
rnorm.example
Unlike in the previous chunk of code, this time re-running the expression does not change the numbers in
“rnorm.example”, since we set a seed. What happens when we specify a seed other than 1?
set.seed(2)
rnorm.example<-rnorm(10, mean=15, sd=2)
rnorm.example
https://ademos.people.uic.edu/Chapter7.html#31_a_examples_of_simple_replication_of_individual_values_and_vectors 3/16
6/11/2019 Chapter 7: Sampling and Replication
set.seed(2)
rnorm.example<-rnorm(10, mean=15, sd=2)
rnorm.example
Setting a seed of 2 will create a different set of 10 generated values, which can be reproduced each time the seed 2 is
specified. Thus, different seed numbers can be used to store different sets of values for the same expression. The seed
numbers I use throughout this chapter were chosen by me at random and hold no symbolic meaning whatsoever. In the
case of this chapter, the set.seed() function is useful as it ensures that that, whenever I specify a seed, the same
numbers will appear each time the full chapter code is run.
To set the stage for the scenario I want to simulate, I will first need to introduce a new construct:
This construct describes the mixture of frustration, despair, and resignation that students in R courses experience when
they encounter a perplexing problem in R, whether it be packages that refuse to install, functions that yield inscrutable
error messages, or code that runs perfectly on a neighboring computer but stubbornly refuses to run on yours. We can
use the rnorm function to simulate the number of instances of this experience over the course of a semester-long R
class.
More specifically, we will use rnorm to simulate the data we might collect in surveying the number of instances of
“[REDACTED], it won’t work!” that Mac and PC users might encounter over the course of the first and second half of a
semester-long R course. Generally, when simulating data, we either [WHAT GOES HERE??? A WORD OR PHRASE IS
MISSING] on known population parameters or on theoretically driven assumptions regarding the population parameters.
The data I will generate are based on the following assumptions (derived from informal observation of my R class)
regarding what observations would look like:
1. Instances of “[REDACTED], it won’t work!” encountered during R use may be caused either by user
error/unfamiliarity with the R program or by R program bugs/compatibility issues.
2. As students become more familiar with the R program, user error decreases, leading to fewer instances of
“[REDACTED], it won’t work!” stemming from user error for both Mac and PC users in 2nd half of semester
compared to 1st half.
3. R studio is better-optimized for PC than for Mac, leading to more instances of “[REDACTED], it won’t work!”
caused by program errors and compatibility issues for Mac users than for PC users.
Based on these assumptions, given instances of “[REDACTED], it won’t work!” as the dependent variable, I would
expect to observe a main effect of Time (more instances in 1st half than 2nd half of semester) and of User Type (more
instances for Mac users than PC users). Let’s use the rnorm function to simulate this pattern of results. Note that other
factors that might influence the dependent variable, such as individual R proficiency and psychological effects of R
course professors frequently disparaging Macs, are not modeled here.
set.seed(103)
MacUsers1stHalf <- rnorm(100, mean = 500, sd = 35)
PCUsers1stHalf <- rnorm(100, mean = 450, sd = 35)
MacUsers2ndHalf <-rnorm(100, mean = 150, sd = 35)
PCUsers2ndHalf <- rnorm (100, mean = 100, sd=35)
As you see in the script above, I set the averages to simulate the hypothesized pattern of results. As I had no predictions
regarding the distribution of data, I have no strong theoretical rationale for setting a standard deviation of 35. However,
keeping the default standard deviation value of 1 would have yielded unnatural-looking simulated data as the
https://ademos.people.uic.edu/Chapter7.html#31_a_examples_of_simple_replication_of_individual_values_and_vectors 4/16
6/11/2019 Chapter 7: Sampling and Replication
keeping the default standard deviation value of 1 would have yielded unnatural looking simulated data, as the
distribution of data would have been too tightly clustered around the mean. I used the set.seed function to ensure that
the same values will be generated each time this code is run. Again, why not just use the object like you did with
rnorm.example? Why always use set.seed? If you give the explanation before this mention of it, I wouldn’t be
questioning it down here.La siguiente sección discute la función rep. Una vez que hayamos aprendido los conceptos
básicos de la función rep, podremos hacer más con las observaciones que hemos simulado.
```rep(x, ...)```
Donde "x" es el valor a replicar o el vector que contiene valores a replicar, y "..." denota argumentos adicionales, como
"times =" (que especifica el número de veces que se replicará "x"), "each = "(Que especifica el número de veces que se
repetirá cada elemento de" x ") y" len = "(que especifica la longitud deseada de un vector de salida). A continuación,
repaso algunos ejemplos muy básicos de cada uno de estos usos de la función rep.
rep(5, 10)
## [1] 5 5 5 5 5 5 5 5 5 5
Como puede ver arriba, al ingresar un valor n tal que la sintaxis lea "rep (x, n)" tiene el mismo significado que la sintaxis
"rep (x, times = n)". Además de los valores individuales, también podemos replicar una etiqueta de texto de la misma
manera:
## [1] "Kitty Cat" "Kitty Cat" "Kitty Cat" "Kitty Cat" "Kitty Cat"
## [6] "Kitty Cat" "Kitty Cat" "Kitty Cat" "Kitty Cat" "Kitty Cat"
Un posible uso para replicar valores individuales o etiquetas de texto es llenar columnas para datos continuos o
categóricos en un marco de datos. Exploro este uso en la sección 5.2 B a continuación.
Además de replicar texto individual o valores numéricos, la función rep se usa comúnmente para replicar (elementos
dentro) de vectores. A continuación, creo un vector simple de siete valores numéricos y luego repito ese vector, como un
todo, 3 veces.
ExampleRepVector<-c(1,2,5,7,7,8,10)
rep(ExampleRepVector, 3)
## [1] 1 2 5 7 7 8 10 1 2 5 7 7 8 10 1 2 5 7 7 8 10
También podemos replicar cada elemento de este vector un número determinado de veces. A continuación, primero
replico cada elemento del vector dos veces. A continuación, reproduzco cada elemento dos veces, al tiempo que replica
el vector como un todo (con cada elemento presente dos veces) tres veces.
https://ademos.people.uic.edu/Chapter7.html#31_a_examples_of_simple_replication_of_individual_values_and_vectors 5/16
6/11/2019 Chapter 7: Sampling and Replication
rep(ExampleRepVector, each=2)
## [1] 1 1 2 2 5 5 7 7 7 7 8 8 10 10
## [1] 1 1 2 2 5 5 7 7 7 7 8 8 10 10 1 1 2 2 5 5 7 7 7
## [24] 7 8 8 10 10 1 1 2 2 5 5 7 7 7 7 8 8 10 10
Finalmente, veamos qué sucede cuando especificamos un vector de salida de una longitud diferente al número de
términos en el vector original (7):
20 términos:
rep(ExampleRepVector, len=20)
## [1] 1 2 5 7 7 8 10 1 2 5 7 7 8 10 1 2 5 7 7 8
5 términos:
rep(ExampleRepVector, len=5)
## [1] 1 2 5 7 7
Cuando sale a un vector más largo que el vector original, el vector original se replica hasta que el vector de salida se
haya llenado. En nuestro caso, llenar el vector de salida de 20 términos requiere que el vector original se repita dos
veces, con una tercera replicación incompleta de solo los primeros seis términos.
Cuando se envía a un vector más corto que el vector original, el vector de salida se llena antes de que todos los valores
del vector original puedan replicarse. En nuestro caso, el vector original tiene 7 valores y el vector de salida solo tiene
espacio para 5, por lo que los últimos 2 valores no se replican.
https://ademos.people.uic.edu/Chapter7.html#31_a_examples_of_simple_replication_of_individual_values_and_vectors 6/16
6/11/2019 Chapter 7: Sampling and Replication
n.MacUsers=100
n.PCUsers=100
N=n.MacUsers + n.PCUsers
)
)
El uso de la función rep para denotar a qué nivel de los sujetos IV dentro y entre sujetos con los que se asocia cada
punto de datos, como en la sintaxis del marco de datos anterior, nos permite ver qué valores corresponden a usuarios
de Mac y usuarios de PC, y al primer La mitad y la segunda mitad del semestre. Hagamos una tabla de estos datos.
Como hay un total de 400 columnas en la tabla completa, usaré la función head () para mostrar solo las primeras
columnas. Usaré la función kable en el paquete knitr para producir esta tabla; Puede encontrar más documentación y
ayuda para este paquete en la siguiente URL: http://yihui.name/knitr/ (http://yihui.name/knitr/)
knitr::kable(head(SimulatedData))
Esta tabla podría interpretarse más fácilmente si los dos niveles de Tiempo, 1. ° tiempo y 2. ° tiempo, estuvieran
representados en columnas separadas. Podemos usar la función dcast () (parte del paquete "reshape2") para cambiar la
estructura del marco de datos y luego crear una nueva tabla. A continuación, utilizo la función dcast para reestructurar el
marco de datos dividiendo el tiempo variable en dos columnas correspondientes a los 2 niveles de la variable: Primera
mitad y Segunda mitad. Nuevamente, uso la función head () para mostrar solo las primeras columnas de una tabla que
tiene 200 columnas en total. Puede encontrar más documentación y ayuda con el paquete Reshape 2 en la siguiente
URL: http://seananderson.ca/2013/10/19/reshape.html (http://seananderson.ca/2013/10/19/reshape.html)
https://ademos.people.uic.edu/Chapter7.html#31_a_examples_of_simple_replication_of_individual_values_and_vectors 7/16
6/11/2019 Chapter 7: Sampling and Replication
6 Usuario
Tema Tipo de de Mac
usuario 495.7846
1er tiempo 138.1905
2da mitad
Como puede ver, la variable "Tiempo" ahora se ha dividido en dos columnas, "1er tiempo" y "2do tiempo". Para ver la
tabla completa, con o sin división, vea el objeto en el Entorno global.
4 La función de muestra
En esta sección, presentaré la función de muestra, proporcionaré ejemplos de uso básico y analizaré el muestreo con y
sin reemplazo y bootstrapping. La función de muestra se usa más comúnmente para tomar una muestra de los
elementos de un vector, lo que se puede hacer con o sin reemplazo. La función de muestra utiliza la siguiente sintaxis y
argumentos:
Donde "x" es un vector de elementos para elegir, "tamaño" es el número de elementos a muestrear y "reemplazar =" se
puede configurar como "VERDADERO" o "FALSO" dependiendo de si desea muestrear con o sin reemplazo Especificar
replace = “TRUE” se muestra con reemplazo, mientras que especificar replace = “FALSE” se muestreará sin reemplazo.
A continuación, repaso los usos básicos de la función "muestra" para muestrear con y sin reemplazo.
ExampleSampleVector<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)
sample(ExampleSampleVector,15,replace = FALSE)
## [1] 18 4 6 8 3 13 14 5 10 12 15 16 9 20 7
Como puede ver, así como no apareció ningún valor en el vector original más de una vez, no aparece ningún valor en
nuestra muestra más de una vez. El muestreo sin reemplazo significa que una vez que se ha muestreado un valor, se
"elimina" del vector original y no se puede volver a muestrear al azar.
Esta vez, es probable que haya al menos un valor duplicado en nuestra muestra. El muestreo con reemplazo significa
que los valores muestreados se “reemplazan” en el vector original y, por lo tanto, se pueden muestrear aleatoriamente
nuevamente.
## [1] 4 14 11 3 16 15 2 18 6 7 12 17 13 19 9
https://ademos.people.uic.edu/Chapter7.html#31_a_examples_of_simple_replication_of_individual_values_and_vectors 8/16
6/11/2019 Chapter 7: Sampling and Replication
## [1] 4 14 11 3 16 15 2 18 6 7 12 17 13 19 9
Como puede ver, los dos conjuntos muestreados son idénticos, gracias a la función set.seed. Puedo usar esta semilla
para recuperar este conjunto particular de quince valores muestreados si quiero usarlos en el futuro.
replicate(n, expr)
Donde n es el número de réplicas deseadas y "expr" es la expresión a replicar, generalmente un objeto ya ingresado en
el entorno global.
El boostrapping se usa a menudo al tomar muestras de una población distribuida normalmente. Aquí, analizo muestras
de muestreo y bootstrapping de un conjunto más amplio de observaciones. En la siguiente sección, 5.4, analizo el
muestreo de una población en el contexto de la demostración de la Ley de los grandes números.
Muestreemos diez valores de nuestros datos correspondientes a los usuarios de Mac en la primera mitad del semestre,
y comparemos la media de esa muestra con la media del conjunto de datos que se está muestreando:
mean(MacUsers1stHalf)
## [1] 500.3287
set.seed(14)
MacUsersSample.1<- sample(MacUsers1stHalf, 10)
MacUsersSample.1
mean(MacUsersSample.1)
## [1] 485.5752
Una muestra aleatoria de diez valores no siempre es representativa del conjunto más grande del que se extrae. En este
caso, hemos muestreado al azar diez valores de los 100 valores que representan el número de instancias de "
[ELIMINADO], ¡no funcionará!" De 100 usuarios de Mac durante la primera mitad del semestre. Sabemos que el número
promedio de instancias para este grupo es 500.33, pero el promedio de nuestros diez valores muestreados es
aproximadamente 486. Podemos mejorar la precisión de la estimación promedio obtenida a través del muestreo
utilizando bootstrapping.
set.seed(993)
TenSampleBootstrapNR<-replicate(10, sample(MacUsers1stHalf, 10, replace = FALSE))
TenSampleBootstrapNR
https://ademos.people.uic.edu/Chapter7.html#31_a_examples_of_simple_replication_of_individual_values_and_vectors 9/16
6/11/2019 Chapter 7: Sampling and Replication
mean(MeanTenSampleBootstrapNR)
## [1] 496.0535
Si se toman 10 muestras de diez valores, sin reemplazo, cada una arroja un promedio de aproximadamente 496, una
mejora. Probemos lo mismo para el muestreo con reemplazo:
set.seed(82)
TenSampleBoostrapWR<-replicate(10, sample(MacUsers1stHalf,10,replace = TRUE))
TenSampleBoostrapWR
https://ademos.people.uic.edu/Chapter7.html#31_a_examples_of_simple_replication_of_individual_values_and_vectors 10/16
6/11/2019 Chapter 7: Sampling and Replication
mean(MeanTenSampleBootstrapWR)
## [1] 499.0365
Aquí, nuestra media es aproximadamente 499. Nuevamente, esta es una mejora con respecto a tomar solo una muestra.
Sin embargo, podemos garantizar estimaciones cada vez más precisas de la media tomando incluso más muestras de
arranque, como se ve en el siguiente ejemplo.
Ahora, intentemos estimar la media en base a 100 muestras de arranque de diez observaciones cada una, primero sin y
luego con reemplazo:
set.seed(90)
HundredSampleBootstrapNR<-replicate(100, sample(MacUsers1stHalf, 10, replace = FALSE))
MeanHundredSampleBootsrapNR<-replicate(100, mean(sample(MacUsers1stHalf, 10, replace = FALSE))
)
MeanHundredSampleBootsrapNR
https://ademos.people.uic.edu/Chapter7.html#31_a_examples_of_simple_replication_of_individual_values_and_vectors 11/16
6/11/2019 Chapter 7: Sampling and Replication
mean(MeanHundredSampleBootsrapNR)
## [1] 499.7513
set.seed(92)
HundredSampleBootstrapWR<-replicate(100, sample(MacUsers1stHalf, 10, replace = TRUE))
MeanHundredSampleBootstrapWR<-replicate(100, mean(sample(MacUsers1stHalf, 10, replace = TRUE))
)
MeanHundredSampleBootstrapWR
mean(MeanHundredSampleBootstrapWR)
## [1] 499.2443
Tomar 100 muestras bootstrapped mejora aún más nuestra estimación de la media del grupo del que estamos tomando
muestras. Ahora, nuestra media está muy cerca de 500, el verdadero valor. Cuanto mayor sea el tamaño de la población
de la muestra, menor será la diferencia entre el muestreo con y sin reemplazo. En nuestro caso, dado que había 100
valores en el grupo de los que se tomaban muestras y tomamos muestras de diez valores a la vez, no hizo una gran
diferencia si tomamos muestras con o sin reemplazo.
Dado que la función rnorm genera una muestra de un número específico de valores a partir de una distribución
hipotética normal con una desviación estándar y media especificada por el usuario, las simulaciones de arranque a
menudo también se realizan utilizando la función rnorm.
https://ademos.people.uic.edu/Chapter7.html#31_a_examples_of_simple_replication_of_individual_values_and_vectors 12/16
6/11/2019 Chapter 7: Sampling and Replication
La Ley de Grandes Números establece que a medida que aumenta el número de observaciones en una muestra
aleatoria dada de la población, la media de esa muestra se aproxima al verdadero valor medio de la población.
Se puede hacer un simple corolario al acto de lanzar una moneda. Sabemos que la tasa real de cada resultado, cara o
cruz, es 0.5. Sin embargo, si lanzamos una moneda cinco veces, podríamos obtener fácilmente un resultado de cuatro
caras y 1 cruz, produciendo una tasa de 0.8 para caras y 0.2 para colas. En este caso, la media estimada a partir de una
muestra de cinco sería muy inexacta. Sin embargo, si lanzamos una moneda mil veces, es prácticamente imposible
obtener una estimación tan inexacta de la tasa real de cada resultado. Lanzar una moneda mil veces produciría una tasa
muy cercana a 0.5 tanto para cara como para cruz.
Demostremos la Ley de Números Grandes en R. Para comenzar, necesitamos establecer una población de la cual tomar
muestras. Elegí usar la distribución de las alturas de los hombres japoneses como mi población, ya que Japón era el
país más destacado para el que podía encontrar una desviación estándar y media para la altura (ver
http://www.mext.go.jp/ b_menu / toukei / 001/022/2004 / 002.pdf
(http://www.mext.go.jp/b_menu/toukei/001/022/2004/002.pdf) ). A continuación, introduzco la media de la población,
172 centímetros, como un objeto "mu", y la desviación estándar, 5,42 centímetros, como un objeto "sigma". Mu es la
letra griega utilizada para denotar la media de la población y sigma es la letra griega utilizada para denotar la desviación
estándar de la población
mu = 172
sigma = 5.42
Para demostrar la Ley de los grandes números, tomaré muestras de esta población 50 veces, y el número de
observaciones por muestra aumentará de 1 a 50 en incrementos de uno. Una vez que se hayan recolectado todas las
muestras, trazaré el promedio de cada muestra para observar si la distribución de medias cambia a medida que
aumenta el número de muestras.
Primero, crearé un vector vacío de longitud 50, que eventualmente se completará por medio de mis 50 muestras:
Al verificar el vector, podemos ver que actualmente está poblado por 50 ceros:
Vector_of_Means
## [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [36] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
A continuación, necesito comenzar a poblar el vector. Construiré el vector de modo que el primer valor sea la media de
una muestra de 1 observación, el segundo valor será la media de una muestra de 2 observaciones, etc., hasta el valor
50, que es la media de Una muestra de 50 observaciones. Para comenzar, necesito tomar una muestra de uno,
encontrar la media e ingresar la media en el vector de promedios. Combino estos pasos en una de las siguientes
https://ademos.people.uic.edu/Chapter7.html#31_a_examples_of_simple_replication_of_individual_values_and_vectors 13/16
6/11/2019 Chapter 7: Sampling and Replication
funciones:
Vector_of_Means[1]<-mean(rnorm(1,mean=mu,sd=sigma))
Ahora, tengo que repetir el proceso para muestras de 2 a 50 valores para llenar el segundo a través de la ranura 50 en el
vector. Para hacer esto, podría escribir 49 expresiones más como la anterior, pero una solución más elegante es usar un
bucle "for" para lograr lo mismo. Para obtener ayuda con la comprensión de los diferentes tipos de bucles en R,
consulte el Capítulo 3: Bucles y lógicos . En el siguiente ciclo, estoy especificando que para un valor de i de 2 a 50 (la
longitud del vector), el i-ésimo valor del vector debería ser la media de una muestra de valores de i, con la media y la sd
establecidas previamente :
for (i in 2:length(Vector_of_Means)) {
Vector_of_Means[i] <- mean(rnorm(i, mean=mu, sd=sigma))
}
Al verificar el vector, podemos ver que ahora está poblado por los 50 valores que hemos generado:
Vector_of_Means
Finalmente, creo un diagrama de dispersión de las medias, con Tamaño de muestra en el eje xy Centímetros en el eje Y.
La línea azul indica la media real de la población, 172 centímetros. Para obtener ayuda con gráficos y diagramas de
dispersión, consulte el Capítulo 10: GGplot 1 (Diagramas de dispersión y densidad) .
https://ademos.people.uic.edu/Chapter7.html#31_a_examples_of_simple_replication_of_individual_values_and_vectors 14/16
6/11/2019 Chapter 7: Sampling and Replication
A partir del diagrama de dispersión, está claro que la distribución de puntos (medias de muestra) se agrupa cada vez
más cerca de la media real de la población a medida que aumenta el tamaño de la muestra, lo que demuestra la Ley de
los grandes números. El aumento del tamaño de la muestra continuaría esta tendencia.
La función rpois () se puede usar para simular una distribución de Poisson en R usando la siguiente sintaxis:
```rpois(n, lambda)```
Donde n es el número de números de Poisson aleatorios que se generarán y lambda es el parámetro de velocidad
mencionado anteriormente de la distribución.
Simulemos una distribución de Poisson para un escenario del mundo real. Podemos utilizar una distribución de Poisson
para simular la cantidad de correos electrónicos que recibe un estudiante de posgrado de psicología de la UIC cada día
(incluido UIC MASSMAIL) durante un período de 100 días. Debido a que la probabilidad de cada correo electrónico
recibido suele ser independiente de los correos electrónicos anteriores recibidos, una distribución de Poisson es una
buena opción para modelar estos datos. Simulemos los datos de un estudiante típico durante 100 días, suponiendo una
tasa promedio de 30 correos electrónicos por día (lambda = 30):
PoissonEmails<-rpois(100, 30)
The plot above shows the simulated data representing the number of emails received each day over the 100 day period.
The blue line represents the average rate of 30 which I set for this distribution. As expected, data points for specific days
fall both above and below this specified average daily rate.
https://ademos.people.uic.edu/Chapter7.html#31_a_examples_of_simple_replication_of_individual_values_and_vectors 16/16