R version 4.1.2 (2021-11-01)
library(tidyverse)
library(readxl)
library(gridExtra)
library(gt)
Por practicidad, los data.frames muestran solamente las 6 primeras filas y los bucles muestran solamente las primeras 6 iteraciones.
Las dos técnicas comparadas son el Muestreo Aleatorio Simple (M.A.S) sin reposición y el Muestreo Aleatorio Estratificado (M.A.E), para ambas técnicas se utilizó el mismo marco muestral de 30,000 registros de cerdos de entre 10 y 11 semanas de edad, y a partir de él se corrieron por cada técnica 100 muestras cuyas unidades muestrales se seleccionaron mediante simulación utilizando números seudoaleatorios y fijando una semilla de aleatoriedad para la reproductibilidad de los resultados. Se estableció un nivel de confianza del 95% y un error de estimación de 3 libras.
Para ambos métodos se calculó el tamaño muestral con la fórmula para poblaciones infinitas, en el caso del M.A.E la asignación del tamaño muestral para cada estrato se hizo proporcional al tamaño del mismo y se definieron 3 estratos: “Grandes” para cerdos de 70 libras o más, “Medianos” para cerdos entre 56 y 69.99 libras y “Pequeños” para cerdos menores a 56 libras.
Los parámetros estimados fueron el promedio, la desviación estandar y el rango de peso poblacionales; también se estimó el número de muestras cuyos intervalos de confianza no abarcaron al peso promedio poblacional. Adicional a estas estimaciones, se calculó la desviación estandar entre los pesos promedio de cada muestra como indicador de la precisión de cada técnica.
n_media_infinita <- function(alfa, s, e){
(qnorm(1-(alfa/2))^2 * s^2 / e^2)
}
ene <- ceiling(n_media_infinita(alfa = 0.05, s = sd(datos$Peso), e = 3))
ene
## [1] 71
Esto crea una lista de datos almacenada en una variable llamada “lista_MAS”.
set.seed(7531) #Semilla de aleatoriedad
lista_MAS <- list()
for(i in 1:100) {
lista_MAS[[i]] <- sample(x = datos$Peso, size = ene, replace = F)
}
head(lista_MAS) #Se muestran tan solo 6 de los 100 muestreos, cada bloque es un muestreo
## [[1]]
## [1] 58 56 92 86 80 59 68 67 59 62 77 77 72 81 67 79 70 86 79
## [20] 83 53 75 73 77 65 64 74 70 53 80 57 63 67 63 36 45 95 69
## [39] 60 64 57 69 75 88 58 61 81 75 75 31 64 72 62 59 77 54 75
## [58] 75 63 59 112 82 85 76 48 71 52 48 38 91 61
##
## [[2]]
## [1] 71 48 58 48 56 82 60 78 58 65 78 60 84 76 53 65 70 51 72 78 70 82 48 56 68
## [26] 81 35 64 78 70 67 68 73 73 81 54 79 50 47 55 56 73 65 44 83 64 65 66 77 75
## [51] 85 54 81 66 75 82 85 74 68 62 88 46 46 70 61 56 76 62 69 63 50
##
## [[3]]
## [1] 69 72 82 55 33 60 56 83 66 69 78 73 54 58 58 76 74 78 57 71 55 60 76 74 62
## [26] 92 64 49 80 53 72 63 49 57 73 70 67 54 73 61 63 64 81 54 73 62 59 65 81 76
## [51] 66 65 44 49 72 40 77 87 63 34 76 54 56 52 70 63 86 79 54 66 79
##
## [[4]]
## [1] 63 56 68 54 73 45 70 76 53 67 63 62 65 66 62 74 70 43 73 70 60 44 52 92 85
## [26] 74 56 88 75 62 88 56 72 73 50 58 67 81 80 76 76 71 67 57 75 57 65 65 65 91
## [51] 94 49 76 65 82 64 64 57 54 85 62 69 54 82 61 52 78 97 94 28 35
##
## [[5]]
## [1] 71 60 72 87 52 78 74 75 67 83 90 82 93 81 89 76 68 47 39 74 56 55 57 75 71
## [26] 65 81 79 48 53 30 67 54 67 53 76 67 57 61 62 90 59 54 84 49 66 70 69 76 59
## [51] 65 47 59 57 75 58 83 72 67 65 71 70 58 47 61 77 45 60 33 51 65
##
## [[6]]
## [1] 41 65 67 46 57 72 63 44 57 57 64 63 80 70 82 60 68 72 85 73 59 77 70 51 48
## [26] 73 60 79 68 64 78 41 70 42 80 72 86 79 64 75 67 57 68 87 74 85 74 53 65 61
## [51] 70 84 69 62 62 82 69 76 69 77 56 65 59 60 61 54 75 82 50 52 67
df_MAS <- as.data.frame(lista_MAS)
names(df_MAS) <- 1:100
min_max_MAS <- df_MAS %>%
map_df(.f = ~c(Minimo= min(.), Maximo= max(.)))
minimo_MAS <- min(min_max_MAS$Minimo)
maximo_MAS <- max(min_max_MAS$Maximo)
head(min_max_MAS)
## # A tibble: 6 x 2
## Minimo Maximo
## <dbl> <dbl>
## 1 31 112
## 2 35 88
## 3 33 92
## 4 28 97
## 5 30 93
## 6 41 87
#IC de cada muestra
IC_MAS <- df_MAS %>%
map_df(.f = ~c(t.test(.)$conf.int[1] #Límite inferior
,t.test(.)$conf.int[2])) #Líite superior
IC_MAS %>%
select(1:10) #La primera fila es el Límite inferior y la segunda fila es el Límite superior
## # A tibble: 2 x 10
## `1` `2` `3` `4` `5` `6` `7` `8` `9` `10`
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 65.0 63.3 62.4 63.6 62.3 63.7 65.7 66.3 63.7 63.7
## 2 71.7 69.0 68.2 70.2 68.8 69.1 72.4 72.2 69.9 70.0
En una sola tabla se unen los parámetros de interés del M.A.S, incluyendo una columna llamada “Dentro” cuyos valores pueden ser “1” en caso que los intervalos de confianza de la muestra abarquen al promedio poblacional o “2” en caso que los intervalos de confianza no lo abarquen:
IC_MAS <- as.data.frame(t(IC_MAS))
names(IC_MAS) <- c("Li", "Ls")
MAS_completo <- IC_MAS %>%
mutate(Muestra = 1:100,
Dentro = ifelse(promedio_real >= Li & promedio_real <= Ls,1, 2),
Promedio = t(df_MAS %>%
map_df(mean)),
Ds = t(df_MAS %>%
map_df(sd)),
Minimo = min_max_MAS$Minimo,
Maximo = min_max_MAS$Maximo) %>%
select(Muestra, Li, Ls, Promedio,
Ds, Minimo, Maximo, Dentro)
head(MAS_completo)
## Muestra Li Ls Promedio Ds Minimo Maximo Dentro
## 1 1 65.03496 71.72561 68.38028 14.13341 31 112 1
## 2 2 63.26745 69.04241 66.15493 12.19912 35 88 1
## 3 3 62.39564 68.19591 65.29577 12.25257 33 92 1
## 4 4 63.63768 70.24964 66.94366 13.96719 28 97 1
## 5 5 62.33292 68.76567 65.54930 13.58864 30 93 1
## 6 6 63.67627 69.11247 66.39437 11.48350 41 87 1
grafica_MAS <- ggplot(MAS_completo, aes(Muestra, Promedio)) +
geom_point() +
geom_hline(yintercept = promedio_real) +
scale_y_continuous(breaks = seq(1, 100, 1)) +
ggtitle("M.A.S") +
theme_classic()
grafica_MAS
Grande <- 70
Mediano <- 56
#Pequeno <- Por descarte, todo lo que no entra en las otras dos categrías es Pequeño.
#Asignación de estratos
datos_estratos <- datos %>%
select(Peso) %>%
mutate(Estrato = ifelse(Peso>= Grande, "Grande",
ifelse(Peso >= Mediano, "Mediano", "Pequeno")))
No.muestras_estratos <- datos_estratos %>%
count(Estrato) %>%
mutate(Pct = n*100/sum(n), n =round(
Pct*ene/100), 2) %>%
select(Estrato, n)
No.muestras_estratos
## # A tibble: 3 x 2
## Estrato n
## <chr> <dbl>
## 1 Grande 30
## 2 Mediano 28
## 3 Pequeno 13
Además de generar un bucle por cada estrato se transforma cada lista generada en un data.frame:
Grande <- datos_estratos %>%
filter(Estrato == "Grande")
set.seed(7531)
lista_Grande <- list()
for(j in 1:100) {
lista_Grande[[j]] <- sample(Grande$Peso, size = No.muestras_estratos$n[1], replace = F)
}
df_Grande <- as.data.frame(lista_Grande)
names(df_Grande) <- 1:ncol(df_Grande)
head(df_Grande)
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
## 1 89 92 76 89 74 76 96 84 75 92 74 87 80 74 98 73 77 87 88 73 81 86 81 71 72 81
## 2 72 70 79 99 80 87 71 71 78 73 79 85 81 72 82 80 79 78 76 73 83 80 80 87 79 73
## 3 89 80 89 85 72 83 79 76 84 80 82 70 89 76 85 72 85 73 88 90 90 75 76 77 90 78
## 4 88 70 86 80 75 71 71 80 74 83 80 81 72 70 81 91 95 81 78 79 77 86 81 73 81 79
## 5 90 70 90 70 76 79 76 74 79 90 70 71 71 79 73 74 71 74 86 74 87 77 76 83 88 78
## 6 72 81 72 75 77 75 71 76 75 75 71 82 80 82 76 71 72 74 75 85 77 85 75 75 72 89
## 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
## 1 79 85 70 72 89 79 71 77 73 71 88 73 80 74 88 81 73 80 85 81 76 77 91 85 81
## 2 71 75 70 77 80 80 83 71 74 90 90 100 70 83 76 70 79 71 72 76 70 94 74 73 71
## 3 93 70 84 70 71 91 76 70 72 83 84 91 76 83 82 81 71 77 92 81 77 70 87 86 75
## 4 75 73 81 97 70 72 72 76 70 71 76 92 81 71 72 74 80 70 94 73 71 71 72 89 75
## 5 91 72 72 75 84 78 71 74 75 71 85 83 76 75 81 73 73 87 88 81 80 76 94 75 88
## 6 70 93 83 84 74 79 75 81 79 73 74 81 74 72 83 83 72 81 85 74 70 75 77 86 70
## 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
## 1 78 85 71 73 89 70 75 78 74 85 74 83 86 75 92 73 70 74 72 79 93 81 75 76 77
## 2 71 71 72 81 72 81 78 70 87 74 70 89 72 77 80 72 79 90 75 78 75 75 74 75 74
## 3 83 72 88 74 84 74 87 90 91 77 71 80 71 71 74 72 71 81 80 74 82 87 81 82 104
## 4 95 80 83 74 84 82 92 76 70 83 77 74 74 71 87 94 74 100 82 79 73 90 91 94 77
## 5 98 75 77 83 71 94 78 96 73 77 86 74 83 93 70 81 70 80 76 76 77 73 79 80 84
## 6 72 73 72 74 80 82 72 72 72 94 83 72 95 80 73 96 84 102 104 72 73 71 91 79 79
## 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
## 1 80 86 82 73 95 75 80 80 77 72 73 78 73 71 95 70 83 74 73 81 75 73 76 84
## 2 79 73 73 74 81 94 80 84 71 74 82 72 70 95 82 86 75 82 74 72 86 72 78 71
## 3 92 70 71 76 73 85 79 80 79 95 73 82 73 87 73 79 85 95 80 87 71 73 71 94
## 4 78 72 78 72 71 74 86 81 75 87 86 81 70 80 88 74 77 84 72 79 84 73 76 102
## 5 84 83 75 71 82 89 88 73 79 73 74 90 70 74 77 78 70 71 81 88 91 74 70 74
## 6 78 79 80 80 94 74 70 85 72 71 76 70 79 80 86 74 86 83 74 72 91 81 78 77
Mediano <- datos_estratos %>%
filter(Estrato == "Mediano")
set.seed(7531)
lista_Mediano <- list()
for(k in 1:100) {
lista_Mediano[[k]] <- sample(Mediano$Peso, size = No.muestras_estratos$n[2], replace = F)
}
df_Mediano <- as.data.frame(lista_Mediano)
names(df_Mediano) <- 1:ncol(df_Mediano)
head(df_Mediano)
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
## 1 61 67 63 60 61 63 59 60 62 63 61 61 57 64 64 65 67 60 65 67 56 64 65 66 65 59
## 2 60 69 68 68 56 68 69 58 58 63 68 60 65 68 58 69 59 62 68 67 66 62 68 60 65 68
## 3 64 57 63 64 60 69 66 68 67 64 66 59 60 63 68 63 59 67 69 56 58 62 56 62 60 61
## 4 67 59 62 63 62 69 69 64 67 69 56 68 67 58 61 61 66 58 66 64 62 64 67 59 64 58
## 5 67 63 59 62 63 57 60 57 61 68 58 69 59 61 60 68 66 61 68 62 66 63 64 69 69 69
## 6 60 64 66 67 67 69 62 63 67 62 68 60 63 66 65 58 62 68 69 65 63 57 57 57 62 67
## 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
## 1 64 57 65 58 61 62 68 59 59 57 67 69 62 69 57 63 69 65 60 68 56 60 62 56 59 64
## 2 67 60 63 66 58 68 68 64 61 60 69 60 58 67 64 64 56 63 64 68 64 63 57 69 67 58
## 3 67 59 59 61 59 61 69 68 64 68 61 67 66 61 68 67 65 63 62 64 58 65 63 56 58 65
## 4 65 56 67 63 65 67 56 65 68 56 57 67 67 66 63 64 61 66 67 56 56 63 60 60 59 64
## 5 60 57 68 64 62 67 62 63 64 56 58 56 68 64 62 57 60 66 67 67 67 59 69 56 68 64
## 6 61 60 64 68 61 64 56 67 67 57 60 58 68 59 66 59 65 61 68 62 67 64 57 60 68 57
## 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
## 1 65 59 68 68 58 67 56 59 67 56 64 59 66 63 68 61 60 68 69 60 64 68 68 67 65 65
## 2 64 58 58 68 61 67 69 63 61 62 68 65 68 61 64 58 59 65 60 68 57 65 57 69 60 59
## 3 69 63 56 66 57 68 65 64 60 65 62 68 64 61 68 60 68 69 63 68 66 68 65 66 68 60
## 4 68 65 68 66 57 66 61 66 57 61 56 68 60 60 63 69 62 65 62 60 58 65 66 68 68 60
## 5 62 56 64 68 62 62 60 64 67 58 59 61 69 68 69 69 64 58 69 63 57 58 58 57 56 59
## 6 58 58 64 69 59 61 63 63 65 63 63 66 68 60 66 61 61 68 59 65 68 67 59 59 57 67
## 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
## 1 66 62 69 65 66 59 57 68 58 63 62 58 60 64 68 57 63 68 63 64 67 66
## 2 57 63 64 58 65 61 58 66 62 62 65 68 65 63 62 58 61 60 64 56 65 66
## 3 59 67 60 62 64 62 62 68 62 59 60 58 61 57 69 67 58 61 61 62 65 67
## 4 58 56 61 66 65 58 57 59 61 59 61 64 68 64 66 58 68 69 66 63 65 69
## 5 63 69 69 69 56 68 64 57 66 68 69 58 63 59 62 69 68 66 59 64 56 68
## 6 69 56 57 63 67 59 58 60 65 57 56 59 61 61 64 66 66 60 63 69 59 63
Pequeno <- datos_estratos %>%
filter(Estrato == "Pequeno")
set.seed(7531)
lista_Pequeno <- list()
for(l in 1:100) {
lista_Pequeno[[l]] <- sample(Pequeno$Peso, size = No.muestras_estratos$n[3], replace = F)
}
df_Pequeno <- as.data.frame(lista_Pequeno)
names(df_Pequeno) <- 1:ncol(df_Pequeno)
head(df_Pequeno)
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
## 1 26 51 35 55 51 53 41 29 52 44 50 52 43 52 50 48 53 43 46 49 55 48 52 42 46 44
## 2 48 46 37 51 49 46 44 44 48 42 53 51 32 38 46 48 52 51 32 39 38 41 55 55 48 31
## 3 55 55 55 51 43 51 38 42 49 45 55 54 46 53 50 55 47 54 37 47 51 55 44 51 55 45
## 4 53 51 54 50 55 45 44 36 40 52 51 47 52 46 44 49 42 42 54 50 55 51 49 51 42 43
## 5 53 54 47 51 50 51 50 39 52 46 49 49 48 54 46 45 44 53 53 48 48 48 52 55 53 42
## 6 53 48 49 55 52 37 44 46 47 55 55 48 53 54 49 51 51 52 46 47 44 52 53 43 55 53
## 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
## 1 46 44 42 54 54 53 45 49 45 54 55 41 54 55 43 50 51 48 55 52 50 55 54 49 45 50
## 2 42 54 46 40 50 54 55 52 30 54 49 43 49 37 55 54 49 54 41 37 48 40 41 53 54 55
## 3 51 48 49 49 54 49 55 54 46 45 51 47 38 54 45 37 44 42 46 47 54 54 42 51 48 45
## 4 53 53 46 53 45 45 55 43 52 47 52 53 41 51 50 51 34 49 42 48 52 54 31 49 54 48
## 5 53 41 55 44 46 40 49 49 42 47 48 50 48 40 28 54 47 54 45 53 49 54 47 44 49 31
## 6 49 48 50 53 46 48 41 55 54 51 55 45 41 33 55 54 54 55 52 52 49 37 54 47 42 54
## 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
## 1 50 32 45 55 54 46 42 43 43 53 52 36 53 54 49 49 47 48 40 48 54 44 54 52 55 40
## 2 54 41 44 39 47 40 45 50 47 55 51 44 53 55 40 52 55 50 46 42 52 52 39 55 53 51
## 3 53 46 46 44 54 51 53 47 46 50 55 55 42 39 53 48 51 46 50 53 51 43 45 48 52 50
## 4 42 48 50 52 51 54 51 38 50 46 45 47 51 48 54 48 46 52 55 55 51 55 37 52 45 45
## 5 53 55 49 55 41 45 40 52 53 31 49 41 54 51 46 53 47 38 51 55 46 49 55 46 54 46
## 6 51 43 45 50 47 54 52 47 49 52 50 45 53 53 50 55 52 51 48 55 48 48 49 55 54 50
## 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
## 1 32 51 45 22 49 52 53 50 50 39 49 54 54 44 51 50 47 55 46 55 46 47
## 2 54 55 38 55 48 47 51 42 54 46 50 54 43 55 53 40 45 48 41 41 45 54
## 3 51 30 44 46 48 49 41 53 53 50 45 45 47 51 45 52 55 39 36 53 55 42
## 4 48 48 54 54 41 41 42 53 44 51 50 45 53 47 52 47 48 48 52 50 46 49
## 5 52 48 54 50 37 46 42 52 51 51 54 50 50 46 49 49 47 43 54 51 51 55
## 6 51 53 54 55 52 46 53 39 55 55 43 48 54 47 46 53 52 54 45 52 48 54
# Pivots
pivot_df_Grande <- df_Grande %>%
pivot_longer(cols = 1:ncol(df_Grande), names_to = "Muestra",
values_to = "Peso")
pivot_df_Mediano <- df_Mediano %>%
pivot_longer(cols = 1:ncol(df_Mediano), names_to = "Muestra",
values_to = "Peso")
pivot_df_Pequeno <- df_Pequeno %>%
pivot_longer(cols = 1:ncol(df_Pequeno), names_to = "Muestra",
values_to = "Peso")
pivot_MAE <- rbind(pivot_df_Grande, pivot_df_Mediano, pivot_df_Pequeno)
head(pivot_MAE)
## # A tibble: 6 x 2
## Muestra Peso
## <chr> <dbl>
## 1 1 89
## 2 2 92
## 3 3 76
## 4 4 89
## 5 5 74
## 6 6 76
Promedios_MAE <- pivot_MAE %>%
group_by(Muestra = as.numeric(Muestra)) %>%
summarise(Promedio = mean(Peso), Ds = sd(Peso),
Minimo = min(Peso), Maximo = max(Peso))
head(Promedios_MAE)
## # A tibble: 6 x 5
## Muestra Promedio Ds Minimo Maximo
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 65.9 12.6 26 96
## 2 2 67.5 11.5 46 95
## 3 3 67.2 12.9 35 104
## 4 4 67.4 12.9 33 99
## 5 5 66.7 12.8 36 92
## 6 6 66.9 13.6 35 94
MAE_bind <- rbind(df_Pequeno, df_Mediano, df_Grande)
IC_MAE <- MAE_bind %>%
map_df(.f = ~c(t.test(.)$conf.int[1],
t.test(.)$conf.int[2]))
MAE_completo <- data.frame(t(IC_MAE))
names(MAE_completo) <- c("Li", "Ls")
head(MAE_completo)
## Li Ls
## 1 62.95505 68.93228
## 2 64.78147 70.23261
## 3 64.16364 70.28707
## 4 64.30918 70.42322
## 5 63.70930 69.78366
## 6 63.65285 70.09363
Para ellos se crea una columna llamada “Dentro” y si los intervalos de confianza de cada muestreo abarcan el promedio poblacional se asigna el valor “1”, de lo contrario se asigna el valor “2”
MAE_completo <- MAE_completo %>%
mutate(Dentro = ifelse(promedio_real >= Li & promedio_real <= Ls,
1, 2))
head(MAE_completo)
## Li Ls Dentro
## 1 62.95505 68.93228 1
## 2 64.78147 70.23261 1
## 3 64.16364 70.28707 1
## 4 64.30918 70.42322 1
## 5 63.70930 69.78366 1
## 6 63.65285 70.09363 1
MAE_completo <- data.frame(MAE_completo, Promedios_MAE)
MAE_completo <- MAE_completo %>%
select(Muestra, Li, Ls, Promedio, Ds, Minimo, Maximo, Dentro)
head(MAE_completo)
## Muestra Li Ls Promedio Ds Minimo Maximo Dentro
## 1 1 62.95505 68.93228 65.94366 12.62638 26 96 1
## 2 2 64.78147 70.23261 67.50704 11.51505 46 95 1
## 3 3 64.16364 70.28707 67.22535 12.93522 35 104 1
## 4 4 64.30918 70.42322 67.36620 12.91537 33 99 1
## 5 5 63.70930 69.78366 66.74648 12.83157 36 92 1
## 6 6 63.65285 70.09363 66.87324 13.60560 35 94 1
grafica_MAE <- ggplot(MAE_completo, aes(Muestra,Promedio)) +
geom_point() +
geom_hline(yintercept = promedio_real) +
scale_y_continuous(breaks = seq(1, 71, 1)) +
ggtitle("M.A.E") +
theme_classic()
grafica_MAE
comparativa <- data.frame(
Estadístico = c("Promedio",
"Mínimo",
"Máximo",
"Desviación estandar",
"Fuera de intervalo"),
M.A.S = c(round(mean(MAS_completo$Promedio), 2),# Promedio
round(min(min_max_MAS$Minimo), 2), # Mínimo
round(max(min_max_MAS$Maximo), 2), # Máximo
round(mean(MAS_completo$Ds), 2), # SD DENTRO
sum(MAS_completo$Dentro)-100),
M.A.E = c(round(mean(MAE_completo$Promedio), 2),
round(min(MAE_completo$Minimo), 2),
round(max(MAE_completo$Maximo), 2),
round(mean(MAE_completo$Ds), 2),
sum(MAE_completo$Dentro)-100))
comparativa <- comparativa %>%
mutate(Real = c(round(mean(datos$Peso), 2),
round(min(datos$Peso), 2),
round(max(datos$Peso), 2),
round(sd(datos$Peso), 2),
""))
comparativa_gt <- comparativa %>%
gt(rowname_col = "Estadístico") %>%
tab_stubhead("Estadístico") %>%
tab_spanner(label = "Técnica", columns = c("M.A.S", "M.A.E")) %>%
fmt_number(columns = c("M.A.S", "M.A.E"), rows = c("Mínimo", "Máximo"), decimals = 0) %>%
fmt_number(columns = c("M.A.S", "M.A.E"), rows = "Fuera de intervalo", decimals = 0) %>%
cols_move_to_start("Real") %>%
cols_align(align = "right")
comparativa_gt
| Estadístico | Real | Técnica | |
|---|---|---|---|
| M.A.S | M.A.E | ||
| Promedio | 66.81 | 67.03 | 66.78 |
| Mínimo | 19 | 21 | 22 |
| Máximo | 122 | 112 | 113 |
| Desviación estandar | 12.83 | 12.75 | 12.69 |
| Fuera de intervalo | 9 | 0 | |