¿CUANDO?: Análisis o investigaciones que involucren variables cualitativas o de atributo
¿PARA?: para comparar una proporción observada con una teórica/ verificar si el valor de una proporción \(p\) es igual a un cierto valor \(p_{0}\)
Aplicación: Estudio de prevalencia de una enfermedad
Hipotesis:
\[\hat{p} = \frac{p^+}{p^++p^-}\] * Funciones R: binom.test() & prop.test()
binom.test(): calcula la prueba binomial exacta. Se recomienda cuando el tamaño de la muestra es pequeño
prop.test(): puede utilizarse cuando el tamaño de la muestra es grande ( N > 30). Utiliza una aproximación normal a la binomial
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
# 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
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
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
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"
Población finita (\(N=144\))
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)
Donde y cuales puntos a muestrear clhs()
Calcular la prevalencia muestral
Probar la hipotesis \(H_0\): binom.test() ó prop.test()
Concluir: Los datos propocionan suficiente información estadistica para rechazar la hipótesis?
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"))
\[ 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"
# 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"