Muestreo para inferencia estadística.

En la referencia estadística se conoce como muestreo a la técnica para la selección de una muestra a partir de una población estadística.

Al elegir una muestra aleatoria se espera conseguir que sus propiedades sean extrapolables a la población. Este proceso permite ahorrar recursos, y a la vez obtener resultados parecidos a los que se alcanzarían si se realizase un estudio de toda la población. En las investigaciones llevadas por empresarios y de la medicina se usa muestreo extensivamente en recoger información sobre poblaciones.

Cabe mencionar que para que el muestreo sea válido y se pueda realizar un estudio adecuado (que consienta no solo hacer estimaciones de la población sino estimar también los márgenes de error correspondientes a dichas estimaciones), debe cumplir ciertos requisitos. Nunca podremos estar enteramente seguros de que el resultado sea una muestra representativa, pero sí podemos actuar de manera que esta condición se alcance con una probabilidad alta.

En el muestreo, si el tamaño de la muestra es más pequeño que el tamaño de la población, se puede extraer dos o más muestras de la misma población. Al conjunto de muestras que se pueden obtener de la población se denomina espacio muestral. La variable que asocia a cada muestra su probabilidad de extracción, sigue la llamada distribución muestral.

Muestreo aleatorio simple.

Para lo cual usaremos datos de crímenes

crime <- data.frame(crimtab)

Para conocer las dimensiones

dim(crime)
## [1] 924   3

Seleccióm de la muestra * Muestreo Aleatorio Simple (M.A.S.) Tomar una muestra de 30 de la población.

n <- 30
muestramia <- sample(1:nrow(crime), size=n, replace = FALSE)
muestramia
##  [1] 594 848 599  70 346 698 418 673 693 467 182 771 818 232 654 904 637 342 612
## [20]  37 581 118   1 754 477 211 831  18 543 719

Asignar los elementos de la muestra al marco de datos

crimemuestramia <- crime[muestramia, ]
head(crimemuestramia)
##     Var1   Var2 Freq
## 594  9.9  177.8    0
## 848 10.1 193.04    0
## 599 10.4  177.8    0
## 70  12.1 144.78    0
## 346 10.3 162.56    0
## 698 11.9 182.88    1

Ahora usamos tidyverse

library(tidyverse)
## -- Attaching packages --------------------------------------------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.1     v purrr   0.3.4
## v tibble  3.0.1     v dplyr   1.0.0
## v tidyr   1.1.0     v stringr 1.4.0
## v readr   1.3.1     v forcats 0.5.0
## -- Conflicts ------------------------------------------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
#Muestra sin remplazo
crimemuestramia2 <- crime %>%
  sample_n(size = n, replace = FALSE)
head(crimemuestramia2)
##   Var1   Var2 Freq
## 1 12.3 154.94    0
## 2 10.6 172.72    0
## 3 12.5  165.1    1
## 4 11.3  190.5    0
## 5 13.3 144.78    0
## 6 11.1 170.18    7

Muestreo ponderado (pesos)

crimemuestramia3 <- crime %>%
  sample_n(size = n, weight = Freq)

head(crimemuestramia3)
##   Var1   Var2 Freq
## 1 11.6 154.94    1
## 2 10.6 154.94    5
## 3 11.9  165.1   27
## 4 11.8 160.02   11
## 5 10.9 157.48   14
## 6   12  165.1   19
crimenes <- data.frame(crimtab)
n <- 50
crime <- sample(1:nrow(crimenes), size=n, replace=FALSE  )
crime
##  [1] 270 268 573 384 571 893 141 901 765 301  52 906 124 304 875 178 684  19 689
## [20] 555 377 565 472  78 107 803 648 271  45 747 355 211 184  42 205 220 102 721
## [39] 247 238 325 471 216  28  18 487 125 326 264 535
crimes <- crimenes[crime,]
head(crimes)
##     Var1   Var2 Freq
## 270 11.1 157.48   22
## 268 10.9 157.48   14
## 573   12 175.26   16
## 384  9.9  165.1    0
## 571 11.8 175.26   10
## 893 10.4 195.58    0
library(dplyr)
crime.pesos <- crimenes %>%
  sample_frac(0.04)
head(crime.pesos); dim(crime.pesos)
##   Var1   Var2 Freq
## 1 12.4 160.02    1
## 2 12.1  190.5    0
## 3  9.4 180.34    0
## 4  9.8 195.58    0
## 5  9.9 157.48    1
## 6 12.6 162.56    0
## [1] 37  3

Muestreo usando la bases de datos de Iris

Para conocer las dimensiones de estos datos se usa “dim”

dim(iris)
## [1] 150   5

*Para conocer los primeros elementos de la base de datos:

head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa
levels(as.factor(iris$Species))
## [1] "setosa"     "versicolor" "virginica"
lirios <- iris
lirios$id <- 1:150
lirios[1:5, 4:6]
##   Petal.Width Species id
## 1         0.2  setosa  1
## 2         0.2  setosa  2
## 3         0.2  setosa  3
## 4         0.2  setosa  4
## 5         0.2  setosa  5
set.seed(20170704)
sample(lirios$id, size = 6, replace = FALSE)
## [1] 142 125  81 101  82  41
set.seed(20170704)
sample(lirios$id, size = 30, replace = TRUE)
##  [1] 142 125  81 101  82  41  80 110 131 116  62  56  92  28 125  59 102  23  76
## [20]  23  49  75 149  98  56  72 135  69  57 101
set.seed(20170701)
x <- 1:7 ; x
## [1] 1 2 3 4 5 6 7
sample(x, size = 6,
       replace = FALSE)
## [1] 7 1 6 3 4 5
set.seed(1)
sample_iris <- iris %>%
  group_by(Species) %>%
  sample_n(10)

sample_iris
## # A tibble: 30 x 5
## # Groups:   Species [3]
##    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
##           <dbl>       <dbl>        <dbl>       <dbl> <fct>  
##  1          4.6         3.1          1.5         0.2 setosa 
##  2          4.4         3            1.3         0.2 setosa 
##  3          5.1         3.5          1.4         0.2 setosa 
##  4          5.5         4.2          1.4         0.2 setosa 
##  5          4.6         3.6          1           0.2 setosa 
##  6          4.4         3.2          1.3         0.2 setosa 
##  7          4.3         3            1.1         0.1 setosa 
##  8          5.1         3.5          1.4         0.3 setosa 
##  9          5.2         4.1          1.5         0.1 setosa 
## 10          5.4         3.4          1.7         0.2 setosa 
## # ... with 20 more rows
setwd("~/PROBABILIDAD Y ESTADISTICA 2020")
library(readxl)
datos <- read_excel("busquedas.xlsx")

boxplot(datos$cubrebocas ~ datos$covid, col="pink" )

cor(datos)
##            cubrebocas     covid
## cubrebocas  1.0000000 0.8818728
## covid       0.8818728 1.0000000
pairs(datos)

* Prueba de normalidad de shapiro-wilk

shapiro.test(datos$covid)
## 
##  Shapiro-Wilk normality test
## 
## data:  datos$covid
## W = 0.65431, p-value = 8.358e-10
shapiro.test(datos$cubrebocas)
## 
##  Shapiro-Wilk normality test
## 
## data:  datos$cubrebocas
## W = 0.70283, p-value = 5.867e-09
hist(datos$covid)

*Se rechaza la hipótesis nula dado que los datos no son normales

TAREA U3A2

setwd("~/PROBABILIDAD Y ESTADISTICA 2020")
library(readxl)
datos <- read_excel("busqueda.xlsx")
boxplot(datos$Halloween ~ datos$Disfraz, col="blue")

cor(datos)
##           Halloween   Disfraz
## Halloween 1.0000000 0.9924903
## Disfraz   0.9924903 1.0000000
pairs(datos)

* Prueba de normalidad de shapiro-wilk

shapiro.test(datos$Disfraz)
## 
##  Shapiro-Wilk normality test
## 
## data:  datos$Disfraz
## W = 0.41166, p-value = 3.932e-13
shapiro.test(datos$Halloween)
## 
##  Shapiro-Wilk normality test
## 
## data:  datos$Halloween
## W = 0.37257, p-value = 1.428e-13
hist(datos$Halloween, col="green")

hist(datos$Disfraz, col="light blue")