library(readxl)
library(dplyr)
library (ggplot2)
library(descriptr)
library(knitr)
library(modeest)
library(fdth)
library(plotrix)
library(flextable)EncuestaSitiosComida <- read_excel("EncuestaSitiosComida.xlsx")
base_trabajo<- EncuestaSitiosComida
set.seed(6094)
muestra_trabajo <- sample_n(base_trabajo, size = 290, replace = FALSE)
is.data.frame(muestra_trabajo)## [1] TRUE
Sección A: Medidas descriptivas y tablas
Punto 1
Calcule e interprete media, mediana, moda, desviación estándar y coeficiente de variación para las variables cuantitativas. Interpretación esperada: Identificar concentraciones, asimetrías, atípicos y diferencias visibles entre variables. Comparar media vs mediana para inferir asimetría; usar CV para comparar dispersión relativa
Tiempo que lleva almorzando en el sitio (meses)
media_v2 <- mean(muestra_trabajo$V2_TiempoConoce_meses)
mediana_v2 <- median(muestra_trabajo$V2_TiempoConoce_meses)
moda_v2 <- mlv1(muestra_trabajo$V2_TiempoConoce_meses)
sd_v2 <- sd(muestra_trabajo$V2_TiempoConoce_meses)
cv_v2 <- (sd_v2/media_v2)*100
df_v2 <- data.frame(
Medida = c("Media", "Mediana", "Moda", "Desviación Estándar", "Coeficiente de Variación"),
Valor = c(media_v2, mediana_v2, moda_v2, sd_v2, cv_v2)
)
flextable(df_v2)Medida | Valor |
|---|---|
Media | 32.49310 |
Mediana | 25.00000 |
Moda | 16.22069 |
Desviación Estándar | 25.05982 |
Coeficiente de Variación | 77.12352 |
Calificación atención (1-4)
media_v5 <- mean(muestra_trabajo$V5_Atencion_1a4)
mediana_v5 <- median(muestra_trabajo$V5_Atencion_1a4)
moda_v5 <- mlv1(muestra_trabajo$V5_Atencion_1a4)
sd_v5 <- sd(muestra_trabajo$V5_Atencion_1a4)
cv_v5 <- (sd_v5/media_v5)*100
df_v5 <- data.frame(
Medida = c("Media", "Mediana", "Moda", "Desviación Estándar", "Coeficiente de Variación"),
Valor = c(media_v5, mediana_v5, moda_v5, sd_v5, cv_v5)
)
flextable(df_v5)Medida | Valor |
|---|---|
Media | 2.520690 |
Mediana | 3.000000 |
Moda | 2.696552 |
Desviación Estándar | 1.052885 |
Coeficiente de Variación | 41.769723 |
Número de visitas a la semana
media_v6 <- mean(muestra_trabajo$V6_VisitasSemana)
mediana_v6 <- median(muestra_trabajo$V6_VisitasSemana)
moda_v6 <- mlv1(muestra_trabajo$V6_VisitasSemana)
sd_v6 <- sd(muestra_trabajo$V6_VisitasSemana)
cv_v6 <- (sd_v6/media_v6)*100
df_v6 <- data.frame(
Medida = c("Media", "Mediana", "Moda", "Desviación Estándar", "Coeficiente de Variación"),
Valor = c(media_v6, mediana_v6, moda_v6, sd_v6, cv_v6)
)
flextable(df_v6)Medida | Valor |
|---|---|
Media | 3.055172 |
Mediana | 3.000000 |
Moda | 2.186207 |
Desviación Estándar | 1.941281 |
Coeficiente de Variación | 63.540799 |
Precio del almuerzo (en pesos)
media_v7 <- mean(muestra_trabajo$V7_PrecioAlmuerzo)
mediana_v7 <- median(muestra_trabajo$V7_PrecioAlmuerzo)
moda_v7 <- mlv1(muestra_trabajo$V7_PrecioAlmuerzo)
sd_v7 <- sd(muestra_trabajo$V7_PrecioAlmuerzo)
cv_v7 <- (sd_v7/media_v7)*100
df_v7 <- data.frame(
Medida = c("Media", "Mediana", "Moda", "Desviación Estándar", "Coeficiente de Variación"),
Valor = c(media_v7, mediana_v7, moda_v7, sd_v7, cv_v7)
)
flextable(df_v7)Medida | Valor |
|---|---|
Media | 22,466.38621 |
Mediana | 21,956.00000 |
Moda | 19,847.50345 |
Desviación Estándar | 4,525.32804 |
Coeficiente de Variación | 20.14266 |
Edad (en años)
media_v9 <- mean(muestra_trabajo$V9_Edad)
mediana_v9 <- median(muestra_trabajo$V9_Edad)
moda_v9 <- mlv1(muestra_trabajo$V9_Edad)
sd_v9 <- sd(muestra_trabajo$V9_Edad)
cv_v9 <- (sd_v9/media_v9)*100
df_v9 <- data.frame(
Medida = c("Media", "Mediana", "Moda", "Desviación Estándar", "Coeficiente de Variación"),
Valor = c(media_v9, mediana_v9, moda_v9, sd_v9, cv_v9)
)
flextable(df_v9)Medida | Valor |
|---|---|
Media | 38.56897 |
Mediana | 38.00000 |
Moda | 34.98621 |
Desviación Estándar | 10.39116 |
Coeficiente de Variación | 26.94176 |
Ingresos (en pesos)
media_v11 <- mean(muestra_trabajo$V11_Ingresos)
mediana_v11 <- median(muestra_trabajo$V11_Ingresos)
moda_v11 <- mlv1(muestra_trabajo$V11_Ingresos)
sd_v11 <- sd(muestra_trabajo$V11_Ingresos)
cv_v11 <- (sd_v11/media_v11)*100
df_v11 <- data.frame(
Medida = c("Media", "Mediana", "Moda", "Desviación Estándar", "Coeficiente de Variación"),
Valor = c(media_v11, mediana_v11, moda_v11, sd_v11, cv_v11)
)
flextable(df_v11)Medida | Valor |
|---|---|
Media | 3,884,943.59655 |
Mediana | 3,153,659.00000 |
Moda | 2,045,632.87586 |
Desviación Estándar | 2,659,074.02900 |
Coeficiente de Variación | 68.44563 |
Gastos (en pesos)
media_v12 <- mean(muestra_trabajo$V12_Gastos)
mediana_v12 <- median(muestra_trabajo$V12_Gastos)
moda_v12 <- mlv1(muestra_trabajo$V12_Gastos)
sd_v12 <- sd(muestra_trabajo$V12_Gastos)
cv_v12 <- (sd_v12/media_v12)*100
df_v12 <- data.frame(
Medida = c("Media", "Mediana", "Moda", "Desviación Estándar", "Coeficiente de Variación"),
Valor = c(media_v12, mediana_v12, moda_v12, sd_v12, cv_v12)
)
flextable(df_v12)Medida | Valor |
|---|---|
Media | 2,359,804.87586 |
Mediana | 1,857,592.50000 |
Moda | 1,314,499.49655 |
Desviación Estándar | 1,709,120.92349 |
Coeficiente de Variación | 72.42637 |
Resumen
resumen_final <- data.frame(
variable = c("Tiempo que lleva almorzando en el sitio (meses)",
"Calificación atención (1-4)",
"Número de visitas a la semana",
"Precio del almuerzo (en pesos)",
"Edad (en años)",
"Ingresos (en pesos)",
"Gastos (en pesos)"),
media = c(media_v2, media_v5, media_v6, media_v7,
media_v9, media_v11, media_v12),
mediana = c(mediana_v2, mediana_v5, mediana_v6, mediana_v7,
mediana_v9, mediana_v11, mediana_v12),
moda = c(moda_v2, moda_v5, moda_v6, moda_v7,
moda_v9, moda_v11, moda_v12),
ds = c(sd_v2, sd_v5, sd_v6, sd_v7,
sd_v9, sd_v11, sd_v12),
cv = c(cv_v2, cv_v5, cv_v6, cv_v7,
cv_v9, cv_v11, cv_v12)
)
resumen_final[, 2:6] <- round(resumen_final[, 2:6], 2)
kable(resumen_final)| variable | media | mediana | moda | ds | cv |
|---|---|---|---|---|---|
| Tiempo que lleva almorzando en el sitio (meses) | 32.49 | 25 | 16.22 | 25.06 | 77.12 |
| Calificación atención (1-4) | 2.52 | 3 | 2.70 | 1.05 | 41.77 |
| Número de visitas a la semana | 3.06 | 3 | 2.19 | 1.94 | 63.54 |
| Precio del almuerzo (en pesos) | 22466.39 | 21956 | 19847.50 | 4525.33 | 20.14 |
| Edad (en años) | 38.57 | 38 | 34.99 | 10.39 | 26.94 |
| Ingresos (en pesos) | 3884943.60 | 3153659 | 2045632.88 | 2659074.03 | 68.45 |
| Gastos (en pesos) | 2359804.88 | 1857592 | 1314499.50 | 1709120.92 | 72.43 |
Punto 2
Calcule e interprete cuartiles, RIQ y percentiles 10, 50, 90 para todas las variables.
Tiempo que lleva almorzando en el sitio (meses)
cuartiles_v2 <- quantile(muestra_trabajo$V2_TiempoConoce_meses,probs = c(0.25, 0.50, 0.75))
riq_v2 <- IQR(muestra_trabajo$V2_TiempoConoce_meses)
percentiles_v2 <- quantile(muestra_trabajo$V2_TiempoConoce_meses, probs = c(0.10, 0.50, 0.90))Calificación atención (1-4)
cuartiles_v5 <- quantile(muestra_trabajo$V5_Atencion_1a4,probs = c(0.25, 0.50, 0.75))
riq_v5 <- IQR(muestra_trabajo$V5_Atencion_1a4)
percentiles_v5 <- quantile(muestra_trabajo$V5_Atencion_1a4, probs = c(0.10, 0.50, 0.90))Número de visitas a la semana
cuartiles_v6 <- quantile(muestra_trabajo$V6_VisitasSemana,probs = c(0.25, 0.50, 0.75))
riq_v6 <- IQR(muestra_trabajo$V6_VisitasSemana)
percentiles_v6 <- quantile(muestra_trabajo$V6_VisitasSemana, probs = c(0.10, 0.50, 0.90))Precio del almuerzo (en pesos)
cuartiles_v7 <- quantile(muestra_trabajo$V7_PrecioAlmuerzo, probs = c(0.25, 0.50, 0.75))
riq_v7 <- IQR(muestra_trabajo$V7_PrecioAlmuerzo)
percentiles_v7 <- quantile(muestra_trabajo$V7_PrecioAlmuerzo, probs = c(0.10, 0.50, 0.90))Edad (en años)
cuartiles_v9 <- quantile(muestra_trabajo$V9_Edad, probs = c(0.25, 0.50, 0.75))
riq_v9 <- IQR(muestra_trabajo$V9_Edad)
percentiles_v9 <- quantile(muestra_trabajo$V9_Edad, probs = c(0.10, 0.50, 0.90))Ingresos (en pesos)
cuartiles_v11 <- quantile(muestra_trabajo$V11_Ingresos, probs = c(0.25, 0.50, 0.75))
riq_v11 <- IQR(muestra_trabajo$V11_Ingresos)
percentiles_v11 <- quantile(muestra_trabajo$V11_Ingresos, probs = c(0.10, 0.50, 0.90))Gastos (en pesos)
cuartiles_v12 <- quantile(muestra_trabajo$V12_Gastos, probs = c(0.25, 0.50, 0.75))
riq_v12 <- IQR(muestra_trabajo$V12_Gastos)
percentiles_v12 <- quantile(muestra_trabajo$V12_Gastos, probs = c(0.10, 0.50, 0.90))Resumen
resumen_cuartiles <- data.frame(
variable = c("Tiempo que lleva almorzando en el sitio (meses)",
"Calificación atención (1-4)",
"Número de visitas a la semana",
"Precio del almuerzo (en pesos)",
"Edad (en años)",
"Ingresos (en pesos)",
"Gastos (en pesos)"),
Q1 = c(cuartiles_v2[1], cuartiles_v5[1], cuartiles_v6[1], cuartiles_v7[1],
cuartiles_v9[1], cuartiles_v11[1], cuartiles_v12[1]),
Q2 = c(cuartiles_v2[2], cuartiles_v5[2], cuartiles_v6[2], cuartiles_v7[2],
cuartiles_v9[2], cuartiles_v11[2], cuartiles_v12[2]),
Q3 = c(cuartiles_v2[3], cuartiles_v5[3], cuartiles_v6[3], cuartiles_v7[3],
cuartiles_v9[3], cuartiles_v11[3], cuartiles_v12[3]),
RIQ = c(riq_v2, riq_v5, riq_v6, riq_v7,
riq_v9, riq_v11, riq_v12),
P10 = c(percentiles_v2[1], percentiles_v5[1], percentiles_v6[1], percentiles_v7[1],
percentiles_v9[1], percentiles_v11[1], percentiles_v12[1]),
P50 = c(percentiles_v2[2], percentiles_v5[2], percentiles_v6[2], percentiles_v7[2],
percentiles_v9[2], percentiles_v11[2], percentiles_v12[2]),
P90 = c(percentiles_v2[3], percentiles_v5[3], percentiles_v6[3], percentiles_v7[3],
percentiles_v9[3], percentiles_v11[3], percentiles_v12[3])
)
kable(resumen_cuartiles)| variable | Q1 | Q2 | Q3 | RIQ | P10 | P50 | P90 |
|---|---|---|---|---|---|---|---|
| Tiempo que lleva almorzando en el sitio (meses) | 15.00 | 25 | 41.75 | 26.75 | 10.0 | 25 | 66.0 |
| Calificación atención (1-4) | 2.00 | 3 | 3.00 | 1.00 | 1.0 | 3 | 4.0 |
| Número de visitas a la semana | 1.00 | 3 | 4.00 | 3.00 | 1.0 | 3 | 6.0 |
| Precio del almuerzo (en pesos) | 18827.25 | 21956 | 26194.75 | 7367.50 | 16633.1 | 21956 | 28778.6 |
| Edad (en años) | 31.00 | 38 | 45.00 | 14.00 | 26.9 | 38 | 54.0 |
| Ingresos (en pesos) | 2001808.75 | 3153659 | 4793630.25 | 2791821.50 | 1500000.0 | 3153659 | 7319765.4 |
| Gastos (en pesos) | 1219634.75 | 1857592 | 2951625.50 | 1731990.75 | 882277.8 | 1857592 | 4421303.6 |
Punto 3
Construya e interprete una tabla de frecuencias (8 clases) para V7_PrecioAlmuerzo con frecuencias absolutas, relativas y acumuladas.
|
|
Punto 4
Tablas de contingencia: V4_Atencion_cat vs V1_SitioZona (freq y proporciones por fila).Interprete cada resultado
| Zona Centro | Zona Norte | Zona Sur | |
|---|---|---|---|
| Buena | 45 | 29 | 15 |
| Excelente | 20 | 24 | 18 |
| Mala | 29 | 16 | 17 |
| Regular | 35 | 20 | 22 |
| Zona Centro | Zona Norte | Zona Sur | |
|---|---|---|---|
| Buena | 0.506 | 0.326 | 0.169 |
| Excelente | 0.323 | 0.387 | 0.290 |
| Mala | 0.468 | 0.258 | 0.274 |
| Regular | 0.455 | 0.260 | 0.286 |
Punto 5
Compare media y desviación estándar de V11_Ingresos por V15_Sexo. ¿Cuál grupo es más homogéneo)
hombres <- subset(muestra_trabajo, V15_Sexo == "Masculino")
mujeres <- subset(muestra_trabajo, V15_Sexo == "Femenino")
media_hombres <- mean(hombres$V11_Ingresos)
sd_hombres <- sd(hombres$V11_Ingresos)
media_mujeres <- mean(mujeres$V11_Ingresos)
sd_mujeres <- sd(mujeres$V11_Ingresos)
tabla_comparativa <- data.frame(
sexo = c("Masculino", "Femenino"),
media_ingresos = c(media_hombres, media_mujeres),
desv_est_ingresos = c(sd_hombres, sd_mujeres)
)
kable(tabla_comparativa)| sexo | media_ingresos | desv_est_ingresos |
|---|---|---|
| Masculino | 3915782 | 2701130 |
| Femenino | 3851443 | 2621966 |
Sección B: gráficos
Punto 6
Grafique histograma y polígono de frecuencias para todas las variables. Comente asimetría y curtosis
**Debido a que los histogramas funcionan con variables cuantitativas discretas, los elaboramos solo con ese tipo.
Tiempo que lleva almorzando en el sitio (meses)
tabla_tiempo <- fdt(x =muestra_trabajo$V2_TiempoConoce_meses,k =10)
plot(tabla_tiempo, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fh", main = "Histograma del tiempo que lleva almorzando en el sitio (meses)")plot(tabla_tiempo, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fp", main = "Poligono de frecuencias del tiempo que lleva almorzando en el sitio (meses)")asim_tiempo <- ds_skewness(muestra_trabajo$V2_TiempoConoce_meses)
curt_tiempo <- ds_kurtosis(muestra_trabajo$V2_TiempoConoce_meses)
df_tiempo <- data.frame (asim_tiempo, curt_tiempo)
kable(df_tiempo, caption = "Medidas de Forma")| asim_tiempo | curt_tiempo |
|---|---|
| 1.734309 | 3.582536 |
Número de visitas a la semana
tabla_visitas <- fdt(x =muestra_trabajo$V6_VisitasSemana,k =10)
plot(tabla_visitas, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fh", main = "Histograma del número de visitas a la semana")plot(tabla_visitas, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fp", main = "Poligono del número de visitas a la semana")asim_visitas<- ds_skewness(muestra_trabajo$V6_VisitasSemana)
curt_visitas <- ds_kurtosis(muestra_trabajo$V6_VisitasSemana)
df_visitas <- data.frame (asim_visitas, curt_visitas)
kable(df_visitas, caption = "Medidas de Forma")| asim_visitas | curt_visitas |
|---|---|
| 0.5818369 | -0.0830734 |
Precio del almuerzo (en pesos)
tabla_precio <- fdt(x =muestra_trabajo$V7_PrecioAlmuerzo,k =10)
plot(tabla_precio, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fh", main = "Histograma del precio del almuerzo (en pesos)")plot(tabla_precio, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fp", main = "Poligono del precio del almuerzo (en pesos)")asim_precio <- ds_skewness(muestra_trabajo$V7_PrecioAlmuerzo)
curt_precio <- ds_kurtosis(muestra_trabajo$V7_PrecioAlmuerzo)
df_precio <- data.frame (asim_precio, curt_precio)
kable(df_precio, caption = "Medidas de Forma")| asim_precio | curt_precio |
|---|---|
| 0.1335854 | -1.081637 |
Edad (en años)
tabla_edad <- fdt(x =muestra_trabajo$V9_Edad,k =10)
plot(tabla_edad, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fh", main = "Histograma de la edad (en años)")plot(tabla_edad, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fp", main = "Poligono de la edad (en años)")asim_edad <- ds_skewness(muestra_trabajo$V9_Edad)
curt_edad <- ds_kurtosis(muestra_trabajo$V9_Edad)
df_edad <- data.frame (asim_edad, curt_edad)
kable(df_edad, caption = "Medidas de Forma")| asim_edad | curt_edad |
|---|---|
| 0.4559939 | -0.2131688 |
Ingresos (en pesos)
tabla_ingresos <- fdt(x =muestra_trabajo$V11_Ingresos,k =10)
plot(tabla_ingresos, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fh", main = "Histograma del ingreso (en pesos)")plot(tabla_ingresos, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fp", main = "Poligono del ingreso (en pesos)")asim_ingresos <- ds_skewness(muestra_trabajo$V11_Ingresos)
curt_ingresos <- ds_kurtosis(muestra_trabajo$V11_Ingresos)
df_ingresos <- data.frame (asim_ingresos, curt_ingresos)
kable(df_ingresos, caption = "Medidas de Forma")| asim_ingresos | curt_ingresos |
|---|---|
| 1.820321 | 3.78526 |
Gastos (en pesos)
tabla_gastos <- fdt(x =muestra_trabajo$V12_Gastos,k =10)
plot(tabla_gastos, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fh", main = "Histograma de los gastos (en pesos)")plot(tabla_gastos, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fp", main = "Poligono del gastos (en pesos)")asim_gastos <- ds_skewness(muestra_trabajo$V12_Gastos)
curt_gastos <- ds_kurtosis(muestra_trabajo$V12_Gastos)
df_gastos <- data.frame (asim_gastos, curt_gastos)
kable(df_gastos, caption = "Medidas de Forma")| asim_gastos | curt_gastos |
|---|---|
| 1.929154 | 4.154793 |
Peso (en KG)
tabla_peso <- fdt(x =muestra_trabajo$V13_PesoKg,k =10)
plot(tabla_peso, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fh", main = "Histograma del peso (en KG)")plot(tabla_peso, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fp", main = "Poligono del peso (en KG)")asim_peso <- ds_skewness(muestra_trabajo$V13_PesoKg)
curt_peso <- ds_kurtosis(muestra_trabajo$V13_PesoKg)
df_peso <- data.frame (asim_peso, curt_peso)
kable(df_peso, caption = "Medidas de Forma")| asim_peso | curt_peso |
|---|---|
| -0.147834 | 0.116463 |
Estatura (en CM)
tabla_estatura <- fdt(x =muestra_trabajo$V14_EstaturaCm,k =10)
plot(tabla_estatura, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fh", main = "Histograma de la estatura (en CM)")plot(tabla_peso, col=c("blue4","blue3","blue2","blue", "deepskyblue2",
"deepskyblue4","dodgerblue", "dodgerblue4",
"dodgerblue3", "royalblue4"),
type = "fp", main = "Poligono de la estatura (en CM)")asim_estatura <- ds_skewness(muestra_trabajo$V14_EstaturaCm)
curt_estatura <- ds_kurtosis(muestra_trabajo$V14_EstaturaCm)
df_estatura <- data.frame (asim_estatura, curt_estatura)
kable(df_estatura, caption = "Medidas de Forma")| asim_estatura | curt_estatura |
|---|---|
| -0.0049305 | -0.7546748 |
Punto 7
Boxplots comparativos entre variables
Para resolver este punto, usaremos las variables que nos ayudan a responder nuestra pregunta.
Visitas por semana según calidad de atención Cómo la experiencia del servicio influye en la frecuencia de visita, y por ende en lealtad del consumidor
ggplot(muestra_trabajo, aes(x = V4_Atencion_cat, y = V6_VisitasSemana)) +
geom_boxplot(fill = c("skyblue", "skyblue4", "deepskyblue3", "deepskyblue4"), color = "black") +
labs(title = "Visitas por Semana según Calidad de la Atención",
x = "Calidad de la Atención",
y = "Número de Visitas por Semana") +
theme_bw()Calificación del servicio según si recomiendan o no Cómo la experiencia del servicio se relaciona con la recomendación de los clientes, y como esto incide en su lealtad
ggplot(muestra_trabajo, aes(x = V3_Recomienda, y = V5_Atencion_1a4)) +
geom_boxplot(fill = c("lightgreen", "darkseagreen1"), color = "black") +
labs(title = "Calificación de la Atención según Recomienda Sí/No",
x = "Recomienda",
y = "Calificación de la Atención (1 a 4)") +
theme_bw()
Visitas por semana según calificación numérica de
atención Comparación de la experiencia del servicio vs
lealtad
ggplot(muestra_trabajo, aes(x = factor(V5_Atencion_1a4), y = V6_VisitasSemana)) +
geom_boxplot(fill = c("orchid", "orchid4", "darkorchid", "darkorchid4"), color = "black") +
labs(title = "Visitas por Semana según Calificación de la Atención",
x = "Calificación de la Atención (1 a 4)",
y = "Número de Visitas por Semana") +
theme_bw()
Visitas por semana según Recomienda Sí/No Esto
determina la lealtad directa, segun sus recomendaciones y el numero de
visitas que tienen
ggplot(muestra_trabajo, aes(x = V3_Recomienda, y = V6_VisitasSemana)) +
geom_boxplot(fill = c("hotpink", "hotpink3"), color = "black") +
labs(title = "Visitas por Semana según Recomienda Sí/No",
x = "Recomienda",
y = "Número de Visitas por Semana") +
theme_bw()Punto 8
QQ-plot de V11_Ingresos y V9_Edad. ¿La Normalidad es aceptable? Justifique la respuesta.
# QQ-Plot Ingresos
ggplot(muestra_trabajo, aes(sample = V11_Ingresos)) +
stat_qq(col = "deepskyblue3") +
stat_qq_line(col = "navy") +
labs(title = "QQ-Plot de V11_Ingresos") +
theme_bw()# QQ-Plot Edad
ggplot(muestra_trabajo, aes(sample = V9_Edad)) +
stat_qq(col = "skyblue3") +
stat_qq_line(col = "navy") +
labs(title = "QQ-Plot de V9_Edad") +
theme_bw()Sección C: probabilidad y conteo
Punto 9
(Conteo) ¿De cuántas maneras puede seleccionarse un subgrupo de 5 personas que incluya exactamente 2 de Zona Centro?
C_centro <- sum(muestra_trabajo$V1_SitioZona == "Zona Centro", na.rm = TRUE)
N_total <- nrow(muestra_trabajo)
p9 <- choose(C_centro, 2) * choose(N_total - C_centro, 3)
cat("Número de formas de seleccionar un subgrupo de 5 personas con EXACTAMENTE 2 de Zona Centro:",
p9)## Número de formas de seleccionar un subgrupo de 5 personas con EXACTAMENTE 2 de Zona Centro: 5635875840
Punto 10
(Condicional) Estime P(Recomienda=Sí | V5_Atencion_1a4 >= 3).
# P(Recomienda = Sí | V5_Atencion_1a4 >= 3)
# B: atención >= 3
b <- sum(muestra_trabajo$V5_Atencion_1a4 >= 3)
# A ∩ B: recomienda Sí y atención >=3
anb <- sum(muestra_trabajo$V3_Recomienda == "Sí" &
muestra_trabajo$V5_Atencion_1a4 >= 3)
# Probabilidad condicional
p.cond <- anb / b
p.cond## [1] 0.5695364
Punto 11
(Bayes) Calcule P(Zona Norte | Recomienda=Sí) usando la base.
# (Bayes) P(Zona Norte | Recomienda = "Sí") -- estilo profe
# B = Recomienda == "Sí"
P_SR <- sum(muestra_trabajo$V3_Recomienda == "Sí", na.rm = TRUE)
# A ∩ B = Zona Norte y Recomienda == "Sí"
ZNnSR <- sum(muestra_trabajo$V1_SitioZona == "Zona Norte" &
muestra_trabajo$V3_Recomienda == "Sí", na.rm = TRUE)
p11 <- anb / b
cat("N(SR) =", b, "\n")## N(SR) = 151
## N(ZN n SR) = 40
## P(ZN|SR) = 0.5695
Punto 12
(Binomial) Sea p la proporción muestral de recomienda; calcule P(X>=8) para X~Binomial(n=10, x, p).
library(ggplot2)
x <- 0:10
n <- 10
p <- mean(muestra_trabajo$V3_Recomienda=="Sí")
q <- 1-p
f.x <- dbinom(x=x, size=n, prob = p)
df <- data.frame(x, f.x)
flextable(df)x | f.x |
|---|---|
0 | 0.0024546595 |
1 | 0.0202239245 |
2 | 0.0749811541 |
3 | 0.1647384685 |
4 | 0.2375238611 |
5 | 0.2348349117 |
6 | 0.1612336134 |
7 | 0.0759087272 |
8 | 0.0234529322 |
9 | 0.0042939680 |
10 | 0.0003537798 |
ggplot(df, aes(x=x, y=f.x))+
geom_point(col="hotpink")+
geom_segment(aes(x=x, xend=x, y=0, yend=f.x),
linetype="dashed", col="hotpink")+
labs(title="Función de probabilidad P(X >=8)")+
theme_bw()## [1] 0.02810068
## [1] 0.02810068
## [1] 0.02810068
Punto 13
(Poisson) Ajuste Poisson a V6_VisitasSemana por zona; calcule P(X>=4) en Zona Sur.
zona_sur <- muestra_trabajo[muestra_trabajo$V1_SitioZona=="Zona Sur", ]
l <- mean(zona_sur$V6_VisitasSemana)
l## [1] 4.236111
xp | yp |
|---|---|
0 | 0.01446373045 |
1 | 0.06126996929 |
2 | 0.12977319884 |
3 | 0.18324456317 |
4 | 0.19406108253 |
5 | 0.16441286158 |
6 | 0.11607852496 |
7 | 0.07024593276 |
8 | 0.03719619704 |
9 | 0.01750746928 |
10 | 0.00741635852 |
11 | 0.00285604716 |
12 | 0.00100821109 |
13 | 0.00032853032 |
14 | 0.00009940650 |
15 | 0.00002807313 |
ggplot(df.p, aes(x=xp, y=yp))+
geom_point(col="darkorchid")+
geom_segment(aes(x=xp, y=yp), x=xp, xend=xp, y=0, yend=yp, linetype="dashed", col="darkorchid")+
labs(title="Distribución Poisson para Visitas Semana (Zona Sur)")## [1] 0.6112485
## [1] 0.6112485
## [1] 0.6112387
Punto 14
(Hipergeométrica) Si en la población de 1200 hay K ‘Excelente’, calcule probabilidad de 6 ‘Excelente’ en muestra de 20 sin reemplazo.
Solución
## [1] 62
x.h <- 0:20
m.h <- k
n.h <- 1200-k
k.h <- 20
f.h <- dhyper(x=x.h, m=m.h, n=n.h,k=k.h)
df.h <- data.frame(x.h, f.h)
flextable(df.h)x.h | f.h |
|---|---|
0 | 0.3431087313887062895112478599912720 |
1 | 0.3802098542645183099075723021087470 |
2 | 0.1967246522734717173452878569150926 |
3 | 0.0631765163411684010918989429228532 |
4 | 0.0141189941823065736453690632856706 |
5 | 0.0023334686734070388992867695066025 |
6 | 0.0002958356636659268909007869385874 |
7 | 0.0000294520838494078537818550433958 |
8 | 0.0000023377264600717741103660680252 |
9 | 0.0000001493489841394576395718117937 |
10 | 0.0000000077190122121723317206162058 |
11 | 0.0000000003232052782292948171216521 |
12 | 0.0000000000109403556568765365663614 |
13 | 0.0000000000002976360105251058860020 |
14 | 0.0000000000000064417687790327697293 |
15 | 0.0000000000000001091632485061151237 |
16 | 0.0000000000000000014138758487068557 |
17 | 0.0000000000000000000134829311304514 |
18 | 0.0000000000000000000000890158305267 |
19 | 0.0000000000000000000000003626067253 |
20 | 0.0000000000000000000000000006850654 |
## [1] 1
## P(X=6) 0.6568913
## P(X=6) 0.6568913
#grafica
ggplot(df.h, aes(x=x.h, y=f.h))+
geom_point(col="hotpink")+
geom_segment(aes(x=x.h, xend=x.h, y=0, yend=f.h),
linetype="dashed", col="hotpink4")+
labs(title="Función de probabilidad del Hipergeométrica")+
theme_bw()Punto 15
(Normal) Usando media y desviación de V7_PrecioAlmuerzo, calcule P(20000 < Precio <24000).
media_15 <- mean(muestra_trabajo$V7_PrecioAlmuerzo)
cat("La media del precio del almuerzo es de", media_15)## La media del precio del almuerzo es de 22466.39
sd_15 <- sd(muestra_trabajo$V7_PrecioAlmuerzo)
cat("La desviación estandar del precio del almuerzo es de", sd_15)## La desviación estandar del precio del almuerzo es de 4525.328
#P(20000 < precio <24000) = P(X<= 24000) - P(X<=20000)
soln <- pnorm(q=24000, mean=media_15, sd=sd_15, lower.tail = TRUE) - pnorm(q=20000, mean=media_15, sd=sd_15, lower.tail = TRUE)
cat("P(20000 < precio <24000) =", soln)## P(20000 < precio <24000) = 0.3397853
#Gráfica
xn <- seq(min(muestra_trabajo$V7_PrecioAlmuerzo),
max(muestra_trabajo$V7_PrecioAlmuerzo),
by = 10)
yn <- dnorm (x=xn, mean=media_15, sd=sd_15)
df.n <- data.frame(xn, yn)
df.s <- subset(df.n, 20000 <xn & xn<24000)
ggplot(df.n, aes(x=xn, y=yn))+
geom_line(col="hotpink")+
geom_area(data=df.s, aes(x=xn, y=yn), fill="hotpink", alpha=0.5)+
labs(title="Distribución normal del precio del almuerzo",
x="Precio", y="f(X)")+
theme_bw()Punto 16
(Exponencial) Modele tiempo entre visitas: suponga tasa lambda diaria derivada de V6_VisitasSemana y calcule P(T>10 días).
## [1] 3.055172
## [1] 0.4364532
sol.exp <- exp(-l * 10)
cat("El tiempo entre visitas tiene una distribución exponencial de",sol.exp)## El tiempo entre visitas tiene una distribución exponencial de 0.01272061
#gráfica
f.x <- function(x){ l * exp(-l*x) }
x.e <- seq(0, 30, by = 0.1)
y.e <- sapply(x.e, f.x)
df.e <- data.frame(x.e, y.e)
df.area <- subset(df.e, x.e > 10)
ggplot(df.e, aes(x = x.e, y = y.e))+
geom_line(col="deepskyblue3")+
geom_area(data=df.area, aes(x=x.e, y=y.e),
fill="skyblue", alpha=0.4)+
labs(title="Distribución Exponencial del tiempo entre visitas",
x="Días", y="f(x)")+
theme_bw()Sección D: Intervalos de confianza y pruebas de hipótesis
Punto 17
Calcule e interprete un Intervalo de Confianza IC del 95% para la media de V7_PrecioAlmuerzo.
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: muestra_trabajo$V7_PrecioAlmuerzo
## D = 0.07278, p-value = 0.0008073
sol_17 <- t.test(x=muestra_trabajo$V7_PrecioAlmuerzo, conf.level = 0.95)$conf.int
cat("Con una confianza del 95% se estima que el precio promedio del almuerzo es de",sol_17)## Con una confianza del 95% se estima que el precio promedio del almuerzo es de 21943.36 22989.41
Punto 18
IC 95% para la proporción de quienes recomiendan (V3_Recomienda=‘Sí’).
## [1] 131
## [1] 290
##
## 1-sample proportions test with continuity correction
##
## data: recom_si out of n_total, null probability 0.5
## X-squared = 2.5138, df = 1, p-value = 0.1129
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.3937673 0.5109809
## sample estimates:
## p
## 0.4517241
Punto 19
IC 95% para la varianza de V11_Ingresos.
if (!require('devtools')) install.packages('devtools')
devtools::install_github('fhernanb/stests', force=TRUE)##
## ── R CMD build ─────────────────────────────────────────────────────────────────
## checking for file ‘/private/var/folders/t5/dzcbxnbs35v7_kvq7j1_qcvr0000gp/T/Rtmpw27A8O/remotes18612105b949a/fhernanb-stests-b25bf7e/DESCRIPTION’ ... ✔ checking for file ‘/private/var/folders/t5/dzcbxnbs35v7_kvq7j1_qcvr0000gp/T/Rtmpw27A8O/remotes18612105b949a/fhernanb-stests-b25bf7e/DESCRIPTION’
## ─ preparing ‘stests’:
## checking DESCRIPTION meta-information ... ✔ checking DESCRIPTION meta-information
## ─ checking for LF line-endings in source and make files and shell scripts
## ─ checking for empty or unneeded directories
## Omitted ‘LazyData’ from DESCRIPTION
## ─ building ‘stests_0.1.0.tar.gz’
##
##
library(stests)
sol <- stests::var.test(x = muestra_trabajo$V11_Ingresos,
conf.level = 0.95)$conf.int
cat("El intervalo de confianza del 95% indica que la desviación estándar de los ingresos se encuentra entre",
round(sqrt(sol)[1], 2), "y", round(sqrt(sol)[2], 2))## El intervalo de confianza del 95% indica que la desviación estándar de los ingresos se encuentra entre 2458840 y 2895086
Punto 20
Prueba t (dos colas) para H0: media Precio = 22000.
##
## One Sample t-test
##
## data: muestra_trabajo$V7_PrecioAlmuerzo
## t = 1.7551, df = 289, p-value = 0.08031
## alternative hypothesis: true mean is not equal to 22000
## 95 percent confidence interval:
## 21943.36 22989.41
## sample estimates:
## mean of x
## 22466.39
Punto 21
Chi-cuadrado de independencia entre V4_Atencion_cat y V1_SitioZona.
| Zona Centro | Zona Norte | Zona Sur | |
|---|---|---|---|
| Buena | 45 | 29 | 15 |
| Excelente | 20 | 24 | 18 |
| Mala | 29 | 16 | 17 |
| Regular | 35 | 20 | 22 |
##
## Pearson's Chi-squared test
##
## data: tabla_chi
## X-squared = 8.6781, df = 6, p-value = 0.1925
Punto 22
Prueba de bondad de ajuste: ¿Precio sigue una distribución normal? (usar como estadística Kolmogorov- Smirnov vs Shapiro-wilk en submuestra).
##
## Shapiro-Wilk normality test
##
## data: subm
## W = 0.93076, p-value = 0.05143
##
## Exact one-sample Kolmogorov-Smirnov test
##
## data: z
## D = 0.14088, p-value = 0.5442
## alternative hypothesis: two-sided
Sección E: Regresión y asociación
Punto 23
Ajuste regresión lineal simple: V7_PrecioAlmuerzo ~ V9_Edad. Interprete coeficiente de correlación y determinación.
##
## Call:
## lm(formula = V7_PrecioAlmuerzo ~ V9_Edad, data = muestra_trabajo)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9730 -3590 -603 3855 9371
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 23421.32 1023.27 22.889 <2e-16 ***
## V9_Edad -24.76 25.62 -0.966 0.335
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4526 on 288 degrees of freedom
## Multiple R-squared: 0.003232, Adjusted R-squared: -0.0002288
## F-statistic: 0.9339 on 1 and 288 DF, p-value: 0.3347
## [1] -0.05685233
## [1] 0.003232187
Punto 24
Regresión múltiple: V7_PrecioAlmuerzo ~ V9_Edad + V11_Ingresos + V6_VisitasSemana. Interprete.
modelo_mult <- lm(V7_PrecioAlmuerzo ~ V9_Edad + V11_Ingresos + V6_VisitasSemana,
data = muestra_trabajo)
summary(modelo_mult)##
## Call:
## lm(formula = V7_PrecioAlmuerzo ~ V9_Edad + V11_Ingresos + V6_VisitasSemana,
## data = muestra_trabajo)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9012 -3377 119 2888 9796
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.386e+04 1.019e+03 23.416 < 2e-16 ***
## V9_Edad -1.859e+01 2.228e+01 -0.834 0.405
## V11_Ingresos 5.009e-04 8.771e-05 5.711 2.82e-08 ***
## V6_VisitasSemana -8.579e+02 1.203e+02 -7.133 8.06e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3931 on 286 degrees of freedom
## Multiple R-squared: 0.2531, Adjusted R-squared: 0.2453
## F-statistic: 32.31 on 3 and 286 DF, p-value: < 2.2e-16
Sección F: Análisis de varianza
Punto 26
Con los datos suministrados elabore un análisis de varianza a una y dos vías.