Prueba de hipótesis para una proporción

\[\hat{p} = \frac{p^+}{p^++p^-}\] * Funciones R: binom.test() & prop.test()

Referencia

lote = expand.grid(x = seq(0, 77, 7), y = seq(0, 99, 9))

set.seed(123)
estado = round(runif(144, 0, 0.7))
estado_nom = ifelse(estado == 0, 'Sana', 'Enferma')
estado_col = ifelse(estado == 0, 'green', 'red')

plot(lote$x, lote$y, pch = 8, col = estado_col)

Asumiendo que tenemos la información real (los parametros) es decir la verdadera prevalencia en el lote

table(estado_nom)/144
## estado_nom
##   Enferma      Sana 
## 0.2777778 0.7222222

Tamaño de la muestra

# install.packages("samplingbook")

sample.size.prop(e = 0.1, P = 0.5, N = 144, level = 0.95)
## 
## sample.size.prop object: Sample size for proportion estimate
## With finite population correction: N=144, precision e=0.1 and expected proportion P=0.5
## 
## Sample size needed: 58

Muestreo Hipercubo Latino Condicional:

Técnica de muestreo espacial donde se puede seleccionar el tamaño de la muestra

# install.packages("clhs")
set.seed(666)

palmas_muest = lote[clhs(x = lote, size = 34), ]
palmas_muest
##      x  y
## 2    7  0
## 136 21 99
## 24  77  9
## 104 49 72
## 131 70 90
## 45  56 27
## 68  49 45
## 123 14 90
## 90  35 63
## 4   21  0
## 37   0 27
## 18  35  9
## 109  0 81
## 67  42 45
## 77  28 54
## 120 77 81
## 39  14 27
## 101 28 72
## 34  63 18
## 112 21 81
## 30  35 18
## 56  49 36
## 140 49 99
## 141 56 99
## 73   0 54
## 74   7 54
## 46  63 27
## 40  21 27
## 22  63  9
## 5   28  0
## 138 35 99
## 1    0  0
## 99  14 72
## 134  7 99
plot(lote$x, lote$y, pch = 8, col = estado_col)
points(palmas_muest$x, palmas_muest$y, cex = 2)

N = 144
n_muestras = ceiling(N*seq(0.05, 0.7, 0.02)) # Diferentes tamaños muestrales
n_muestras
##  [1]   8  11  13  16  19  22  25  28  31  34  36  39  42  45  48  51  54  57  60
## [20]  62  65  68  71  74  77  80  83  85  88  91  94  97 100
set.seed(666)
enf_muest = NULL

for(i in n_muestras){
  muestra = clhs(x = lote, size = i) # Muestreo Hipercubo Latino Condicional para cada tamaño muestral en n_muestras
  enf_muest = c(enf_muest, table(estado_nom[muestra])['Enferma']/i) #proporción de enfermas en las muestras
  prev_i = table(estado_nom[muestra])/i #prevalencia
  cat('\nn_muestra:',i,'\n')
  print(prev_i)
}
## 
## n_muestra: 8 
## 
## Enferma    Sana 
##     0.5     0.5 
## 
## n_muestra: 11 
## 
##   Enferma      Sana 
## 0.4545455 0.5454545 
## 
## n_muestra: 13 
## 
##   Enferma      Sana 
## 0.4615385 0.5384615 
## 
## n_muestra: 16 
## 
## Enferma    Sana 
##    0.25    0.75 
## 
## n_muestra: 19 
## 
##   Enferma      Sana 
## 0.4210526 0.5789474 
## 
## n_muestra: 22 
## 
##   Enferma      Sana 
## 0.2727273 0.7272727 
## 
## n_muestra: 25 
## 
## Enferma    Sana 
##    0.44    0.56 
## 
## n_muestra: 28 
## 
##   Enferma      Sana 
## 0.1071429 0.8928571 
## 
## n_muestra: 31 
## 
##   Enferma      Sana 
## 0.2258065 0.7741935 
## 
## n_muestra: 34 
## 
##   Enferma      Sana 
## 0.2941176 0.7058824 
## 
## n_muestra: 36 
## 
##   Enferma      Sana 
## 0.3611111 0.6388889 
## 
## n_muestra: 39 
## 
##   Enferma      Sana 
## 0.2564103 0.7435897 
## 
## n_muestra: 42 
## 
##   Enferma      Sana 
## 0.3571429 0.6428571 
## 
## n_muestra: 45 
## 
##   Enferma      Sana 
## 0.2222222 0.7777778 
## 
## n_muestra: 48 
## 
##   Enferma      Sana 
## 0.2291667 0.7708333 
## 
## n_muestra: 51 
## 
##   Enferma      Sana 
## 0.3137255 0.6862745 
## 
## n_muestra: 54 
## 
##   Enferma      Sana 
## 0.2777778 0.7222222 
## 
## n_muestra: 57 
## 
##   Enferma      Sana 
## 0.2982456 0.7017544 
## 
## n_muestra: 60 
## 
##   Enferma      Sana 
## 0.3166667 0.6833333 
## 
## n_muestra: 62 
## 
##   Enferma      Sana 
## 0.2903226 0.7096774 
## 
## n_muestra: 65 
## 
##   Enferma      Sana 
## 0.2769231 0.7230769 
## 
## n_muestra: 68 
## 
##   Enferma      Sana 
## 0.3235294 0.6764706 
## 
## n_muestra: 71 
## 
##   Enferma      Sana 
## 0.2957746 0.7042254 
## 
## n_muestra: 74 
## 
##   Enferma      Sana 
## 0.2837838 0.7162162 
## 
## n_muestra: 77 
## 
##   Enferma      Sana 
## 0.3116883 0.6883117 
## 
## n_muestra: 80 
## 
## Enferma    Sana 
##    0.25    0.75 
## 
## n_muestra: 83 
## 
##   Enferma      Sana 
## 0.3253012 0.6746988 
## 
## n_muestra: 85 
## 
##   Enferma      Sana 
## 0.2470588 0.7529412 
## 
## n_muestra: 88 
## 
##   Enferma      Sana 
## 0.3295455 0.6704545 
## 
## n_muestra: 91 
## 
##   Enferma      Sana 
## 0.2527473 0.7472527 
## 
## n_muestra: 94 
## 
##   Enferma      Sana 
## 0.2978723 0.7021277 
## 
## n_muestra: 97 
## 
##   Enferma      Sana 
## 0.2783505 0.7216495 
## 
## n_muestra: 100 
## 
## Enferma    Sana 
##    0.27    0.73
plot(n_muestras, enf_muest, pch = 16)
text(n_muestras, enf_muest, n_muestras, pos = 4, cex = 0.6)
abline(h = table(estado_nom)['Enferma']/144, col = 'red')

\[H_0: \pi\leq0.2\\ H_a: \pi>0.2\]

enf_muest[n_muestras==51]
##   Enferma 
## 0.3137255

binom.test

set.seed(666)

n = 34
estado = round(runif(144, 0, 0.7))
est_51 = estado[clhs(x = lote, size = n)]
est_51 
##  [1] 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0
prueba_1a = binom.test(x = sum(est_51), n = n, p = 0.2, alternative = "g")
pvalor_1a = prueba_1a$p.value

pvalor_1a
## [1] 0.3673691
ifelse(pvalor_1a>0.05, 'No rechazo Ho', 'Rechazo Ho')
## [1] "No rechazo Ho"

Conclusión: Los datos no proporcionan evidencia estadistica en contra de la hipotesis nula

prop.test (N>30)

prueba_1b = prop.test(x = sum(est_51), n = n,
                      p = 0.2, alternative = "g",
                      correct = TRUE)
pvalor_1b = prueba_1b$p.value

pvalor_1b
## [1] 0.3820418
ifelse(pvalor_1b>0.05, 'No rechazo Ho', 'Rechazo Ho')
## [1] "No rechazo Ho"

Resumen:

  1. Población finita (\(N=144\))

  2. Determinar el tamaño de muestra a seleccionar (sample.size.prop(), e = error de muestre (e<10%), P = proporción, N, leve = nivel de confianza)

  3. Donde y cuales puntos a muestrear clhs()

  4. Calcular la prevalencia muestral

  5. Probar la hipotesis \(H_0\): binom.test() ó prop.test()

  6. Concluir: Los datos propocionan suficiente información estadistica para rechazar la hipótesis?

Prueba de Hipótesis para 2 Proporciones

Referencia

bandejas = matrix(rbinom(n = 4000, size = 1, prob = 0.7), ncol = 40)
colnames(bandejas) = rep(c('Escar', 'NoEscar'), each=20)
dim(bandejas)
## [1] 100  40
bandejas[1:10, 1:10]
##       Escar Escar Escar Escar Escar Escar Escar Escar Escar Escar
##  [1,]     1     1     0     0     0     1     0     1     0     1
##  [2,]     0     1     0     1     1     0     1     0     1     0
##  [3,]     1     1     0     1     1     0     1     1     0     0
##  [4,]     0     1     1     1     1     1     1     1     0     1
##  [5,]     1     0     1     0     1     1     0     0     0     0
##  [6,]     0     1     1     1     1     1     1     0     1     0
##  [7,]     1     0     0     0     1     0     1     0     1     1
##  [8,]     1     1     0     1     1     1     0     1     1     0
##  [9,]     1     1     0     1     1     1     1     1     0     0
## [10,]     1     1     1     0     1     1     1     1     1     0
colMeans(bandejas)
##   Escar   Escar   Escar   Escar   Escar   Escar   Escar   Escar   Escar   Escar 
##    0.68    0.65    0.69    0.69    0.69    0.62    0.68    0.70    0.64    0.65 
##   Escar   Escar   Escar   Escar   Escar   Escar   Escar   Escar   Escar   Escar 
##    0.71    0.75    0.69    0.74    0.73    0.80    0.63    0.66    0.65    0.80 
## NoEscar NoEscar NoEscar NoEscar NoEscar NoEscar NoEscar NoEscar NoEscar NoEscar 
##    0.63    0.72    0.66    0.77    0.72    0.68    0.71    0.68    0.72    0.70 
## NoEscar NoEscar NoEscar NoEscar NoEscar NoEscar NoEscar NoEscar NoEscar NoEscar 
##    0.65    0.69    0.68    0.70    0.80    0.74    0.69    0.70    0.76    0.76
sum(colSums(bandejas)[1:20])
## [1] 1385
sum(colSums(bandejas)[21:40])
## [1] 1416

Hipótesis

\[H_0: \pi_{Escar} = \pi_{NoEscar}\\ H_a: \pi_{Escar} \neq \pi_{NoEscar}\]

prueba_2 = prop.test(x = c(1392, 1407), n = c(2000, 2000))
pvalor_2 = prueba_2$p.value

ifelse(pvalor_2<0.05, 'Rechazo Ho', 'No Rechazo Ho')
## [1] "No Rechazo Ho"
boxplot(cbind(Escar=colMeans(bandejas)[1:20],
              NoEscar=colMeans(bandejas)[21:40]),
        col = c("#87CEFF", "#4876FF"))

Dos proporciones dependientes

\[ H_0: \pi_{con~asistencia~técnica}=\pi_{con~asistencia~técnica} \\ H_a: \pi_{con~asistencia~técnica}\neq\pi_{con~asistencia~técnica}\]

N = 350 # Tamaño de la población 
n = 250 # Tamaño de la muestra 
x_1 = c(80,170) # 80 que no y 170 que si 
bi_t <-binom.test(x_1,
           p = 0.5,
           alternative = 't')
bi_t
## 
##  Exact binomial test
## 
## data:  x_1
## number of successes = 80, number of trials = 250, p-value = 1.276e-08
## alternative hypothesis: true probability of success is not equal to 0.5
## 95 percent confidence interval:
##  0.2626210 0.3817089
## sample estimates:
## probability of success 
##                   0.32
pvalor_binom = bi_t$p.value

ifelse(pvalor_binom<0.05, 'Rechazo Ho', 'No Rechazo Ho')
## [1] "Rechazo Ho"

Má de dos proporciones (3ra ley de Mendel)

# Color de los ojos: rojo y blanco
# Forma de las alas: normales y vestigiales
# Fenotipos: Homocigoto D (ALAS NORMALES, OJOS ROJOS)
#            Heterocigoto (ALAS VESTIGIALES, OJOS ROJOS)
#            Heterocigoto (ALAS NORMALES, OJOS BLANCOS)
#            Homocigoto R (ALAS VESTIGIALES, OJOS BLANCOS)

\[H_0: \pi_{OR-AN}=\frac{9}{16};\pi_{OR-Av}=\frac{3}{16};\pi_{OB-AN}=\frac{3}{16};\pi_{OB-AV}=\frac{1}{16} \\H_a:No~se~cumple~tercera~ley~de~Mendel \]

obs <- c(964,381,345,86)
prop <-c(9/16,3/16,3/16,1/16)
p_chi<- chisq.test(obs, p = prop)
p_chi
## 
##  Chi-squared test for given probabilities
## 
## data:  obs
## X-squared = 14.208, df = 3, p-value = 0.002635
pvalor_chi = p_chi$p.value

ifelse(pvalor_chi<0.05, 'Rechazo Ho', 'No Rechazo Ho')
## [1] "Rechazo Ho"