Reglas generales:

  • Debe entregarse a mas tardar el 29 de mayo

  • Use fragmentos de código y subtítulos para cada ejercicio

  • El código debe ser comentado y debe seguir las pautas de organización del código aprendidas en el curso


Esta asignación profundiza en métodos estadísticos alternativos, comparando su robustez, potencia y rendimiento con los enfoques convencionales.

Para esto, simulameros 4 conjuntos de datos que se utilizarán para los ejercicios siguientes. Los conjuntos de datos simulados representan el valor de un rasgo en diferentes poblaciones. Cada población está compuesta por 1000 individuos. Extraeremos muestras de estas poblaciones para ejecutar estadísticas.

Los primeros 2 conjuntos de datos siguen una distribución normal, pero con diferentes promedios (use set.seed para asegurarse de que todos simulemos los mismos datos):

set.seed(15)
pob.nrm.1 <- rnorm(n = 1000, mean = 20, sd = 3)

set.seed(25)
pob.nrm.2 <- rnorm(n = 1000, mean = 30, sd = 3)

 

Los otros 2 conjuntos de datos comparten el mismo rango de valores que los anteriores, pero en este caso siguen una distribución uniforme (generados con la función runif() en vez de rnorm()):

set.seed(5)
pob.unf.3 <- runif(n = 1000, min = min(pob.nrm.1), max = max(pob.nrm.1))

set.seed(51)
pob.unf.4 <- runif(n = 1000, min = min(pob.nrm.2), max = max(pob.nrm.2))

 


ejercicio 1


1.1 Cree histogramas con ggplot2 para explorar la distribución de cada conjunto de datos. Debe crear un grafico aparte para cada 1 de los 4 juegos de datos simulados. Recuerde, ggplot2 toma datos organizados en un cuadro de datos (data.frame).


1.2 Cree un solo gráfico con ggplot2 con los 4 histogramas en el mismo gráfico. Utilice la transparencia para mejorar la visualización de todos los histogramas. Recuerde que se deben poner todos los datos juntos en un mismo cuadro de datos.


1.3 Cree un solo gráfico con múlitples páneles (uno para cada variable) usando los mismos datos que en 1.2


 

Métodos estadísticos alternativos

Existen varias herramientas estadísticas para examinar si un solo rasgo continuo difiere entre 2 poblaciones. Probablemente la más común es el la t de Student. En clase también aprendimos sobre alternativas poderosas que ayudan a relajar algunos de los supuestos.

Pero primero, supongamos que medimos 20 individuos de cada población. Esto se puede simular de la siguiente manera:

# 1
set.seed(120)
muestra_1 <- sample(pob.nrm.1, 20)

# 2
set.seed(14)
muestra_2 <- sample(pob.nrm.2, 20)

 

Ahora podemos comparar los valores de los rasgos entre la población. Podemos usar la prueba t para esto:

t.test(muestra_1, muestra_2)
## 
##  Welch Two Sample t-test
## 
## data:  muestra_1 and muestra_2
## t = -10, df = 38, p-value = 1e-12
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -11.2  -7.6
## sample estimates:
## mean of x mean of y 
##      20.4      29.9

 

En el ejemplo anterior podemos ver que hay una diferencia estadísticamente significativa entre las 2 poblaciones (los intervalos de confianza no incluyen 0 y el valor p es menor que 0.05). Por supuesto, esto no es sorprendente en absoluto: simulamos los datos utilizando diferentes promedios.


Ejercicio 2


2.1 Utilice una prueba estadística no paramétrica para comparar los valores promedios de los rasgos entre las variables muestra_1 y muestra_2 (análoga a la prueba t anterior)


Falsos positivos: error tipo I

Esperamos que nuestras herramientas estadísticas no encuentren diferencias entre muestras seleccionadas al azar que pertenecen a la misma población. Por ejemplo:

set.seed(11)
m3 <- sample(pob.nrm.1, 20)

# sample 2
set.seed(14)
m4 <- sample(pob.nrm.1, 20)

#  t-test
t.test(m3, m4)
## 
##  Welch Two Sample t-test
## 
## data:  m3 and m4
## t = -2, df = 36, p-value = 0.1
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -3.903  0.373
## sample estimates:
## mean of x mean of y 
##      18.8      20.6

 

Sin embargo, existe cierto margen de error, definido por alfa, que determina la proporción de falsos positivos que serían aceptados. Un falso positivo puede ocurrir por casualidad cuando las muestras no son realmente representativas de toda la población. Por ejemplo, el siguiente código toma 2 muestras seleccionadas al azar de la misma población que muestran una diferencia estadísticamente significativa entre sus promedios:

# sample 1
set.seed(111)
m5 <- sample(pob.nrm.1, 20)

# sample 2
set.seed(14)
m6 <- sample(pob.nrm.1, 20)

# t-test
t.test(m5, m6)
## 
##  Welch Two Sample t-test
## 
## data:  m5 and m6
## t = -2, df = 38, p-value = 0.04
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -3.996 -0.142
## sample estimates:
## mean of x mean of y 
##      18.5      20.6

 

Un alfa de 0,05 se utiliza normalmente en las ciencias naturales. Esto significa que estamos de acuerdo con tener un 5% de falsos positivos en nuestros análisis. Como probablemente sepa, en la jerga estadística esto se denomina “error tipo I”.


Ejercicio 3


3.1 Calcule la proporción de falsos positivos producidos al ejecutar 1000 pruebas t utilizando 2 conjuntos de datos generados aleatoriamente (e independientemente) de 20 individuos cada uno, tomados de pob.nrm.1 (pista: use un bucle con un numero fijo de iteraciones) (Note que falsos positivos fue definido mas arriba como el numero de pruebas que van encontrar un resultado significativo cuando no lo hay)


3.2 Haga el mismo cálculo que en 3.1 pero esta vez en la prueba no paramétrica utilizada en 2.1



Información de la sesión

## R version 4.0.5 (2021-03-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 20.04.2 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0
## 
## locale:
##  [1] LC_CTYPE=pt_BR.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=es_CR.UTF-8        LC_COLLATE=pt_BR.UTF-8    
##  [5] LC_MONETARY=es_CR.UTF-8    LC_MESSAGES=pt_BR.UTF-8   
##  [7] LC_PAPER=es_CR.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=es_CR.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] ggplot2_3.3.3
## 
## loaded via a namespace (and not attached):
##  [1] knitr_1.33        magrittr_2.0.1    munsell_0.5.0     colorspace_2.0-1 
##  [5] R6_2.5.0          rlang_0.4.11      fansi_0.4.2       stringr_1.4.0    
##  [9] tools_4.0.5       grid_4.0.5        gtable_0.3.0      xfun_0.23        
## [13] utf8_1.2.1        withr_2.4.2       htmltools_0.5.1.1 ellipsis_0.3.2   
## [17] yaml_2.2.1        digest_0.6.27     tibble_3.1.2      lifecycle_1.0.0  
## [21] crayon_1.4.1      vctrs_0.3.8       glue_1.4.2        evaluate_0.14    
## [25] rmarkdown_2.8     stringi_1.6.2     compiler_4.0.5    pillar_1.6.1     
## [29] scales_1.1.1      pkgconfig_2.0.3