El presente trabajo ha sido realizado por el siguiente equipo:
Estudiante de Ingeniería Agrícola
Estudiante de Ingeniería Agrícola
Estudiante de Ingeniería Química
Estudiante de Ingeniería Civil
Este trabajo tiene como propósito aplicar herramientas de estadística inferencial al análisis de datos recolectados mediante una encuesta sobre los hábitos diarios de 315 personas en Bogotá. La investigación se enfoca en explorar y comparar el uso del tiempo libre en diferentes actividades como navegar por internet, leer, estar al aire libre, o usar el celular, con énfasis en identificar posibles diferencias según el género y el estrato socioeconómico.
A partir del análisis estadístico de la base de datos
encuesta_habitos.csv, se busca obtener conclusiones
respaldadas por métodos cuantitativos como el análisis descriptivo, la
construcción de intervalos de confianza, y la realización de pruebas de
hipótesis. Estas herramientas permiten estimar parámetros poblacionales
y detectar diferencias significativas entre subgrupos, con el objetivo
de realizar una interpretación rigurosa y fundamentada de los datos.
Para realizar inferencias estadísticas válidas, se toma una muestra aleatoria de los datos. Esto garantiza representatividad y evita sesgos. Para este trabajo se uso la semilla 20160 para hacer reproducible el proceso.
Los intervalos de confianza (IC) permiten estimar un parámetro poblacional (como la media o la proporción) con un margen de error determinado. No dan un valor exacto, sino un rango donde probablemente se encuentre el valor verdadero del parámetro con un nivel de confianza especificado (como 95 % o 99 %).
Un intervalo de confianza del 95 % para la media significa que, si se tomaran muchas muestras aleatorias y se construyera un intervalo para cada una, aproximadamente el 95 % de esos intervalos contendrían la verdadera media poblacional.
Cuando la muestra es suficientemente grande (n ≥ 30) o se asume distribución normal:
\[ IC = \bar{x} \pm z_{\alpha/2} \cdot \frac{s}{\sqrt{n}} \]
Donde:
\[ IC = \hat{p} \pm z_{\alpha/2} \cdot \sqrt{\frac{\hat{p}(1 - \hat{p})}{n}} \]
Donde:
\[ IC = (\hat{p}_1 - \hat{p}_2) \pm z_{\alpha/2} \cdot \sqrt{\frac{\hat{p}_1(1 - \hat{p}_1)}{n_1} + \frac{\hat{p}_2(1 - \hat{p}_2)}{n_2}} \]
La prueba de Chi-cuadrado (\(\chi^2\)) se usa para analizar si existe una asociación significativa entre dos variables categóricas (por ejemplo, género y uso de internet).
Esta prueba compara las frecuencias observadas en cada categoría con las que se esperarían si no hubiera relación entre las variables.
\[ \chi^2 = \sum \frac{(O_i - E_i)^2}{E_i} \]
Donde:
De esta forma se puede hacer lo siguiente
1.Realice un análisis descriptivo numérico completo para la variable tiempo en internet que incluya las medidas de tendencia central, de variablidad, de posición y de forma.
library(ggplot2)
library(dplyr)
tiempo_internet <- Base_encuesta_Habitos_Proyecto$tiempo_internet
# Cálculos
media_tiempo <- mean(tiempo_internet, na.rm=TRUE)
mediana_tiempo <- median(tiempo_internet, na.rm=TRUE)
moda_tiempo <- as.numeric(names(sort(table(tiempo_internet), decreasing=TRUE))[1])
desviacion <- sd(tiempo_internet, na.rm=TRUE)
varianza <- var(tiempo_internet, na.rm=TRUE)
rango <- range(tiempo_internet, na.rm=TRUE)
recorrido <- diff(rango)
cuartiles <- quantile(tiempo_internet, probs=c(0.25, 0.5, 0.75), na.rm=TRUE)
asimetria <- sum((tiempo_internet - media_tiempo)^3, na.rm=TRUE)/(length(na.omit(tiempo_internet))*sd(tiempo_internet, na.rm=TRUE)^3)
curtosis <- sum((tiempo_internet - media_tiempo)^4, na.rm=TRUE)/(length(na.omit(tiempo_internet))*sd(tiempo_internet, na.rm=TRUE)^4)
cat("Medidas descriptivas para la variable 'tiempo_internet':\n")## Medidas descriptivas para la variable 'tiempo_internet':
## Media: 2.83
## Mediana: 2.9
## Moda: 3.2
## Desviacion estándar: 0.81
## Varianza: 0.65
## Recorrido: 4.5
## Cuartiles:
## 25% 50% 75%
## 2.3 2.9 3.4
## Coeficiente de asimetria: -0.15
## Coeficiente de curtosis: 2.74
ggplot(Base_encuesta_Habitos_Proyecto, aes(x = tiempo_internet)) +
geom_histogram(binwidth = 0.5, fill = "skyblue", color = "black") +
labs(x = "Horas por día", y = "Frecuencia") +
theme_minimal()ggplot(Base_encuesta_Habitos_Proyecto, aes(y = tiempo_internet)) +
geom_boxplot(fill = "lightgreen", color = "black") +
labs(y = "Horas por día") +
theme_minimal()ggplot(Base_encuesta_Habitos_Proyecto, aes(x = tiempo_internet)) +
geom_density(fill = "plum", alpha = 0.6, color = "darkblue") +
labs(x = "Horas por dia", y = "Densidad") +
theme_minimal()El análisis estadístico de la variable tiempo_internet
evidencia que los encuestados dedican en promedio 2.83 horas diarias al
uso de internet. La mediana es de 2.9 y la moda es 3.2, lo que indica
una ligera asimetría positiva, ya que la media es mayor que ambas.
El coeficiente de asimetría calculado refuerza esta interpretación al mostrar un valor superior a cero, lo cual también se observa visualmente en la gráfica de densidad, donde la curva presenta una cola hacia la derecha. Además, el boxplot confirma la presencia de valores atípicos y una dispersión significativa, mientras que el histograma sugiere una concentración de observaciones entre las 2 y 4 horas diarias.
En conjunto, se concluye que el tiempo de uso diario de internet entre los encuestados es variable, presenta distribución asimétrica a la derecha y existen individuos que utilizan internet mucho más que el promedio general.
Realice un análisis descriptivo numérico completo para la variable tiempo en internet que incluya las medidas de tendencia central, de variablidad, de posición y de forma.
set.seed(20160)
muestra69 <- Base_encuesta_Habitos_Proyecto %>%
dplyr::sample_n(size = 69, replace = FALSE)
str(muestra69)## tibble [69 × 11] (S3: tbl_df/tbl/data.frame)
## $ id : num [1:69] 49 117 202 21 56 237 263 203 286 88 ...
## $ genero : chr [1:69] "M" "F" "F" "M" ...
## $ edad : num [1:69] 45 39 34 18 59 27 36 38 46 29 ...
## $ estrato : num [1:69] 1 2 5 4 1 1 3 3 2 4 ...
## $ tiempo_celular : num [1:69] 3.3 6 2.8 1.8 3.7 2.5 2.7 4.2 4.7 3.2 ...
## $ tiempo_tv : num [1:69] 2.1 1.6 0.8 1.8 1.5 1.7 2.8 2.9 1.4 0.9 ...
## $ tiempo_internet : num [1:69] 1.7 1.7 3.9 2.7 2.9 3.2 2.4 3.3 4 3.4 ...
## $ tiempo_lectura : num [1:69] 1.9 0 1.8 1.3 0 0.4 2.1 1 1.8 1.7 ...
## $ tiempo_deporte : num [1:69] 0 0 1.3 3.1 1.5 0.4 1.4 0.2 0.5 0.2 ...
## $ tiempo_aire_libre : num [1:69] 0 0 0 1.5 1.6 2.6 2.2 0 3.2 2.6 ...
## $ tiempo_total_pantalla: num [1:69] 7.1 9.3 7.5 6.3 8.1 7.4 7.9 10.4 10.1 7.5 ...
## # A tibble: 6 × 11
## id genero edad estrato tiempo_celular tiempo_tv tiempo_internet
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 49 M 45 1 3.3 2.1 1.7
## 2 117 F 39 2 6 1.6 1.7
## 3 202 F 34 5 2.8 0.8 3.9
## 4 21 M 18 4 1.8 1.8 2.7
## 5 56 M 59 1 3.7 1.5 2.9
## 6 237 M 27 1 2.5 1.7 3.2
## # ℹ 4 more variables: tiempo_lectura <dbl>, tiempo_deporte <dbl>,
## # tiempo_aire_libre <dbl>, tiempo_total_pantalla <dbl>
ggplot(muestra69, aes(x = tiempo_internet)) +
geom_histogram(binwidth = 0.5, fill = "orange", color = "black") +
labs(x = "Horas por día", y = "Frecuencia") +
theme_minimal()ggplot(muestra69, aes(x = tiempo_internet)) +
geom_density(fill = "lightblue", alpha = 0.6, color = "blue") +
labs(x = "Horas por día", y = "Densidad") +
theme_minimal()Se seleccionó una muestra aleatoria de 69 personas utilizando como
semilla la suma de los últimos cuatro dígitos del documento de identidad
de cada integrante del grupo:
8324 + 1162 + 4031 + 6643 = 20160.
La muestra extraída conserva la estructura de la población respecto al tiempo diario dedicado a internet. Esto se refleja en el histograma y la curva de densidad generados, los cuales presentan una distribución similar a la del total de encuestados.
Construya un intervalo de confianza del 95 % para la media deltiempo dedicado a la lectura en la muestra. Interprete su resultado.
tiempo_lectura <- muestra69$tiempo_lectura
n <- length(na.omit(tiempo_lectura))
media <- mean(tiempo_lectura, na.rm = TRUE)
desv <- sd(tiempo_lectura, na.rm = TRUE)
error <- qt(0.975, df = n - 1) * (desv / sqrt(n))
LI <- media - error
LS <- media + error
cat("Media:", round(media, 2), "\n")## Media: 1.07
## Desviación estándar: 0.78
## Tamaño de muestra: 69
## Intervalo de confianza al 95%: [ 0.88 , 1.25 ]
df_ic <- data.frame(
media = mean(muestra69$tiempo_lectura, na.rm = TRUE),
LI = LI,
LS = LS)
ggplot(df_ic, aes(x = "Media", y = media)) +
geom_point(size = 4, color = "darkred") +
geom_errorbar(aes(ymin = LI, ymax = LS), width = 0.2, color = "darkred") +
labs(x = "", y = "Horas de lectura por día") +
theme_minimal() +
coord_flip()En la Figura se representa el intervalo de confianza del 95% para la media del tiempo diario dedicado a la lectura, construido a partir de la muestra de 69 personas. El punto rojo en el centro indica la media muestral estimada (1.07 horas por día), mientras que la barra horizontal muestra el intervalo de confianza, que se extiende desde 0.88 hasta 1.25 horas por día.
Este intervalo significa que, si repitiéramos este estudio muchas veces con diferentes muestras del mismo tamaño, el 95% de los intervalos construidos de esta manera contendrían la verdadera media poblacional
¿Hay diferencias significativas en el tiempo promedio dedicado a actividades al aire libre entre hombres y mujeres? Realice una prueba de hipótesis para comparar las medias y construya un intervalo de confianza del 99 % para la diferencia.
Sea \( \mu_H \) la media de tiempo al aire libre para hombres y \( \mu_M \) para mujeres.
hombres <- subset(Base_encuesta_Habitos_Proyecto, genero == "M")$tiempo_aire_libre
mujeres <- subset(Base_encuesta_Habitos_Proyecto, genero == "F")$tiempo_aire_libre
# Prueba t para muestras independientes con varianzas desiguales
prueba_t <- t.test(hombres, mujeres, var.equal = FALSE, conf.level = 0.99)
prueba_t##
## Welch Two Sample t-test
##
## data: hombres and mujeres
## t = 0.062708, df = 312.25, p-value = 0.95
## alternative hypothesis: true difference in means is not equal to 0
## 99 percent confidence interval:
## -0.2131575 0.2237284
## sample estimates:
## mean of x mean of y
## 1.446795 1.441509
Si el valor p es menor que 0.01 (nivel de significancia del 1%), se rechaza H₀.
En este caso, el valor p es mucho mayor, por lo tanto no se rechaza la hipótesis nula.
## [1] -0.2131575 0.2237284
## attr(,"conf.level")
## [1] 0.99
Esto quiere decir que la verdadera diferencia entre el tiempo promedio que los hombres y mujeres dedican a actividades al aire libre se encuentra entre -0.215 y 0.225 horas, como el intervalo incluye el 0, no se puede afirmar que haya una diferencia significativa entre las medias.
¿Existe diferencia en la variabilidad del tiempo dedicado al celular entre hombres y mujeres? Realice una prueba adecuada.
# Cargar datos
habitos <- read_excel("D:/PAULA/Downloads/base_encuesta_habitos.xlsx")
library(dplyr)
library(ggplot2)
library(ggpubr) #instalar este paquete
library(knitr)
library(readxl)
# Separar por género (base R)
hombres <- habitos[habitos$genero == "M", "tiempo_celular", drop = TRUE]
mujeres <- habitos[habitos$genero == "F", "tiempo_celular", drop = TRUE]
# Calcular varianzas
var_hombres <- var(hombres, na.rm = TRUE)
var_mujeres <- var(mujeres, na.rm = TRUE)
cat("Varianza hombres:", round(var_hombres, 3), "\n")## Varianza hombres: 0.663
## Varianza mujeres: 0.72
##
## F test to compare two variances
##
## data: hombres and mujeres
## F = 0.92069, num df = 155, denom df = 158, p-value = 0.6063
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.6724073 1.2612637
## sample estimates:
## ratio of variances
## 0.9206932
# Gráfico de distribución de tiempo en celular por género
g1 <- ggplot(habitos, aes(x=tiempo_celular, fill=genero)) +
geom_density(alpha=0.5) +
labs(title="Distribución del tiempo en celular por género",
x="Horas al día",
y="Densidad") +
theme_minimal() +
scale_fill_manual(values=c("#66c2a5","#fc8d62"))g2 <- ggplot(habitos, aes(x=genero, y=tiempo_celular, fill=genero)) +
geom_boxplot(alpha=0.7) +
labs(title="Boxplot: tiempo en celular por género",
x="Género",
y="Horas al día") +
theme_minimal() +
scale_fill_manual(values=c("#66c2a5","#fc8d62"))
ggarrange(g1, g2, ncol=2)p_valor_var <- prueba_var$p.value # p-valor de la prueba F
if (p_valor_var > 0.05) {
cat("Conclusión:\n",
"Como p =", round(p_valor_var, 3), "> 0.05, no se rechaza H0.\n",
"No hay evidencia estadística de una diferencia significativa en la variabilidad",
"del tiempo en celular entre hombres y mujeres.\n\n")
} else {
cat("Conclusión:\n",
"Como p =", round(p_valor_var, 3), "<= 0.05, se rechaza H0.\n",
"Hay evidencia de una diferencia en la variabilidad del tiempo en celular entre hombres y mujeres.\n\n")
}## Conclusión:
## Como p = 0.606 > 0.05, no se rechaza H0.
## No hay evidencia estadística de una diferencia significativa en la variabilidad del tiempo en celular entre hombres y mujeres.
Para resolver este ejercicio, cambie el tamaño de la muestra a 81 y defina una variable binaria que sea 1 si una persona dedica más de 3 horas al día a internet, y 0 en caso contrario. ¿La proporción de personas que dedican más de 3 horas al día a internet es la misma en hombres y mujeres? Use un alfa de 0.01.
# Crear variable binaria
habitos <- habitos %>%
mutate(mas_3h_internet = ifelse(tiempo_internet > 3, 1, 0))# Tabla de contingencia
tabla_prop <- table(habitos$genero, habitos$mas_3h_internet)
kable(tabla_prop, caption="Tabla de frecuencia >3h internet por género")| 0 | 1 | |
|---|---|---|
| F | 86 | 73 |
| M | 97 | 59 |
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: tabla_prop
## X-squared = 1.7983, df = 1, p-value = 0.1799
# Gráfico de proporciones
prop_df <- habitos %>%
group_by(genero) %>%
summarise(prop_3h = mean(mas_3h_internet)*100)ggplot(prop_df, aes(x=genero, y=prop_3h, fill=genero)) +
geom_col(width=0.5) +
geom_text(aes(label=paste0(round(prop_3h,1),"%")), vjust=-0.5, size=5) +
labs(title="Proporción de personas >3h en internet",
x="Género", y="% Personas") +
theme_minimal() +
scale_fill_manual(values=c("#66c2a5","#fc8d62"))p_valor_prop <- prop_test$p.value # p-valor de la prueba de proporciones
if (p_valor_prop > 0.01) {
cat("Conclusión Punto 6:\n",
"Como p =", round(p_valor_prop, 3), "> 0.01, no se rechaza H0.\n",
"No hay evidencia estadística suficiente para afirmar que la proporción",
"de personas con más de 3 horas en internet sea distinta entre hombres y mujeres.\n")
} else {
cat("Conclusión Punto 6:\n",
"Como p =", round(p_valor_prop, 3), "<= 0.01, se rechaza H0.\n",
"Hay evidencia de que la proporción de personas con más de 3 horas en internet",
"es distinta entre hombres y mujeres.\n")
}## Conclusión Punto 6:
## Como p = 0.18 > 0.01, no se rechaza H0.
## No hay evidencia estadística suficiente para afirmar que la proporción de personas con más de 3 horas en internet sea distinta entre hombres y mujeres.
Construya un intervalo de confianza del 95% para la diferencia de proporciones entre hombres y mujeres que dedican más de tres horas al día en internet. ¿es consistente el intervalo construido con la conclusión del ejercicio anterior?
Cuando queremos comparar proporciones entre dos grupos independientes, podemos construir un intervalo de confianza para la diferencia de proporciones \(p_1 - p_2\). La fórmula para un intervalo del 95% es:
\[ \hat{p}_1 - \hat{p}_2 \pm z_{\alpha/2} \cdot \sqrt{\frac{\hat{p}_1(1 - \hat{p}_1)}{n_1} + \frac{\hat{p}_2(1 - \hat{p}_2)}{n_2}} \]
Donde: - \(\hat{p}_1\): proporción
de hombres con más de 3 horas en internet
- \(\hat{p}_2\): proporción de mujeres
con más de 3 horas en internet
- \(z_{0.025} = 1.96\) para 95% de
confianza
Supuestos: - Las muestras son aleatorias e independientes - \(n_1p_1, n_1(1-p_1), n_2p_2, n_2(1-p_2) > 5\)
library(readxl)
# Cargar base de datos
df <- read_excel("D:/PAULA/Downloads/base_encuesta_habitos.xlsx")
# Verificar carga
is.data.frame(df)## [1] TRUE
## # A tibble: 6 × 11
## id genero edad estrato tiempo_celular tiempo_tv tiempo_internet
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 F 42 1 3.5 2.4 3.1
## 2 2 F 34 4 1.9 1.2 3.7
## 3 3 F 22 2 4.2 3.7 2.5
## 4 4 M 52 4 3.6 1.5 2.8
## 5 5 M 44 5 2.2 0.5 3.4
## 6 6 M 37 1 2.4 2.2 3.4
## # ℹ 4 more variables: tiempo_lectura <dbl>, tiempo_deporte <dbl>,
## # tiempo_aire_libre <dbl>, tiempo_total_pantalla <dbl>
# Crear variable binaria si tiempo en internet > 3 horas
df$mas_de_3h <- ifelse(df$tiempo_internet > 3, 1, 0)
# Verificar conteo de éxitos por género
tabla <- table(df$genero, df$mas_de_3h)
tabla##
## 0 1
## F 86 73
## M 97 59
# Según conteo:
# Hombres: 59 usan >3h (de 156 en total)
# Mujeres: 73 usan >3h (de 159 en total)
x <- c(59, 73)
n <- c(156, 159)
# Calcular intervalo de confianza para diferencia de proporciones
resultado_ic <- prop.test(x = x, n = n, conf.level = 0.95)
ic <- round(resultado_ic$conf.int, 3)
cat("Con un 95% de confianza, la diferencia de proporciones (M - F) está entre:", ic)## Con un 95% de confianza, la diferencia de proporciones (M - F) está entre: -0.196 0.034
Compare el tiempo promedio dedicado a la lectura entre los estratos 1 y 6. ¿Hay evidencia estadística de una diferencia? Realice una prueba de hipo ́tesis adecuada.
Para comparar promedios de una variable cuantitativa entre dos grupos independientes (por ejemplo, estrato 1 y estrato 6), se usa la prueba t de Student para muestras independientes.
\[ t = \frac{\bar{x}_1 - \bar{x}_2}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}} \]
# Filtrar tiempo_lectura por estrato 1 y 6
grupo_1 <- df[df$estrato == 1, "tiempo_lectura", drop = TRUE]
grupo_6 <- df[df$estrato == 6, "tiempo_lectura", drop = TRUE]n1 <- length(grupo_1)
n6 <- length(grupo_6)
x1 <- mean(grupo_1)
x6 <- mean(grupo_6)
s1 <- sd(grupo_1)
s6 <- sd(grupo_6)
cat("Estrato 1: n =", n1, ", Promedio =", round(x1, 2), ", Desviación =", round(s1, 2), "\n")## Estrato 1: n = 92 , Promedio = 0.74 , Desviación = 0.72
## Estrato 6: n = 7 , Promedio = 1.79 , Desviación = 0.96
##
## Shapiro-Wilk normality test
##
## data: grupo_1
## W = 0.88908, p-value = 1.084e-06
##
## Shapiro-Wilk normality test
##
## data: grupo_6
## W = 0.91203, p-value = 0.4101
## [1] 14 89
## [1] 1 7
##
## F test to compare two variances
##
## data: grupo_1 and grupo_6
## F = 0.56037, num df = 91, denom df = 6, p-value = 0.222
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.1138533 1.4292613
## sample estimates:
## ratio of variances
## 0.5603736
res <- t.test(
x = grupo_1,
y = grupo_6,
alternative = "two.sided",
var.equal = FALSE,
conf.level = 0.95
)
res##
## Welch Two Sample t-test
##
## data: grupo_1 and grupo_6
## t = -2.8003, df = 6.5218, p-value = 0.02853
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -1.9335647 -0.1487335
## sample estimates:
## mean of x mean of y
## 0.7445652 1.7857143
cat("Intervalo de confianza del 95% para la diferencia de medias (estrato 1 - 6):",
round(res$conf.int[1], 3), "a", round(res$conf.int[2], 3), "\n")## Intervalo de confianza del 95% para la diferencia de medias (estrato 1 - 6): -1.934 a -0.149
if (res$p.value < 0.05) {
cat("Se rechaza H₀: hay diferencia significativa en los promedios de lectura entre estratos 1 y 6.\n")
} else {
cat("No se rechaza H₀: no hay evidencia estadística de diferencia en los promedios de lectura entre estratos 1 y 6.\n")
}## Se rechaza H₀: hay diferencia significativa en los promedios de lectura entre estratos 1 y 6.
Conclusión adicional:
El promedio de lectura diario en el estrato 1 es aproximadamente 0.74
horas, y en el estrato 6 es 1.79 horas.
Como el valor p es mayor a 0.05 y el intervalo incluye al 0, no se
rechaza la hipótesis nula.