Muestreo estratificado: la población se divide en estratos homogéneos y se seleccionan muestras aleatorias de cada estrato. Se divide la población en estratos mutuamente excluyentes y exhaustivos. Dentro de cada estrato se realiza un Muestreo Aleatorio Simple (MAS).
Asignación proporcional 1. Identificar la unidad de análisis Ejem. De una población inicial de 500 estudiantes identificamos los estudiantes que reprueban matemáticas en el primer semestre. Esta selección arrojó 100 estudiantes. 2. Identificar los estratos ejemplo: cuatro tipos de acudientes a. Padres de familia b. Abuelos c. Otros familiares d. Otras personas no familiares 3. Identificar el tamaño de la muestra teórica n_h de cada estrato N_h \(n_h=n⋅N_h/N\). 4. Aplicar muestreo aleatorio simple para construir la muestra
\(n=\frac{NZ^2_{α/_2}pq}{e^2(N−1)+Z^2_{α/_2}pq}\)
#Halla el tamaño teórico de la muestra de cada estrato
#n_h: La muestra teórica de cada estrato desde 2, 3, ...
#N: La población total
#n: muestra
#N_h: tamaño de la población de cada estrato
N=500
n=100
N_h<- c(40, 30, 20, 10)
n_h<- n*N_h/ N
n_h
## [1] 8 6 4 2
cuidadores <- c("Padres", "Abuelos", "Otros familiares", "Otras personas")
data.cuidadores=data.frame(cuidadores = cuidadores, N_h = N_h, n_h = n_h)
data.cuidadores
## cuidadores N_h n_h
## 1 Padres 40 8
## 2 Abuelos 30 6
## 3 Otros familiares 20 4
## 4 Otras personas 10 2
# Según esto el tamaño de la muestra para cada estrato es:
#N1: 8
#N2: 6
#N3: 4
#N4: 2
# Ahora encontraremos los estudiante que se deben seleccionar de cada estrato. Para esto usaremos la ecuación de muestreo aleatorio simple.
n_proporcion_finita <- function(N, e = 0.05, conf = 0.95, p = 0.5){
z <- qnorm(1 - (1-conf)/2)
q <- 1 - p
num <- N * z^2 * p * q
den <- e^2 * (N - 1) + z^2 * p * q
ceiling(num / den)
}
set.seed(123) # hace el muestreo reproducible
# Supón una población etiquetada 1..N
N <- 40
n <- n_proporcion_finita(N, e = 0.05, conf = 0.95, p = 0.5)
muestra_ids <- sample(1:N, size = n, replace = FALSE)
muestra_ids
## [1] 31 15 14 3 38 25 26 27 32 5 19 33 35 28 9 37 8 7 10 34 30 4 36 17 11
## [26] 23 40 12 22 39 21 13 2 16 29 20 1
#Por conglomerados
#Para N_h1=40 y n_h1=8
set.seed(123)
N_conglomerados <- 40
cuidadores1 <- paste("cuidadores1", 1:N_conglomerados)
muestra_cuidadores1 <- sample(cuidadores1, size = 8)
muestra_cuidadores1
## [1] "cuidadores1 31" "cuidadores1 15" "cuidadores1 14" "cuidadores1 3"
## [5] "cuidadores1 38" "cuidadores1 25" "cuidadores1 26" "cuidadores1 27"
#Para N_h2=30 y n_h2=6
set.seed(123)
N_conglomerados <- 30
cuidadores2 <- paste("cuidadores2", 1:N_conglomerados)
muestra_cuidadores2 <- sample(cuidadores2, size = 6)
muestra_cuidadores2
## [1] "cuidadores2 15" "cuidadores2 19" "cuidadores2 14" "cuidadores2 3"
## [5] "cuidadores2 10" "cuidadores2 18"
#Para N_h3=20 y n_h3=4
set.seed(123)
N_conglomerados <- 30
cuidadores3 <- paste("cuidadores3", 1:N_conglomerados)
muestra_cuidadores3 <- sample(cuidadores3, size = 4)
muestra_cuidadores3
## [1] "cuidadores3 15" "cuidadores3 19" "cuidadores3 14" "cuidadores3 3"
#Para N_h4=10 y n_h4=2
set.seed(123)
N_conglomerados <- 30
cuidadores4 <- paste("c4", 1:N_conglomerados)
muestra_cuidadores4 <- sample(cuidadores4, size = 2)
muestra_cuidadores4
## [1] "c4 15" "c4 19"
¿Cuál es la relación entre las horas que dedica un estudiante a repasar para el examen y el puntaje obtenido? Para indagar esta problematica, se usará el enfoque cuantitativo, a partir de una báse de datos con los resultados de una encuesta aplicada a 6607 estudiantes.
Inicialmente se usará el muestreo aleatorio simple para encontrar el tamaño de la muestra a partir de la ecuación:
\(n=\frac{NZ^2_{α/_2}pq}{e^2(N−1)+Z^2_{α/_2}pq}\)
# Tamaño de muestra (población finita)
n_proporcion_finita <- function(N, e = 0.05, conf = 0.95, p = 0.5){
z <- qnorm(1 - (1 - conf)/2)
q <- 1 - p
num <- N * z^2 * p * q
den <- e^2 * (N - 1) + z^2 * p * q
ceiling(num / den)
}
n_proporcion_finita(6607, e = 0.05, conf = 0.95, p = 0.5)
## [1] 364
set.seed(123) # hace el muestreo reproducible
# Supón una población etiquetada 1..N
N <- 6607
n <- n_proporcion_finita(N, e = 0.05, conf = 0.95, p = 0.5)
muestra_ids <- sample(1:N, size = n, replace = FALSE)
# Si tienes un data.frame 'poblacion', usa:
# muestra <- poblacion[sample(1:nrow(poblacion), n), ]
muestra_ids
## [1] 2463 2511 2227 526 4291 2986 1842 1142 3371 5349 5364 5134 3446 4761 1627
## [16] 2757 5107 5211 953 4444 1017 2013 5475 2888 6170 2567 1450 5769 1790 4307
## [31] 2980 1614 555 5991 4469 1167 2592 2538 1799 905 5962 1047 3004 4405 3207
## [46] 3995 5344 166 217 1314 2629 6216 588 1599 4237 4818 3937 4089 2907 4249
## [61] 294 277 5583 41 6234 316 2822 2795 2504 3926 1183 752 3281 374 6601
## [76] 6129 2082 4612 4109 2117 6134 6015 755 5428 5209 1006 2585 2339 1448 3952
## [91] 3358 3980 4767 6265 1134 3230 5184 5603 1934 1501 4576 3783 6211 1914 5967
## [106] 1109 4261 1075 3146 1386 2284 4706 2378 4223 4044 2260 686 3857 6078 5027
## [121] 6387 847 983 4715 6023 4573 6095 151 1638 2208 6299 2474 1029 326 3856
## [136] 2837 1956 5358 5884 4093 5459 985 6183 986 4233 2503 1762 1584 4685 4084
## [151] 5999 2087 2244 1793 4776 5726 6466 1808 344 2507 2992 3092 195 5981 3236
## [166] 3124 4972 2225 4650 2875 2132 5643 4023 3464 1326 3949 4802 2667 3502 2758
## [181] 3833 712 1452 4768 5370 1828 3501 3069 2446 3061 528 4055 1569 6184 6056
## [196] 473 6344 6098 1149 2037 2313 2823 1927 6330 3324 458 3224 4927 1078 5015
## [211] 5658 6379 1313 185 413 4723 2570 1333 6349 5995 4875 1561 564 794 1415
## [226] 3799 1370 4256 3581 2968 3129 4713 357 279 4366 3201 2266 618 1905 337
## [241] 2074 539 5077 956 5877 5786 3625 3462 5618 3008 1445 5177 2211 2286 5793
## [256] 2626 6495 5509 4213 4744 1079 1241 2605 1706 873 757 6061 988 2495 2869
## [271] 2879 4807 5588 1234 4445 1425 3809 6440 4482 1165 2072 3071 6083 5250 2213
## [286] 5823 1612 5497 3853 6314 5565 710 1258 2470 2556 6518 2112 6224 6510 3035
## [301] 6520 1347 791 1987 5001 1341 4903 5342 5407 5854 3657 4388 5346 5910 1708
## [316] 4393 4956 4701 1835 3111 1261 6484 1057 83 3468 866 2325 5119 4172 5214
## [331] 2371 2163 6320 2656 5478 682 6519 3168 1562 3814 989 4052 1961 4007 5834
## [346] 2641 5567 1362 4339 2154 3959 6155 4721 3436 386 2451 4557 141 31 6046
## [361] 5235 6294 4190 3786
Acontinuación se calculan los estimaradores de la muestra seleccionada: 1. Media; 2. Varianza. ### X: media muestral n= 364
library(readr)
BaseDatos.1 <- read_delim("Muestra364.csv",
delim = ";",
show_col_types = FALSE)
BaseDatos.1
## # A tibble: 364 × 6
## cod Hours_Studied Previous_Scores Tutoring_Sessions Physical_Activity
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 23 73 0 3
## 2 2 19 59 2 4
## 3 3 24 91 2 4
## 4 4 29 98 1 4
## 5 5 19 65 3 4
## 6 6 19 89 3 3
## 7 7 29 68 1 2
## 8 8 25 50 1 2
## 9 9 17 80 0 1
## 10 10 23 71 0 5
## # ℹ 354 more rows
## # ℹ 1 more variable: Exam_Score <dbl>
# Media muestral de las variables: puntaje de examen (Exam_Score) y Horas de estudio (Hours_Studied)
mean_Scor<- mean(BaseDatos.1$Exam_Score)
mean_Scor
## [1] 67.09341
mean_Hou<- mean(BaseDatos.1$Hours_Studied)
mean_Hou
## [1] 20.06868
# Varianza muestral de las variables: puntaje de examen (Exam_Score) y Horas de estudio (Hours_Studied)
var_Scor<- var(BaseDatos.1$Exam_Score)
var_Scor
## [1] 14.22266
var_Hou<- var(BaseDatos.1$Hours_Studied)
var_Hou
## [1] 32.44982
En este caso el complemento, es decir para n= 6243
library(readr)
BaseDatos.2 <- read_delim("Muestra_b.csv",
delim = ";",
show_col_types = FALSE)
BaseDatos.2
## # A tibble: 6,243 × 6
## cod Hours_Studied Previous_Scores Tutoring_Sessions Physical_Activity
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 365 24 97 1 4
## 2 366 18 77 1 2
## 3 367 21 86 2 3
## 4 368 20 84 0 4
## 5 369 21 100 0 4
## 6 370 15 90 4 3
## 7 371 20 81 1 3
## 8 372 23 56 1 3
## 9 373 29 68 2 4
## 10 374 26 63 1 2
## # ℹ 6,233 more rows
## # ℹ 1 more variable: Exam_Score <dbl>
# Media muestral de las variables: puntaje de examen (Exam_Score) y Horas de estudio (Hours_Studied) para una muestra mayor a la muestra teórica
mean_Scor2<- mean(BaseDatos.2$Exam_Score)
mean_Scor2
## [1] 67.24395
mean_Hou2<- mean(BaseDatos.2$Hours_Studied)
mean_Hou2
## [1] 19.96989
# Varianza muestral de las variables: puntaje de examen (Exam_Score) y Horas de estudio (Hours_Studied)
var_Scor2<- var(BaseDatos.2$Exam_Score)
var_Scor2
## [1] 15.18992
var_Hou2<- var(BaseDatos.2$Hours_Studied)
var_Hou2
## [1] 36.09233
Aquí se calcula la mediana y la varianza poblacional
library(readr)
BaseDatos.P <- read_delim("BaseDatos_RAC.csv",
delim = ";",
show_col_types = FALSE)
BaseDatos.P
## # A tibble: 6,607 × 6
## cod Hours_Studied Previous_Scores Tutoring_Sessions Physical_Activity
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 23 73 0 3
## 2 2 19 59 2 4
## 3 3 24 91 2 4
## 4 4 29 98 1 4
## 5 5 19 65 3 4
## 6 6 19 89 3 3
## 7 7 29 68 1 2
## 8 8 25 50 1 2
## 9 9 17 80 0 1
## 10 10 23 71 0 5
## # ℹ 6,597 more rows
## # ℹ 1 more variable: Exam_Score <dbl>
# Media poblacional de las variables: puntaje de examen (Exam_Score) y Horas de estudio (Hours_Studied)
mean_ScorP<- mean(BaseDatos.P$Exam_Score)
mean_ScorP
## [1] 67.23566
mean_HouP<- mean(BaseDatos.P$Hours_Studied)
mean_HouP
## [1] 19.97533
# Varianza poblacional de las variables: puntaje de examen (Exam_Score) y Horas de estudio (Hours_Studied)
N <- sum(!is.na(BaseDatos.P$Exam_Score))
N
## [1] 6607
var_ScorP<- var(BaseDatos.P$Exam_Score) *(N-1)/N
var_ScorP
## [1] 15.13336
var_HouP<- var(BaseDatos.P$Hours_Studied) *(N-1)/N
var_HouP
## [1] 35.88179
# Tabla resumen de estadísticos y parametros
tabla1 <- data.frame(
Muestra = c("BaseDatos.1", "BaseDatos.2", "BaseDatos.P"),
Media = c(mean_Scor, mean_Scor2, mean_ScorP),
Varianza = c(var_Scor, var_Scor2, var_ScorP)
)
tabla1
## Muestra Media Varianza
## 1 BaseDatos.1 67.09341 14.22266
## 2 BaseDatos.2 67.24395 15.18992
## 3 BaseDatos.P 67.23566 15.13336
# Grafica de medias y varianzas de las muestras seleccionadas para las variables Horas de estudio y puntaje obtenido en el examen
# Estimador puntual para los estadisticos de la muestra donde n=364
cat("Estimaciones puntuales (media):\n")
## Estimaciones puntuales (media):
cat("Exam_Score:", mean_Scor, "\nHours_Studied:", mean_Hou, "\n")
## Exam_Score: 67.09341
## Hours_Studied: 20.06868
# Calcular medias de cada conjunto
medias <- c(
mean(BaseDatos.1$Exam_Score, na.rm = TRUE),
mean(BaseDatos.2$Exam_Score, na.rm = TRUE),
mean(BaseDatos.P$Exam_Score, na.rm = TRUE)
)
# Nombres de las muestras
nombres <- c("n=364", "n=6243", "Población")
# Crear el data frame
media_df <- data.frame(Conjunto = nombres, Media = medias)
# Graficar
barplot(media_df$Media,
names.arg = media_df$Conjunto,
col = "lightgreen",
main = "Medias de dos muestras y la población",
ylab = "Media del puntaje",
border = "darkgreen")
Según el concepto de estimador puntual, se espera que la media
poblacional de cada variable sea parecida a la media de la muestra en
cada una de esas variables, es decir, 67. 1 puntos para la variable
Exam_Score y 20.1 horas para la variable Hours_Studied. Esta afirnación
se puede comprobar en los resultados de la tabla1 y la grafica de barras
comparativa de las medias y las varinzas.
Un estimador \(\hat{\theta}\) es si, al aumentar el tamaño de la muestra \(n\), el estimador se aproxima al valor verdadero del parámetro. Formalmente, se dice que: \[ \lim_{n \to \infty} P\big(|\hat{\theta}_n - \theta| < \varepsilon\big) = 1 \quad \text{para todo } \varepsilon > 0. \]
Esto quiere decir que, cuando \(n\) crece, la probabilidad de que el estimador esté ``cerca’’ de \(\theta\) se aproxima a 1. En otras palabras, con muestras muy grandes, el estimador casi seguramente estará muy próximo al valor real del parámetro
# Histograma media de la muestra teórica n = 364
hist(BaseDatos.1$Exam_Score,
mean_Scor = "Histograma de puntajes del examen",
xlab = "Puntaje del examen",
ylab = "Frecuencia",
col = "lightblue",
border = "blue")
## Warning in plot.window(xlim, ylim, "", ...): "mean_Scor" es un parámetro
## gráfico inválido
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "mean_Scor" es un parámetro gráfico inválido
## Warning in axis(1, ...): "mean_Scor" es un parámetro gráfico inválido
## Warning in axis(2, at = yt, ...): "mean_Scor" es un parámetro gráfico inválido
abline(v = mean(BaseDatos.1$Exam_Score, na.rm = TRUE),
col = "red",
lwd = 2,
lty = 2)
mean_Scor <- mean(BaseDatos.1$Exam_Score, na.rm = TRUE)
print(paste("Media del puntaje:", round(mean_Scor, 2)))
## [1] "Media del puntaje: 67.09"
# Histograma media de la muestra mayor n= 6243
hist(BaseDatos.2$Exam_Score,
mean_Scor2 = "Histograma de puntajes del examen",
xlab = "Puntaje del examen",
ylab = "Frecuencia",
col = "lightblue",
border = "blue")
## Warning in plot.window(xlim, ylim, "", ...): "mean_Scor2" es un parámetro
## gráfico inválido
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "mean_Scor2" es un parámetro gráfico inválido
## Warning in axis(1, ...): "mean_Scor2" es un parámetro gráfico inválido
## Warning in axis(2, at = yt, ...): "mean_Scor2" es un parámetro gráfico inválido
abline(v = mean(BaseDatos.2$Exam_Score, na.rm = TRUE),
col = "red",
lwd = 2,
lty = 2)
mean_Scor2 <- mean(BaseDatos.2$Exam_Score, na.rm = TRUE)
print(paste("Media del puntaje:", round(mean_Scor2, 2)))
## [1] "Media del puntaje: 67.24"
# Histograma de la media poblacional N= 6607
hist(BaseDatos.P$Exam_Score,
mean_ScorP = "Histograma de puntajes del examen",
xlab = "Puntaje del examen",
ylab = "Frecuencia",
col = "lightblue",
border = "blue")
## Warning in plot.window(xlim, ylim, "", ...): "mean_ScorP" es un parámetro
## gráfico inválido
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "mean_ScorP" es un parámetro gráfico inválido
## Warning in axis(1, ...): "mean_ScorP" es un parámetro gráfico inválido
## Warning in axis(2, at = yt, ...): "mean_ScorP" es un parámetro gráfico inválido
abline(v = mean(BaseDatos.P$Exam_Score, na.rm = TRUE),
col = "red",
lwd = 2,
lty = 2)
mean_ScorP <- mean(BaseDatos.P$Exam_Score, na.rm = TRUE)
print(paste("Media poblacional del puntaje es:", round(mean_ScorP, 2)))
## [1] "Media poblacional del puntaje es: 67.24"
if (mean_ScorP > mean_Scor2 & mean_Scor2 > mean_Scor) {
print("Es consistente")
} else {
print("No es consistente")
}
## [1] "No es consistente"
if (var_ScorP > var_Scor2 & var_Scor2 > var_Scor) {
print("Es consistente")
} else {
print("No es consistente")
}
## [1] "No es consistente"
# Analisis de consistencia de los estadisticos en relación con la variable horas de estudio
if (mean_HouP> mean_Hou2 & mean_Hou2 > mean_Hou) {
print("Es consistente")
} else {
print("No es consistente")
}
## [1] "No es consistente"
if (var_HouP > var_Hou2 & var_Hou2 > var_Hou) {
print("Es consistente")
} else {
print("No es consistente")
}
## [1] "No es consistente"
Análisis: Al aumentar el valor de la muestra para la variable Exam_Score encontramos que el valor de la media se acerca a la media poblacional, explicitamente si n= 364 X= 67.09; si n= 6243 X= 67.24 y si n=N= 6607 es decir la población, X= 67.24. En consecuencia la media muestral Exam_Scorede la variable Exam_Score es consistente.
# Calcular las varianzas de cada base de datos y variable
#Varianza para las dos muestras y la variable Exam_Score
varianzas <- c(
var(BaseDatos.1$Exam_Score, na.rm = TRUE),
var(BaseDatos.2$Exam_Score, na.rm = TRUE),
var(BaseDatos.P$Exam_Score, na.rm = TRUE)
)
# Nombres de las muestras
nombres <- c("Muestra", "Muestra 2", "Población")
# Crear el data frame
varianzas_df <- data.frame(Conjunto = nombres, Varianza = varianzas)
# Graficar las varianzas
barras <- barplot(varianzas_df$Varianza,
names.arg = varianzas_df$Conjunto,
col = "lightblue",
main = "Varianzas de las muestras y la población",
ylab = "Varianza del puntaje",
border = "blue")
# Agregar los valores de la varianza encima de cada barra
text(x = barras,
y = varianzas_df$Varianza,
labels = round(varianzas_df$Varianza, 2),
pos = 1,
cex = 0.9,
col = "blue")
var_Scor<- var(BaseDatos.1$Exam_Score)
var_Scor
## [1] 14.22266
var_Scor2<- var(BaseDatos.2$Exam_Score)
var_Scor2
## [1] 15.18992
N <- sum(!is.na(BaseDatos.P$Exam_Score))
N
## [1] 6607
var_ScorP<- var(BaseDatos.P$Exam_Score) *(N-1)/N
var_ScorP
## [1] 15.13336
if (var_ScorP < var_Scor) {
print("Es eficiente")
} else {
print("No es eficiente")
}
## [1] "No es eficiente"
if (var_ScorP < var_Scor2) {
print("Es eficiente")
} else {
print("No es eficiente")
}
## [1] "Es eficiente"
#Varianza para las dos muestras y la variable Horas de estudio (Hours_Studied)
varianzas <- c(
var(BaseDatos.1$Hours_Studied, na.rm = TRUE),
var(BaseDatos.2$Hours_Studied, na.rm = TRUE),
var(BaseDatos.P$Hours_Studied, na.rm = TRUE)
)
# Nombres de las muestras
nombres <- c("Muestra", "Muestra 2", "Población")
# Crear el data frame
varianzas_df <- data.frame(Conjunto = nombres, Varianza = varianzas)
# Graficar las varianzas
barras <- barplot(varianzas_df$Varianza,
names.arg = varianzas_df$Conjunto,
col = "lightblue",
main = "Varianzas de las muestras y la población",
ylab = "Varianza del puntaje",
border = "blue")
# Agregar los valores de la varianza encima de cada barra
text(x = barras,
y = varianzas_df$Varianza,
labels = round(varianzas_df$Varianza, 2),
pos = 1,
cex = 0.9,
col = "blue")
var_Hou<- var(BaseDatos.1$Hours_Studied)
var_Hou
## [1] 32.44982
var_Hou2<- var(BaseDatos.2$Hours_Studied)
var_Hou2
## [1] 36.09233
var_HouP<- var(BaseDatos.P$Hours_Studied) *(N-1)/N
var_HouP
## [1] 35.88179
if (var_HouP < var_Hou) {
print("Es eficiente")
} else {
print("No es eficiente")
}
## [1] "No es eficiente"
if (var_HouP < var_Hou2) {
print("Es eficiente")
} else {
print("No es eficiente")
}
## [1] "Es eficiente"
BaseDatos <- read.csv("BaseDatos_RAC.csv", sep = ";", header = TRUE)
# Verificar estructura
str(BaseDatos)
## 'data.frame': 6607 obs. of 6 variables:
## $ cod : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Hours_Studied : int 23 19 24 29 19 19 29 25 17 23 ...
## $ Previous_Scores : int 73 59 91 98 65 89 68 50 80 71 ...
## $ Tutoring_Sessions: int 0 2 2 1 3 3 1 1 0 0 ...
## $ Physical_Activity: int 3 4 4 4 4 3 2 2 1 5 ...
## $ Exam_Score : int 67 61 74 71 70 71 67 66 69 72 ...
summary(BaseDatos$Exam_Score)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 55.00 65.00 67.00 67.24 69.00 101.00
# ============================================================
# 2. Definir parámetros poblacionales y muestrales
# ============================================================
N <- 6607 # Tamaño de la población
n <- 364 # Tamaño de la muestra
Z <- 1.96 # Nivel de confianza del 95%
# ============================================================
# 3. Calcular estadísticos poblacionales
# ============================================================
media_poblacion <- mean(BaseDatos$Exam_Score, na.rm = TRUE)
var_poblacion <- var(BaseDatos$Exam_Score, na.rm = TRUE)
desv_poblacion <- sqrt(var_poblacion)
# ============================================================
# 4. Tomar una muestra aleatoria simple
# ============================================================
set.seed(123)
muestra <- BaseDatos.1[sample(1:N, size = n, replace = FALSE), ]
media_muestra <- mean(muestra$Exam_Score, na.rm = TRUE)
var_muestra <- var(muestra$Exam_Score, na.rm = TRUE)
# ============================================================
# 5. Calcular error estándar y evaluar suficiencia
# ============================================================
EEM <- sqrt(var_poblacion / n * ((N - n) / (N - 1)))
E <- Z * EEM
criterio <- (E / media_poblacion) * 100
if (criterio < 5) {
mensaje <- paste0("✅ La muestra es suficiente. El error relativo es de ", round(criterio, 2), "%.")
} else {
mensaje <- paste0("⚠️ La muestra NO es suficiente. El error relativo es de ", round(criterio, 2), "%.")
}
# ============================================================
# 6. Mostrar resultados numéricos
# ============================================================
cat("\n--- RESULTADOS ---\n")
##
## --- RESULTADOS ---
cat("Media poblacional:", round(media_poblacion, 2), "\n")
## Media poblacional: 67.24
cat("Media muestral:", round(media_muestra, 2), "\n")
## Media muestral: 67.94
cat("Varianza poblacional:", round(var_poblacion, 2), "\n")
## Varianza poblacional: 15.14
cat("Varianza muestral:", round(var_muestra, 2), "\n")
## Varianza muestral: 9.18
cat("Error estándar:", round(EEM, 3), "\n")
## Error estándar: 0.198
cat("Error máximo (95%): ±", round(E, 2), "\n")
## Error máximo (95%): ± 0.39
cat("Error relativo (%):", round(criterio, 2), "%\n")
## Error relativo (%): 0.58 %
cat(mensaje, "\n")
## ✅ La muestra es suficiente. El error relativo es de 0.58%.
if(!require(ggplot2)) install.packages("ggplot2", dependencies = TRUE)
## Cargando paquete requerido: ggplot2
library(ggplot2)
ggplot() +
geom_histogram(data = BaseDatos, aes(x = Exam_Score, y = ..density..),
bins = 30, fill = "skyblue", alpha = 0.5, color = "black") +
geom_histogram(data = muestra, aes(x = Exam_Score, y = ..density..),
bins = 30, fill = "orange", alpha = 0.5, color = "black") +
geom_vline(aes(xintercept = media_poblacion), color = "blue", linetype = "dashed", size = 1) +
geom_vline(aes(xintercept = media_muestra), color = "red", linetype = "dotted", size = 1) +
annotate("text", x = media_poblacion, y = 0.09, label = paste("Media Poblacional =", round(media_poblacion,2)),
color = "blue", vjust = -1, hjust = 0) +
annotate("text", x = media_muestra, y = 0.02, label = paste("Media Muestral =", round(media_muestra,2)),
color = "red", vjust = -1, hjust = 0) +
labs(title = "Comparación entre distribución poblacional y muestral",
subtitle = mensaje,
x = "Exam_Score",
y = "Densidad") +
theme_minimal(base_size = 15)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: Removed 347 rows containing non-finite outside the scale range
## (`stat_bin()`).
Un estimador \(\hat{\theta}\) es insesgado si su esperanza coincide con el valor verdadero del parámetro: \[ E[\hat{\theta}] = \theta. \]
Esto significa que, en promedio, el estimador acierta el valor del parámetro: si se tomaran muchas muestras y se calculara \(\hat{\theta}\) en cada una de ellas, el promedio de esos valores tendería a \(\theta\).
Ejemplo: la media muestral \(\bar{X}\) es un estimador insesgado de la media poblacional \(\mu\): \[ E[\bar{X}] = \mu. \]
# Histograma media de la muestra
hist(BaseDatos.1$Exam_Score,
mean_Scor = "Histograma de puntajes del examen",
xlab = "Puntaje del examen",
ylab = "Frecuencia",
col = "lightblue",
border = "blue")
## Warning in plot.window(xlim, ylim, "", ...): "mean_Scor" es un parámetro
## gráfico inválido
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "mean_Scor" es un parámetro gráfico inválido
## Warning in axis(1, ...): "mean_Scor" es un parámetro gráfico inválido
## Warning in axis(2, at = yt, ...): "mean_Scor" es un parámetro gráfico inválido
abline(v = mean(BaseDatos.1$Exam_Score, na.rm = TRUE),
col = "red",
lwd = 2,
lty = 2)
# Mostrar el valor de la media en consola
mean_Scor <- mean(BaseDatos.1$Exam_Score, na.rm = TRUE)
print(paste("Media del puntaje:", round(mean_Scor, 2)))
## [1] "Media del puntaje: 67.09"
# Histograma de la media poblacional
hist(BaseDatos.P$Exam_Score,
mean_ScorP = "Histograma de puntajes del examen",
xlab = "Puntaje del examen",
ylab = "Frecuencia",
col = "lightblue",
border = "blue")
## Warning in plot.window(xlim, ylim, "", ...): "mean_ScorP" es un parámetro
## gráfico inválido
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "mean_ScorP" es un parámetro gráfico inválido
## Warning in axis(1, ...): "mean_ScorP" es un parámetro gráfico inválido
## Warning in axis(2, at = yt, ...): "mean_ScorP" es un parámetro gráfico inválido
abline(v = mean(BaseDatos.P$Exam_Score, na.rm = TRUE),
col = "red",
lwd = 2,
lty = 2)
mean_ScorP <- mean(BaseDatos.P$Exam_Score, na.rm = TRUE)
print(paste("Media poblacional del puntaje es:", round(mean_ScorP, 2)))
## [1] "Media poblacional del puntaje es: 67.24"
library(ggplot2)
# Agregar una columna que identifique la base
BaseDatos.1$Grupo <- "BaseDatos.1"
BaseDatos.P$Grupo <- "BaseDatos.P"
# Unir ambas bases
BaseTotal <- rbind(BaseDatos.1, BaseDatos.P)
# Graficar los histogramas superpuestos
ggplot(BaseTotal, aes(x = Exam_Score, fill = Grupo)) +
geom_histogram(alpha = 0.5, position = "identity", binwidth = 5, color = "black") +
geom_vline(data = aggregate(Exam_Score ~ Grupo, data = BaseTotal, mean),
aes(xintercept = Exam_Score, color = Grupo),
linetype = "dashed", size = 1.2) +
labs(title = "Comparación de distribuciones de Exam_Score entre dos bases",
x = "Puntaje del examen",
y = "Frecuencia",
fill = "Base de datos") +
theme_minimal()
#Verificación del sego para la muestra teórica
if (mean_ScorP != mean_Scor) {
print("Si hay sesgo en el estimador de Media de Exam_Score en la muestra teórica")
} else {
print("El estimador de media de Exam_Score es insesgado")
}
## [1] "Si hay sesgo en el estimador de Media de Exam_Score en la muestra teórica"
#Verificación del sego para la muestra mayor
if (mean_ScorP != mean_Scor2) {
print("Si hay sesgo en el estimador de Media de Exam_Score en la muestra mayor")
} else {
print("El estimador de media de Exam_Score es insesgado")
}
## [1] "Si hay sesgo en el estimador de Media de Exam_Score en la muestra mayor"
Análisis: Al comparar los resultados de las medias de la variable Exam_Score en la muestra y en la población, encontramos que su valores corresponden a 67.09 puntos y 67. 24 puntos respectivamente. En un sentido estricto esto indica que los datos son sesgados, aunque esten muy cercanos (0.15 puntos). Las graficas y en la tabla 1, se puede apreciar esta mínima discrepancia.
CONTINUACIÓN CLASE 15-11-25 # Cálculo del interválo de confianza conociendo el paramétro
library(readr)
BaseDatos.P <- read_delim("BaseDatos_RAC.csv",
delim = ";",
show_col_types = FALSE)
BaseDatos.P
## # A tibble: 6,607 × 6
## cod Hours_Studied Previous_Scores Tutoring_Sessions Physical_Activity
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 23 73 0 3
## 2 2 19 59 2 4
## 3 3 24 91 2 4
## 4 4 29 98 1 4
## 5 5 19 65 3 4
## 6 6 19 89 3 3
## 7 7 29 68 1 2
## 8 8 25 50 1 2
## 9 9 17 80 0 1
## 10 10 23 71 0 5
## # ℹ 6,597 more rows
## # ℹ 1 more variable: Exam_Score <dbl>
BaseDatos.1 <- read_delim("Muestra364.csv",
delim = ";",
show_col_types = FALSE)
BaseDatos.1
## # A tibble: 364 × 6
## cod Hours_Studied Previous_Scores Tutoring_Sessions Physical_Activity
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 23 73 0 3
## 2 2 19 59 2 4
## 3 3 24 91 2 4
## 4 4 29 98 1 4
## 5 5 19 65 3 4
## 6 6 19 89 3 3
## 7 7 29 68 1 2
## 8 8 25 50 1 2
## 9 9 17 80 0 1
## 10 10 23 71 0 5
## # ℹ 354 more rows
## # ℹ 1 more variable: Exam_Score <dbl>
# 1. Desvianción estándar para una muestra de la base de datos de rendimiento académico
nivel_confianza = 0.95
muestra_media <- mean(BaseDatos.1$Hours_Studied)
muestra_media
## [1] 20.06868
desviacion_estandar <- sd(BaseDatos.1$Hours_Studied)
desviacion_estandar
## [1] 5.696474
# 2. Tamaño de la muestra
tamano_muestra <- length(BaseDatos.1$Hours_Studied)
tamano_muestra
## [1] 364
# 3. Error estándar
error_estandar <- desviacion_estandar / sqrt(tamano_muestra)
error_estandar
## [1] 0.2985764
# 4. Valor crítico cuando se conoce el parametro _ se conoce la población
#se usa qnorm porque la muestra es mayor a 30 y conocemos el parametro - media de la población
valor_critico <- qnorm((1 + nivel_confianza)/2, muestra_media, desviacion_estandar)
valor_critico
## [1] 31.23357
valor_critico1 <- qnorm((1 + nivel_confianza)/2)
valor_critico1
## [1] 1.959964
# 5. Margen error
margen_error <- valor_critico * error_estandar
margen_error
## [1] 9.325604
# Intervalo de confianza
intervalo_confianza <- c(muestra_media - margen_error,
muestra_media + margen_error)
cat("IC del 95% para la media:", intervalo_confianza)
## IC del 95% para la media: 10.74308 29.39429
library(readr)
BaseDatos.P <- read_delim("BaseDatos_RAC.csv",
delim = ";",
show_col_types = FALSE)
BaseDatos.P
## # A tibble: 6,607 × 6
## cod Hours_Studied Previous_Scores Tutoring_Sessions Physical_Activity
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 23 73 0 3
## 2 2 19 59 2 4
## 3 3 24 91 2 4
## 4 4 29 98 1 4
## 5 5 19 65 3 4
## 6 6 19 89 3 3
## 7 7 29 68 1 2
## 8 8 25 50 1 2
## 9 9 17 80 0 1
## 10 10 23 71 0 5
## # ℹ 6,597 more rows
## # ℹ 1 more variable: Exam_Score <dbl>
BaseDatos.1 <- read_delim("Muestra364.csv",
delim = ";",
show_col_types = FALSE)
BaseDatos.1
## # A tibble: 364 × 6
## cod Hours_Studied Previous_Scores Tutoring_Sessions Physical_Activity
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 23 73 0 3
## 2 2 19 59 2 4
## 3 3 24 91 2 4
## 4 4 29 98 1 4
## 5 5 19 65 3 4
## 6 6 19 89 3 3
## 7 7 29 68 1 2
## 8 8 25 50 1 2
## 9 9 17 80 0 1
## 10 10 23 71 0 5
## # ℹ 354 more rows
## # ℹ 1 more variable: Exam_Score <dbl>
BaseDatos.Br <- read_delim("births14.csv",
delim = ";",
show_col_types = FALSE)
BaseDatos.Br
## # A tibble: 1,000 × 1
## fage,mage,mature,weeks,premie,visits,gained,weight,lowbirthweight,sex,habit…¹
## <chr>
## 1 34,34,younger mom,37,full term,14,28,6.96,not low,male,nonsmoker,married,whi…
## 2 36,31,younger mom,41,full term,12,41,8.86,not low,female,nonsmoker,married,w…
## 3 37,36,mature mom,37,full term,10,28,7.51,not low,female,nonsmoker,married,no…
## 4 NA,16,younger mom,38,full term,NA,29,6.19,not low,male,nonsmoker,not married…
## 5 32,31,younger mom,36,premie,12,48,6.75,not low,female,nonsmoker,married,white
## 6 32,26,younger mom,39,full term,14,45,6.69,not low,female,nonsmoker,married,w…
## 7 37,36,mature mom,36,premie,10,20,6.13,not low,female,nonsmoker,married,white
## 8 29,24,younger mom,40,full term,13,65,6.74,not low,male,nonsmoker,not married…
## 9 30,32,younger mom,39,full term,15,25,8.94,not low,female,nonsmoker,married,w…
## 10 29,26,younger mom,39,full term,11,22,9.12,not low,male,nonsmoker,not married…
## # ℹ 990 more rows
## # ℹ abbreviated name:
## # ¹`fage,mage,mature,weeks,premie,visits,gained,weight,lowbirthweight,sex,habit,marital,whitemom`
births <- read.csv("births14.csv")
head(births)
## fage mage mature weeks premie visits gained weight lowbirthweight
## 1 34 34 younger mom 37 full term 14 28 6.96 not low
## 2 36 31 younger mom 41 full term 12 41 8.86 not low
## 3 37 36 mature mom 37 full term 10 28 7.51 not low
## 4 NA 16 younger mom 38 full term NA 29 6.19 not low
## 5 32 31 younger mom 36 premie 12 48 6.75 not low
## 6 32 26 younger mom 39 full term 14 45 6.69 not low
## sex habit marital whitemom
## 1 male nonsmoker married white
## 2 female nonsmoker married white
## 3 female nonsmoker married not white
## 4 male nonsmoker not married white
## 5 female nonsmoker married white
## 6 female nonsmoker married white
# 1. Desvianción estándar para una muestra de la base de datos de births n< 30
nivel_confianza = 0.95
muestra_media.ej <- mean(births$weight)
muestra_media.ej
## [1] 7.19816
desviacion_estandar.ej <- sd(births$weight)
desviacion_estandar.ej
## [1] 1.306775
# 2. Tamaño de la muestra
tamano_muestra.ej <- length(births$weight)
tamano_muestra.ej
## [1] 1000
# 3. Error estándar
error_estandar.ej <- desviacion_estandar.ej / sqrt(tamano_muestra.ej)
error_estandar.ej
## [1] 0.04132386
# 4. Valor crítico cuando se conoce el parametro _ se conoce la población
#se usa qnorm porque la muestra es mayor a 30 y conocemos el parametro - media de la población
valor_critico.ej <- qt((1 + nivel_confianza)/2, df = tamano_muestra - 1)
valor_critico.ej
## [1] 1.966521
# Margen error
margen_error.ej <- valor_critico.ej * error_estandar.ej
margen_error.ej
## [1] 0.08126422
# Intervalo de confianza
intervalo_confianza.ej <- c(muestra_media.ej - margen_error.ej,
muestra_media.ej + margen_error.ej)
cat("IC del 95% para la media:", intervalo_confianza.ej)
## IC del 95% para la media: 7.116896 7.279424
library(readr)
BaseDatos.1 <- read_delim("Muestra364.csv",
delim = ";",
show_col_types = FALSE)
BaseDatos.1
## # A tibble: 364 × 6
## cod Hours_Studied Previous_Scores Tutoring_Sessions Physical_Activity
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 23 73 0 3
## 2 2 19 59 2 4
## 3 3 24 91 2 4
## 4 4 29 98 1 4
## 5 5 19 65 3 4
## 6 6 19 89 3 3
## 7 7 29 68 1 2
## 8 8 25 50 1 2
## 9 9 17 80 0 1
## 10 10 23 71 0 5
## # ℹ 354 more rows
## # ℹ 1 more variable: Exam_Score <dbl>
# 1. atos para la proporción ejemplo
estud15 <- 120
total_muestra <- 340
nivel_confianza = 0.95
proporcion_muestra <- estud15/ total_muestra
proporcion_muestra
## [1] 0.3529412
error_estandar_proporcion <- sqrt((proporcion_muestra * (1 - proporcion_muestra)) / total_muestra)
error_estandar_proporcion
## [1] 0.02591693
valor_critico_proporcion <- qnorm((1 + nivel_confianza) / 2)
valor_critico_proporcion
## [1] 1.959964
margen_error_proporcion <- valor_critico_proporcion * error_estandar_proporcion
margen_error_proporcion
## [1] 0.05079625
# Intervalo de confianza
intervalo_confianza_proporcion <- c(proporcion_muestra - margen_error_proporcion, proporcion_muestra + margen_error_proporcion)
intervalo_confianza_proporcion
## [1] 0.3021449 0.4037374
library(readr)
BaseDatos.1<- read_delim("Muestra364.csv",
delim = ";",
show_col_types = FALSE)
BaseDatos.1
## # A tibble: 364 × 6
## cod Hours_Studied Previous_Scores Tutoring_Sessions Physical_Activity
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 23 73 0 3
## 2 2 19 59 2 4
## 3 3 24 91 2 4
## 4 4 29 98 1 4
## 5 5 19 65 3 4
## 6 6 19 89 3 3
## 7 7 29 68 1 2
## 8 8 25 50 1 2
## 9 9 17 80 0 1
## 10 10 23 71 0 5
## # ℹ 354 more rows
## # ℹ 1 more variable: Exam_Score <dbl>
# 1. Datos para la variable horas de estudio
x <- BaseDatos.1$Hours_Studied
n <- length(x)
n
## [1] 364
# Definir la categoría: dedicación baja ( horas de estudio)
Dedicacion_baja<- x < 15
Dedicacion_baja
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE TRUE
## [25] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE
## [37] FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
## [49] FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [61] FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [73] FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
## [85] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
## [97] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [109] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
## [121] FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE
## [133] TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE
## [145] FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [157] FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [169] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [181] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
## [193] FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
## [205] TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [217] FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE TRUE
## [229] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
## [241] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
## [253] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE TRUE
## [265] FALSE TRUE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE
## [277] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE
## [289] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [301] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [313] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [325] TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [337] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
## [349] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
## [361] FALSE FALSE FALSE FALSE
# Proporción muestral
casos_favorables<- sum(Dedicacion_baja)
casos_favorables
## [1] 58
proporcion_dedicacion_baja <- casos_favorables/ n
proporcion_dedicacion_baja
## [1] 0.1593407
print(paste0("Para la muestra analizada, los estudiantes que dedican menos de 15 horas para un exámen es del:", round(proporcion_dedicacion_baja, 4), "Esta proporción indica que de los 340 estudiantes, aproximadamente, el 16% de los estudiantes dedica menos de 15 horas de estudio para un exámen"))
## [1] "Para la muestra analizada, los estudiantes que dedican menos de 15 horas para un exámen es del:0.1593Esta proporción indica que de los 340 estudiantes, aproximadamente, el 16% de los estudiantes dedica menos de 15 horas de estudio para un exámen"
# Datos para la variabe puntuación obtenida en el examen
x1 <- BaseDatos.1$Exam_Score
n1 <- length(x1)
# Definir la categoría: dedicación baja ( horas de estudio)
rendimiento_bajo2 <- x1 <= 60
rendimiento_bajo2
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [49] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [73] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
## [85] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [97] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [109] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [121] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [133] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [145] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [157] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [169] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [181] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [193] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [205] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [217] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
## [229] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [241] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [253] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [265] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [277] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE
## [289] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [301] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [313] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [325] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [337] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
## [349] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [361] FALSE FALSE FALSE FALSE
# Proporción muestral
casos_favorables.r <- sum(rendimiento_bajo2)
casos_favorables.r
## [1] 6
proporcion_rendimiento_bajo2 <- casos_favorables.r / n
proporcion_rendimiento_bajo2
## [1] 0.01648352
print(paste0("Para la muestra analizada, los estudiantes que dedican menos de 15 horas para un exámen es del:", round(proporcion_rendimiento_bajo2, 4), "Esta proporción indica que del porcentaje de estudiante, aproximadamente, el 1.6% tienen bajo puntaje osea menor o igual a 60 puntos"))
## [1] "Para la muestra analizada, los estudiantes que dedican menos de 15 horas para un exámen es del:0.0165Esta proporción indica que del porcentaje de estudiante, aproximadamente, el 1.6% tienen bajo puntaje osea menor o igual a 60 puntos"
alpha <- 0.05
z_crit <- qnorm(1 - alpha/2)
# Intervalo de confianza
LI <- proporcion_rendimiento_bajo2 - z_crit * sqrt(proporcion_rendimiento_bajo2 * (1 - proporcion_rendimiento_bajo2) / n)
LS <- proporcion_rendimiento_bajo2 + z_crit * sqrt(proporcion_rendimiento_bajo2 * (1 - proporcion_rendimiento_bajo2) / n)
c(LI, LS)
## [1] 0.003403354 0.029563679
cat("De acuerdo a los resultado se puede inferir groso modo que el número de horas dedicadas a estudiar para el examen influye en los resultados del mismo. Sin embargo, de manera especifica se puede afirmar que con un nivel de confianza del 95% los estudiantes que obtienen un puntaje menor o igual a 60 oscila entre 0.03% y el 2.9%\n")
## De acuerdo a los resultado se puede inferir groso modo que el número de horas dedicadas a estudiar para el examen influye en los resultados del mismo. Sin embargo, de manera especifica se puede afirmar que con un nivel de confianza del 95% los estudiantes que obtienen un puntaje menor o igual a 60 oscila entre 0.03% y el 2.9%