Tamaño de muestra mínimo necesario para estimar una proporción en muestreo aleatorio simple. Muestreo Aleatorio simple Se usa solo para un estrato. \[n=\frac{Np(1-p)}{(N-1)\left(\frac{e}{z}\right)^{2}+p(1-p)}\]

#Muestreo
#Tamaño mínimo de cuadros que deben ser seleccionados para estimar la prevalencia de una enfermedad.
#Se parte que hay 600 cuadros (N)
N=600
#p es la prevalencia que se quiere estimar. se puede asumir un 50% o buscar una prevalencia de referencia con base en otros estudios. Ej: Prevalencia de alguna enfermedad
p=0.5
#e=Error de muestreo = |p-k|, se estima entonces el 10% (entre 0 y 10%) Si el error es cero n=N
#z=puntuación de la curva normal para un nivel de confianza de 95% y es 1.96 para 95%, es 1.90 para 90%
e=0.1
#z=1.96 (Confianza 95%)
z=1.64
#Confianza 90%
#Muestra para muestreo aleatorio simple
f_n_MAS=function(N,p,e,z){N*p*(1-p)/((N-1)*(e/z)^2+p*(1-p))}
n=N*p*(1-p)/((N-1)*(e/z)^2+p*(1-p))
n=ceiling(n)
n
## [1] 61
n_muestra=f_n_MAS(N = 600,p = 0.25,e = 0.1,z = 1.64)
n_muestra
## [1] 46.59163
set.seed(123)
cuadros_muestra=sample(600,n_muestra,F)
cuadros_muestra
##  [1] 415 463 179 526 195 118 299 229 244  14 374  91 348 355  26 519 426 211 555
## [20] 373 143 544 490  23 309 135 224 166 217 290  72 141 153 294 277 599  41 431
## [39]  90 316 223 528 116 456  39 159

Clase 27-Abr-23 Muestreo estratificado Se va a estimar PROPORCIÓN de artículos defectuososo en una línea de producción. * semanalmente se elaboran 2000 artículos. * Esta empresa trabaja 24 horas y cambia de operarios en 3 turnos. (Razón de estratificación). Lo que se aplique depende del turno en que se realicen. A veces las causas de estratificación pueden ser equipos, operarios. * Estimación de media / proporcion / etc.

\[n = \frac{\sum_{i=1}^L{N_i^2p_i(1-p_i)/a_i}}{N^2(e/z)^2+\sum_{i=1}^L{N_ip_i(1-p_i)}}\] pi es el porcentaje de defectuosos Ni el número de artículos ai el peso ponderado del estrato |Estrato|\(N_i\)|\(p_i\)|\(a_i\)|\(t_i\)| |——-|—- |—- |—- |—-| |Turno A|800 |0.02 |0.4 |600 | |Turno B|700 |0.03 |0.35 |480 | |Turno C|500 |0.06 |0.25 |360 | |Total |2000 | |1 | |

f_me=function(N_i,p_i,a_i,e,z){
  q_i=1-p_i
  numer=sum(N_i^2*p_i*q_i/a_i)
  denom_1=sum(N_i)^2*(e/z)^2
  denom_2=sum(N_i*p_i*q_i)
  denom=denom_1+denom_2
  n=ceiling(numer/denom)
  return(n)
}
N_i=c(800,700,500)
p_i=c(0.02,0.03,0.06)
a_i=c(0.4,0.35,0.25)

n= f_me(N_i,p_i,a_i,e=0.05,z=1.96)
f_me(N_i,p_i,a_i,e=0.10,z=1.96)
## [1] 13
#Se obtienen los tamaños de muestra
round(n*a_i)
## [1] 20 17 12

pi es el porcentaje de defectuosos Ni el número de artículos ai el peso ponderado del estrato |Estrato|\(N_i\)|\(p_i\)|\(a_i\)|\(t_i\)| |——-|—- |—- |—- |—-| |Turno A|800 |0.02 |0.4 |600 | |Turno B|700 |0.03 |0.35 |480 | |Turno C|500 |0.06 |0.25 |360 | |Total |2000 | |1 | |

f_me=function(N_i,p_i,a_i,t_i,e,z){
  q_i=1-p_i
  numer=sum(N_i^2*p_i*q_i/a_i)
  denom_1=sum(N_i)^2*(e/z)^2
  denom_2=sum(N_i*p_i*q_i)
  denom=denom_1+denom_2
  n=ceiling(numer/denom)
  return(n)
}
N_i=c(800,700,500)
p_i=c(0.02,0.03,0.06)
a_i=c(0.4,0.35,0.25)
t_i=c(600,480,360)

n= f_me(N_i,p_i,a_i,e=0.05,z=1.96)
f_me(N_i,p_i,a_i,e=0.10,z=1.96)
## [1] 13
#Se obtienen los tamaños de muestra
n_i=round(n*a_i)

Como seleccionar las muestras de cada turno usando muestreo sistemático

t_i/n_i
## [1] 30.00000 28.23529 30.00000

Asignación calcular el tamaño de la muestra si el costo de estratificación para ir a cada estrato es |Estrato|Costo| |++++|++++| |Turno A|$50.000| |Turno B|$70.000| |Turno C|$80.000|

Muestreo Espacial

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
xy = expand.grid(x = seq(20),
                 y = seq(20))

ggplot(xy)+
  aes(x,y)+
  geom_tile(color='white')

library(ggplot2)
xy = expand.grid(x = seq(20),
                 y = seq(20))

# 400
xy$insec = sample(
  c('SI', 'NO'),
  size = 400,
  replace = T,
  prob = c(0.1, 0.9))

ggplot(xy)+
  aes(x,y, color=insec)+
  geom_point()+
  scale_color_manual(
    values = c('green','red'))+
  geom_tile(color='black',
            fill='transparent')

  1. Muestreo aleatorio simple para estimar la proporción de cuadros con la patología
f_n_MAS = function(N, p, e, z){
  n = (N*p*(1-p))/((N-1)*(e/z)^2+(p*(1-p)))
  n = ceiling(n)
  return(n)
}


n_MAS = f_n_MAS(N = 400, p = 0.2,
                e = 0.05, z = 1.96)
n_MAS
## [1] 153
punt_muest_MAS = sample(400, n_MAS, FALSE)
xy$MAS = NA
xy$MAS[punt_muest_MAS] = 'MUEST'
ggplot(xy)+
  aes(x,y, color=insec, fill=MAS)+
  geom_tile(color='black')+
  geom_point()+
  scale_color_manual(
    values = c('green','red'))

9;10 am A conditioned Latin hypercube method for sampling in the presence of ancillary information De cada muestreo, no hay latitud o longitud que no sea muestreada.Recomendación, usar 5% de 400 cuadros. No queda latitud ni longitud sin muestear y el muestreo aleatorio no afecta tanto.

library(clhs)
## Warning: package 'clhs' was built under R version 4.2.3
set.seed(123)
n_clhs = clhs(xy[,c('x','y')], size = 20)
xy$CLHS = 'NO'
xy$CLHS[n_clhs] = 'MUEST'

ggplot(xy)+
  aes(x,y, color=insec, fill=CLHS)+
  geom_tile(color='black')+
  geom_point(size=2)+
  scale_color_manual(
    values = c('green','red'))+
  scale_fill_manual(
    values = c('blue', 'white'))

Introducción al análisis de componentes principales.

library(faux)
## Warning: package 'faux' was built under R version 4.2.3
## 
## ************
## Welcome to faux. For support and examples visit:
## https://debruine.github.io/faux/
## - Get and set global package options with: faux_options()
## ************
set.seed(123)

datos = rnorm_multi(n = 120, vars = 2,
                    mu = c(3, 7),
                    sd = c(0.3, 1.2),
                    r = 0.7,
                    varnames = c('PS', 'AF'))
ggplot(datos)+
  aes(AF,PS)+
  geom_point()+
  ggtitle(cor(datos)[1,2])

10:09 Como rotar datos Matriz de rotación wn Wikipedia

Rotar los datos hasta obtener la menor correlación

f_rot = function(datos, angulo) {
  theta = angulo * pi / 180
  mat_rot = matrix(
    c(cos(theta),-sin(theta),
      sin(theta),  cos(theta)),
    nrow = 2,
    ncol = 2,
    byrow = TRUE
  )
  
  d_rot = as.matrix(datos) %*% mat_rot
  datos_rot = data.frame(PS = d_rot[,1],
                         AF = d_rot[,2])
  
  cor_datos = cor(datos_rot$PS, datos_rot$AF)
  titulo = paste0('Angulo: ', angulo,
                  ' Cor: ', round(cor_datos, 3))
  cat(titulo, '\n')
  
  return(datos_rot)
}

f_rot(datos, 0)
## Angulo: 0 Cor: 0.61
##           PS       AF
## 1   2.854186 6.332167
## 2   3.146821 6.688406
## 3   3.439430 8.851149
## 4   3.068431 7.074969
## 5   2.645256 7.224186
## 6   3.506796 9.032636
## 7   3.050969 7.561653
## 8   2.709818 5.485590
## 9   3.050895 6.140124
## 10  2.918276 6.462794
## 11  2.965266 8.522330
## 12  2.984209 7.448490
## 13  3.078244 7.482237
## 14  3.111674 7.116917
## 15  3.305820 6.256351
## 16  3.152186 9.185657
## 17  3.411027 7.542378
## 18  2.420454 4.668948
## 19  2.755618 7.912778
## 20  3.197319 6.378804
## 21  2.623045 5.745543
## 22  3.007215 6.728729
## 23  3.104121 5.710465
## 24  3.156542 6.068981
## 25  3.197067 6.190286
## 26  2.744884 4.957055
## 27  3.484885 7.950061
## 28  2.890422 7.209744
## 29  2.317554 5.713624
## 30  3.538723 8.455600
## 31  2.928850 7.541035
## 32  2.776454 6.674914
## 33  3.124917 8.086079
## 34  3.399512 8.015448
## 35  3.202742 7.980939
## 36  3.207357 7.815455
## 37  3.003108 7.685480
## 38  3.063901 6.911782
## 39  2.730933 6.669645
## 40  2.995349 6.529617
## 41  2.631013 6.206219
## 42  3.172754 6.711293
## 43  2.987509 5.435029
## 44  2.797004 9.722966
## 45  3.348163 8.433221
## 46  2.694840 5.664106
## 47  2.780601 6.540636
## 48  2.999350 6.422153
## 49  3.061643 7.954876
## 50  2.905354 6.913836
## 51  3.099575 7.295760
## 52  2.980264 6.968208
## 53  2.997786 6.947304
## 54  2.854604 8.721305
## 55  3.104986 6.701418
## 56  3.555957 8.777794
## 57  2.656712 5.143820
## 58  3.062172 7.712832
## 59  2.936213 7.164915
## 60  3.141918 7.241822
## 61  3.302950 7.415487
## 62  2.628992 6.444856
## 63  3.000411 6.587240
## 64  2.959049 5.745863
## 65  2.816907 5.705621
## 66  3.106671 7.356666
## 67  2.866682 7.579194
## 68  2.993891 7.066750
## 69  3.043228 8.134446
## 70  3.547670 9.440185
## 71  2.849133 6.419089
## 72  2.567255 4.218179
## 73  3.198199 8.209843
## 74  3.032253 6.115812
## 75  3.123079 6.125658
## 76  2.807550 8.304950
## 77  2.813627 6.680956
## 78  2.995342 5.488950
## 79  3.166133 7.194549
## 80  3.215998 6.788975
## 81  2.544823 7.089335
## 82  2.811019 7.511306
## 83  2.974757 6.545486
## 84  3.026810 7.793236
## 85  3.038253 6.720014
## 86  3.170719 7.380092
## 87  3.401261 8.286004
## 88  3.217686 7.499674
## 89  2.586714 6.670956
## 90  3.260035 8.375871
## 91  3.190430 8.196093
## 92  3.068193 7.666890
## 93  2.795871 7.332537
## 94  2.971126 6.227536
## 95  3.500727 8.594783
## 96  2.522151 6.342853
## 97  3.565330 9.606982
## 98  3.482041 8.811132
## 99  3.205573 6.670957
## 100 3.044367 5.720739
## 101 2.965278 6.126413
## 102 2.927358 7.331275
## 103 2.716188 6.745716
## 104 2.777846 6.609676
## 105 2.869377 5.844983
## 106 2.977845 6.948233
## 107 2.976257 6.032163
## 108 2.787620 4.972562
## 109 2.734012 6.577111
## 110 3.409861 8.064189
## 111 2.469509 6.383214
## 112 3.150427 7.725816
## 113 2.605049 5.067530
## 114 3.141268 6.905675
## 115 3.231729 7.601454
## 116 3.338611 7.311840
## 117 3.060860 7.119893
## 118 2.774258 6.247233
## 119 2.748644 5.993009
## 120 2.940414 5.742350

Esta función cambia la correlación hasta buscar la menor correlación que se observa en 81°

for (ang_i in seq(0,90,0.5)) {
  f_rot(datos, ang_i)
}
## Angulo: 0 Cor: 0.61 
## Angulo: 0.5 Cor: 0.631 
## Angulo: 1 Cor: 0.65 
## Angulo: 1.5 Cor: 0.668 
## Angulo: 2 Cor: 0.684 
## Angulo: 2.5 Cor: 0.7 
## Angulo: 3 Cor: 0.714 
## Angulo: 3.5 Cor: 0.728 
## Angulo: 4 Cor: 0.741 
## Angulo: 4.5 Cor: 0.752 
## Angulo: 5 Cor: 0.763 
## Angulo: 5.5 Cor: 0.774 
## Angulo: 6 Cor: 0.783 
## Angulo: 6.5 Cor: 0.792 
## Angulo: 7 Cor: 0.801 
## Angulo: 7.5 Cor: 0.809 
## Angulo: 8 Cor: 0.816 
## Angulo: 8.5 Cor: 0.823 
## Angulo: 9 Cor: 0.83 
## Angulo: 9.5 Cor: 0.836 
## Angulo: 10 Cor: 0.842 
## Angulo: 10.5 Cor: 0.847 
## Angulo: 11 Cor: 0.852 
## Angulo: 11.5 Cor: 0.857 
## Angulo: 12 Cor: 0.861 
## Angulo: 12.5 Cor: 0.866 
## Angulo: 13 Cor: 0.87 
## Angulo: 13.5 Cor: 0.873 
## Angulo: 14 Cor: 0.877 
## Angulo: 14.5 Cor: 0.88 
## Angulo: 15 Cor: 0.884 
## Angulo: 15.5 Cor: 0.887 
## Angulo: 16 Cor: 0.889 
## Angulo: 16.5 Cor: 0.892 
## Angulo: 17 Cor: 0.895 
## Angulo: 17.5 Cor: 0.897 
## Angulo: 18 Cor: 0.899 
## Angulo: 18.5 Cor: 0.901 
## Angulo: 19 Cor: 0.904 
## Angulo: 19.5 Cor: 0.905 
## Angulo: 20 Cor: 0.907 
## Angulo: 20.5 Cor: 0.909 
## Angulo: 21 Cor: 0.911 
## Angulo: 21.5 Cor: 0.912 
## Angulo: 22 Cor: 0.914 
## Angulo: 22.5 Cor: 0.915 
## Angulo: 23 Cor: 0.916 
## Angulo: 23.5 Cor: 0.918 
## Angulo: 24 Cor: 0.919 
## Angulo: 24.5 Cor: 0.92 
## Angulo: 25 Cor: 0.921 
## Angulo: 25.5 Cor: 0.922 
## Angulo: 26 Cor: 0.923 
## Angulo: 26.5 Cor: 0.924 
## Angulo: 27 Cor: 0.925 
## Angulo: 27.5 Cor: 0.925 
## Angulo: 28 Cor: 0.926 
## Angulo: 28.5 Cor: 0.927 
## Angulo: 29 Cor: 0.927 
## Angulo: 29.5 Cor: 0.928 
## Angulo: 30 Cor: 0.928 
## Angulo: 30.5 Cor: 0.929 
## Angulo: 31 Cor: 0.929 
## Angulo: 31.5 Cor: 0.93 
## Angulo: 32 Cor: 0.93 
## Angulo: 32.5 Cor: 0.93 
## Angulo: 33 Cor: 0.931 
## Angulo: 33.5 Cor: 0.931 
## Angulo: 34 Cor: 0.931 
## Angulo: 34.5 Cor: 0.931 
## Angulo: 35 Cor: 0.931 
## Angulo: 35.5 Cor: 0.931 
## Angulo: 36 Cor: 0.931 
## Angulo: 36.5 Cor: 0.931 
## Angulo: 37 Cor: 0.931 
## Angulo: 37.5 Cor: 0.931 
## Angulo: 38 Cor: 0.931 
## Angulo: 38.5 Cor: 0.931 
## Angulo: 39 Cor: 0.931 
## Angulo: 39.5 Cor: 0.931 
## Angulo: 40 Cor: 0.93 
## Angulo: 40.5 Cor: 0.93 
## Angulo: 41 Cor: 0.93 
## Angulo: 41.5 Cor: 0.929 
## Angulo: 42 Cor: 0.929 
## Angulo: 42.5 Cor: 0.928 
## Angulo: 43 Cor: 0.928 
## Angulo: 43.5 Cor: 0.927 
## Angulo: 44 Cor: 0.927 
## Angulo: 44.5 Cor: 0.926 
## Angulo: 45 Cor: 0.925 
## Angulo: 45.5 Cor: 0.924 
## Angulo: 46 Cor: 0.924 
## Angulo: 46.5 Cor: 0.923 
## Angulo: 47 Cor: 0.922 
## Angulo: 47.5 Cor: 0.921 
## Angulo: 48 Cor: 0.92 
## Angulo: 48.5 Cor: 0.919 
## Angulo: 49 Cor: 0.918 
## Angulo: 49.5 Cor: 0.916 
## Angulo: 50 Cor: 0.915 
## Angulo: 50.5 Cor: 0.914 
## Angulo: 51 Cor: 0.912 
## Angulo: 51.5 Cor: 0.911 
## Angulo: 52 Cor: 0.909 
## Angulo: 52.5 Cor: 0.907 
## Angulo: 53 Cor: 0.905 
## Angulo: 53.5 Cor: 0.903 
## Angulo: 54 Cor: 0.901 
## Angulo: 54.5 Cor: 0.899 
## Angulo: 55 Cor: 0.897 
## Angulo: 55.5 Cor: 0.894 
## Angulo: 56 Cor: 0.892 
## Angulo: 56.5 Cor: 0.889 
## Angulo: 57 Cor: 0.886 
## Angulo: 57.5 Cor: 0.883 
## Angulo: 58 Cor: 0.88 
## Angulo: 58.5 Cor: 0.877 
## Angulo: 59 Cor: 0.873 
## Angulo: 59.5 Cor: 0.869 
## Angulo: 60 Cor: 0.865 
## Angulo: 60.5 Cor: 0.861 
## Angulo: 61 Cor: 0.857 
## Angulo: 61.5 Cor: 0.852 
## Angulo: 62 Cor: 0.847 
## Angulo: 62.5 Cor: 0.841 
## Angulo: 63 Cor: 0.835 
## Angulo: 63.5 Cor: 0.829 
## Angulo: 64 Cor: 0.823 
## Angulo: 64.5 Cor: 0.816 
## Angulo: 65 Cor: 0.808 
## Angulo: 65.5 Cor: 0.8 
## Angulo: 66 Cor: 0.792 
## Angulo: 66.5 Cor: 0.783 
## Angulo: 67 Cor: 0.773 
## Angulo: 67.5 Cor: 0.763 
## Angulo: 68 Cor: 0.752 
## Angulo: 68.5 Cor: 0.74 
## Angulo: 69 Cor: 0.727 
## Angulo: 69.5 Cor: 0.714 
## Angulo: 70 Cor: 0.699 
## Angulo: 70.5 Cor: 0.683 
## Angulo: 71 Cor: 0.667 
## Angulo: 71.5 Cor: 0.649 
## Angulo: 72 Cor: 0.629 
## Angulo: 72.5 Cor: 0.609 
## Angulo: 73 Cor: 0.587 
## Angulo: 73.5 Cor: 0.563 
## Angulo: 74 Cor: 0.538 
## Angulo: 74.5 Cor: 0.512 
## Angulo: 75 Cor: 0.483 
## Angulo: 75.5 Cor: 0.453 
## Angulo: 76 Cor: 0.421 
## Angulo: 76.5 Cor: 0.388 
## Angulo: 77 Cor: 0.352 
## Angulo: 77.5 Cor: 0.315 
## Angulo: 78 Cor: 0.277 
## Angulo: 78.5 Cor: 0.237 
## Angulo: 79 Cor: 0.195 
## Angulo: 79.5 Cor: 0.153 
## Angulo: 80 Cor: 0.11 
## Angulo: 80.5 Cor: 0.065 
## Angulo: 81 Cor: 0.021 
## Angulo: 81.5 Cor: -0.024 
## Angulo: 82 Cor: -0.068 
## Angulo: 82.5 Cor: -0.112 
## Angulo: 83 Cor: -0.156 
## Angulo: 83.5 Cor: -0.198 
## Angulo: 84 Cor: -0.239 
## Angulo: 84.5 Cor: -0.279 
## Angulo: 85 Cor: -0.318 
## Angulo: 85.5 Cor: -0.355 
## Angulo: 86 Cor: -0.39 
## Angulo: 86.5 Cor: -0.423 
## Angulo: 87 Cor: -0.455 
## Angulo: 87.5 Cor: -0.485 
## Angulo: 88 Cor: -0.513 
## Angulo: 88.5 Cor: -0.54 
## Angulo: 89 Cor: -0.565 
## Angulo: 89.5 Cor: -0.588 
## Angulo: 90 Cor: -0.61

Datos nuevos rotados

dr = f_rot(datos, 81.5)
## Angulo: 81.5 Cor: -0.024
ggplot(dr)+
  aes(AF, PS)+
  geom_point()