library(readxl)
library(dplyr)
library (ggplot2)
library(descriptr)
library(knitr)
library(modeest)
library(fdth)
library(plotrix)
library(flextable)
library(nortest)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 |
Las variables del precio del almuerzo, la calificación de atención, el peso, la estatura y la edad muestran medias y medianas relativamente cercanas, lo cual indica distribuciones más simétricas y sin valores extremos significativos. En cambio, variables como los ingresos, los gastos y el tiempo que llevan almorzando en el sitio presentan diferencias mayores entre lestas variables, lo que sugiere asimetrías positivas impulsadas por valores altos aislados. El coeficiente de variación confirma estas diferencias: mientras que variables fisiológicas como peso y estatura tienen CV bajos ya que se mantienen constantes luego de cierta edad demostrando alta homogeneidad. Por otro lado, variables monetarias, especialmente ingresos y gastos, exhiben niveles de dispersión muy elevados, lo que evidencia poblaciones heterogéneas y distribuciones más extendidas.
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 |
En variables como el precio del almuerzo, la estatura, el peso y la calificación de atención, los cuartiles muestran una concentración alta de los valores en el centro, con rangos intercuartílicos estrechos y percentiles que avanzan de manera regular, lo que confirma baja variabilidad y ausencia de asimetrías marcadas. Por el contrario, variables como los ingresos, los gastos y el tiempo que llevan almorzando en el sitio presentan rangos intercuartílicos amplios y grandes diferencias entre percentiles extremos, lo que indica una alta dispersión y una distribución estirada hacia la derecha. Esto refuerza la presencia de valores altos atípicos y una heterogeneidad significativa dentro del grupo.
Punto 3
Construya e interprete una tabla de frecuencias (8 clases) para V7_PrecioAlmuerzo con frecuencias absolutas, relativas y acumuladas.
|
|
La tabla de frecuencias del precio del almuerzo evidencia una distribución concentrada principalmente en la zona central del rango observado. Los intervalos comprendidos entre aproximadamente 17,700 y 22,600 pesos agrupan la mayor parte de los registros, lo que sugiere que este es el rango típico de precios para la mayoría de los consumidores. A medida que los valores aumentan, las frecuencias comienzan a disminuir de manera progresiva, lo que indica que los precios altos son menos comunes y que la distribución presenta una ligera asimetría hacia la derecha. Los precios por debajo de 15200 apenas representan un 3.1% de los valores analizados. En general, el comportamiento de las frecuencias acumuladas confirma que más de la mitad de los almuerzos se venden dentro de un rango bastante acotado, pero existen precios poco frecuentes que podrían interpretarse como valores extremos o excepcionales.
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 |
Al analizar la tabla de contingencia entre la calificación de la atención y la zona donde se encuentra el sitio, se observa que las tres zonas presentan opiniones variadas, sin un patrón claro. La zona Centro fue la más visitada, seguida del Norte y Sur. En proporción, la zona Centro y Norte tiene una calificación en un tercio Buena mientras que la Zona Sur se sitúa en una atención Regular. A nivel general, la atención en todas las zonas es Buena aunque las zonas en Norte y Sur hay una menor participación.
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 |
En este punto se compararon los ingresos entre hombres y mujeres para ver cuál de los dos grupos es más homogéneo, es decir, en cuál los ingresos son más parecidos entre sí. Los hombres tienen un ingreso promedio de aproximadamente 3.915.782 pesos, mientras que las mujeres tienen un promedio de 3.851.443 pesos, por lo que ambos grupos presentan ingresos bastante similares en promedio. Sin embargo, al observar la desviación estándar, se nota que en los hombres es de 2.701.130 pesos y en las mujeres es de 2.621.966 pesos. Esto indica que, aunque los promedios son parecidos, los ingresos de las mujeres están un poco menos dispersos que los de los hombres. Por lo tanto, se puede concluir que el grupo femenino es ligeramente más homogéneo en términos de ingresos, ya que sus valores son un poco más parecidos entre sí.
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)
## Class limits f rf rf(%) cf cf(%)
## [1.98,17.538) 93 0.32 32.07 93 32.07
## [17.538,33.096) 95 0.33 32.76 188 64.83
## [33.096,48.654) 49 0.17 16.90 237 81.72
## [48.654,64.212) 22 0.08 7.59 259 89.31
## [64.212,79.77) 12 0.04 4.14 271 93.45
## [79.77,95.328) 7 0.02 2.41 278 95.86
## [95.328,110.886) 8 0.03 2.76 286 98.62
## [110.886,126.444) 2 0.01 0.69 288 99.31
## [126.444,142.002) 1 0.00 0.34 289 99.66
## [142.002,157.56) 1 0.00 0.34 290 100.00
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 |
La distribución es asimétrica a la derecha,lo que representa que muchos clientes que conocen el sitio desde hace pocos meses y unos pocos con desde hace más tiempo. Esto indica que el restaurante sigue captando nuevos clientes, pero aún así mantiene algunos de permanencia prolongada, relevante para evaluar lealtad a largo plazo.
Número de visitas a la semana
tabla_visitas <- fdt(x =muestra_trabajo$V6_VisitasSemana,k =10)
plot(tabla_visitas, col=c("palegreen4","lightgreen","olivedrab3","palegreen4", "seagreen2",
"seagreen4","darkseagreen", "darkseagreen2",
"darkolivegreen", "palegreen"),
type = "fh", main = "Histograma del número de visitas a la semana")plot(tabla_visitas, col=c("palegreen4","lightgreen","olivedrab3","palegreen4", "seagreen2",
"seagreen4","darkseagreen", "darkseagreen2",
"darkolivegreen", "palegreen"),
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 |
Se observa concentración en valores bajos (1–2 visitas), con pocos clientes que van 3 o más veces. Esto refleja una base mayormente ocasional, aunque el grupo que visita con mayor frecuencia puede representar el segmento más leal.
Precio del almuerzo (en pesos)
tabla_precio <- fdt(x =muestra_trabajo$V7_PrecioAlmuerzo,k =10)
plot(tabla_precio, col=c("darkorchid","darkorchid4","mediumorchid1","mediumpurple2", "orchid4",
"orchid3","plum", "mediumorchid4",
"purple4", "blueviolet"),
type = "fh", main = "Histograma del precio del almuerzo (en pesos)")plot(tabla_precio, col=c("darkorchid","darkorchid4","mediumorchid1","mediumpurple2", "orchid4",
"orchid3","plum", "mediumorchid4",
"purple4", "blueviolet"),
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 |
Los precios se concentran claramente en un rango estrecho, mostrando uniformidad. Esto ayuda a que la percepción del servicio pueda analizarse sin que el precio introduzca variabilidad significativa.
Edad (en años)
tabla_edad <- fdt(x =muestra_trabajo$V9_Edad,k =10)
plot(tabla_edad, col=c("palevioletred","palevioletred4","violetred","deeppink2", "hotpink2",
"hotpink4","lightpink2", "maroon",
"#FF56F1", "maroon3"),
type = "fh", main = "Histograma de la edad (en años)")plot(tabla_edad, col=c("palevioletred","palevioletred4","violetred","deeppink2", "hotpink2",
"hotpink4","lightpink2", "maroon",
"#FF56F1", "maroon3"),
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 |
La distribución muestra clientela diversa, sin fuerte concentración alrededor de una única edad. Esto refleja que el restaurante atiende tanto a clientes jóvenes como adultos, lo cual es útil para ver si la percepción del servicio cambia según la etapa de vida.
Ingresos (en pesos)
tabla_ingresos <- fdt(x =muestra_trabajo$V11_Ingresos,k =10)
plot(tabla_ingresos, col=c("lightsalmon","darkorange","chocolate","coral2", "coral4",
"orange2","sienna3", "tan2",
"lightcoral", "sandybrown"),
type = "fh", main = "Histograma del ingreso (en pesos)")plot(tabla_ingresos, col=c("lightsalmon","darkorange","chocolate","coral2", "coral4",
"orange2","sienna3", "tan2",
"lightcoral", "sandybrown"),
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 |
Los ingresos están muy dispersos y presentan asimetría a la derecha. Existen algunos valores altos que se alejan del resto. Esto sugiere diferencias económicas en la clientela, importante para evaluar segmentación.
Gastos (en pesos)
tabla_gastos <- fdt(x =muestra_trabajo$V12_Gastos,k =10)
plot(tabla_gastos, col=c("powderblue","cornflowerblue","steelblue1","skyblue", "slategray3",
"paleturquoise3","lightsteelblue2", "lightskyblue",
"cadetblue2", "deepskyblue"),
type = "fh", main = "Histograma de los gastos (en pesos)")plot(tabla_gastos, col=c("powderblue","cornflowerblue","steelblue1","skyblue", "slategray3",
"paleturquoise3","lightsteelblue2", "lightskyblue",
"cadetblue2", "deepskyblue"),
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 |
La distribución es parecida a la de ingresos, con datos dispersos y algunos casos con gastos altos. Esto indica patrones de gasto variados, lo que puede influir en la frecuencia de visita o satisfacción.
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()Las visitas semanales aumentan ligeramente en los niveles más altos de calidad de atención. Además, la dispersión es menor cuando la atención es mejor, lo que indica que los clientes satisfechos tienden a visitar el sitio de manera más constante, reforzando la relación entre servicio y lealtad.
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()
El grupo que recomienda presenta valores más altos y menos dispersos que
el grupo que no recomienda. Esto muestra una relación directa: quienes
perciben un buen servicio son mucho más propensos a recomendar el
restaurante.
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()
Los niveles altos de atención (3 y 4) muestran medianas de visita
mayores que los niveles bajos. Esto sugiere que la experiencia del
servicio impacta tanto la percepción como el comportamiento real de
visita, evidenciando un vínculo entre satisfacción y frecuencia.
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()
El grupo que recomienda visita más veces por semana y con menor
variabilidad. Esto respalda que la recomendación está asociada a una
relación más fuerte con el restaurante, lo cual se alinea con
indicadores de lealtad.
Punto 8
QQ-plot de V11_Ingresos y V9_Edad. ¿La Normalidad es aceptable? Justifique la respuesta.
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()
Los ingresos presentan una fuerte desviación de la normalidad,
reflejando asimetría y valores altos atípicos. La variable no se ajusta
al comportamiento esperado bajo un modelo normal.
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()
La edad muestra un comportamiento moderadamente cercano a la normalidad,
con desviaciones evidentes solo en las colas. No es perfectamente
normal, pero su estructura general se asemeja más a la normal que la de
ingresos.
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
5635875840 representa el número de formas de seleccionar un subgrupo de 5 personas con exactamente 2 de Zona Centro. Esto tiene varias implicaciones dentro de las cuales se encuentran que la ubicación geográfica puede influir en la percepción del servicio y que las diferentes zonas pueden tener distintas experiencias en los restaurantes lo que nos deja que la experiencia del servicio no impacta uniformemente en todos los clientes
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
Este resultado nos indica que existe una relación directa y medible entre la calidad de la atención y la lealtad del cliente. Es decir que de cada 100 clientes que reciben buena atención solo el 57 lo recomendaría, mientras que los otros 43 no lo harian a pesar de la buena atención.
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
Este resultado nos muestra que la lealtad del cliente esta geográficamente concentrada y que la zona norte es el lugar en donde la experiencia del servicio está generando resultados medibles en términos de recomendaciones.
Punto 12
(Binomial) Sea p la proporción muestral de recomienda; calcule P(X>=8) para X~Binomial(n=10, x, p).
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
0.02810068 este resultado nos indica que la experiencia del servicio general la lealtad suficiente para la superviviencia de la empresa, sin embargo, no es suficiente para un crecimiento exponencial
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
Este resultado indica el nivel máximo de lealtad en clientes que usan el restaurante en su vida diaria. Lo que nos indica que la zona sur aprecia que el servicio sea muy bueno, los clientes suelen responder con lealtad lo que corresponde a visitas más recurrentes
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()
0.6568913 este resultado nos indica que el restaurante es bueno pero que
no pasa de ahí, es decir que no es un restaurante excelente, lo que
genera lealtad transaccional.
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()0.3397853 este resultado revela que el restaurante ha encontrado un equilibrio efectivo en su estrategia de precios que soporta la lealtad de sus clientes
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()0.01272061 este resultado indica que los clientes no están solo satisfechos, sino que han integrado el restaurante en su vida cotidiana creando así un hábito casi que automático
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
El intervalo de confianza calculado muestra el rango dentro del cual se encuentra el precio promedio del almuerzo con un 95% de confianza. Como el intervalo es relativamente estrecho, indica baja variabilidad en los precios y sugiere estabilidad en el costo del almuerzo. Esto implica que el precio no depende directamente de la experiencia del servicio y que los clientes enfrentan un precio consistente, lo que reduce la incertidumbre y contribuye a una percepción más clara del valor recibido.
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
El intervalo de confianza para la proporción de clientes que recomiendan el restaurante muestra que una mayoría significativa de los encuestados sí lo recomendaría. La estrechez del intervalo indica que esta proporción es estable y confiable. Este resultado es directamente relevante para la lealtad: una alta proporción de recomendación es uno de los indicadores más fuertes de satisfacción, repetición de compra y compromiso emocional con el restaurante.
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/RtmpfsZBSv/remotes221248b4e3be/fhernanb-stests-b25bf7e/DESCRIPTION’ ... ✔ checking for file ‘/private/var/folders/t5/dzcbxnbs35v7_kvq7j1_qcvr0000gp/T/RtmpfsZBSv/remotes221248b4e3be/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
El intervalo de confianza para la varianza de Ingresos muestra que existe una dispersión considerable en el nivel económico de los clientes. Esto implica que el restaurante atiende una población heterogénea en ingresos. Esta variabilidad puede influir en patrones de gasto y frecuencia de visita, pero también indica que el restaurante es atractivo para distintos perfiles económicos, lo que puede reforzar la estabilidad de la demanda.
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
La prueba t compara el precio promedio real con un valor de referencia de 22.000. Los resultados indican si existe evidencia estadística para afirmar que el precio difiere significativamente. Si la prueba rechaza la hipótesis nula, significa que el precio promedio no es realmente 22.000 sino mayor o menor. Si no se rechaza, el precio es consistente con ese valor objetivo. Esto permite evaluar si el precio se mantiene controlado y dentro del rango esperado, lo cual es importante para la percepción de valor del cliente.
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
La prueba Chi-cuadrado evalúa si existe asociación entre el sitio/zona visitada y la calidad percibida de la atención. Si la hipótesis de independencia se rechaza, significa que la atención no es uniforme en todas las zonas y que algunos lugares podrían estar ofreciendo mejor servicio que otros. Esto es clave para el análisis, ya que inconsistencias en la calidad afectan directamente la experiencia y, por ende, la lealtad.
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
La prueba de normalidad (Shapiro-Wilk o Kolmogorov-Smirnov en submuestra) permite determinar si el precio del almuerzo sigue una distribución normal. Al no ajustarse perfectamente a esta distribución, se reconoce que los precios no son totalmente simétricos, aunque suelen estar concentrados. Esto informa sobre el tipo de análisis estadístico apropiado y ayuda a entender si la dispersión de precios influye en la percepción del cliente.
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
La relación entre la edad y el precio del almuerzo es prácticamente inexistente. La correlación es muy débil (–0.0568), el coeficiente de regresión no es significativo (p > 0.05) y el R² es muy bajo (0.00323), lo que indica que la edad es menos del 1% de la variación del precio. Es por ello que la edad no es un predictor útil del precio del almuerzo.
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
El precio del almuerzo no depende de la edad, pero sí está relacionado con los ingresos y la frecuencia con la que la persona visita el restaurante. Los ingresos aumentan el precio pagado y las visitas semanales lo reducen. Este modelo mejora la explicación del precio frente al modelo simple, pasando de un R² de 0.003 a 0.253, lo que muestra que incluir más variables relevantes hace el modelo mucho más útil.
Punto 25
Calcule correlación de Pearson entre V11_Ingresos y V12_Gastos.
pear <- cor(muestra_trabajo$V11_Ingresos,
muestra_trabajo$V12_Gastos)
cat("La correlación de Pearson entre los ingresos y gastos es de", pear)## La correlación de Pearson entre los ingresos y gastos es de 0.9451792
Existe una correlación positiva entre los ingresos y los gastos. Esto muestra que los dos valores están estrechamente relacionados: los clientes con mayores ingresos generalmente presentan mayores niveles de gasto.
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.
Nota para esta sección realizamos el análisis de varianza solo de una vía, puesto que el metodo de dos vias no fue abordado en clase. * Nuevamente tomamos las variables que nos ayudan a responder nuestra pregunta de investigación.
¿Los clientes que califican la atención (Excelente/Regular/Mala) visitan con distinta frecuencia?
anova1 <- aov(muestra_trabajo$V6_VisitasSemana ~ muestra_trabajo$V4_Atencion_cat, data = muestra_trabajo)
summary(anova1)## Df Sum Sq Mean Sq F value Pr(>F)
## muestra_trabajo$V4_Atencion_cat 3 16.6 5.527 1.474 0.222
## Residuals 286 1072.5 3.750
ggplot(muestra_trabajo, aes(x = V4_Atencion_cat, y = V6_VisitasSemana)) +
geom_boxplot(fill = "lightblue", color = "royalblue4") +
labs(title = "Visitas semanales según calidad de la atención",
x = "Calidad de la atención",
y = "Visitas por semana") +
theme_bw()¿Los clientes que perciben mejor atención pagan precios distintos?
## Df Sum Sq Mean Sq F value Pr(>F)
## V4_Atencion_cat 3 4.871e+07 16238000 0.791 0.5
## Residuals 286 5.870e+09 20523076
ggplot(muestra_trabajo, aes(x = V4_Atencion_cat, y = V7_PrecioAlmuerzo)) +
geom_boxplot(fill = "plum", color = "purple4") +
labs(title = "Precio del almuerzo según calidad de la atención",
x = "Calidad de la atención",
y = "Precio del almuerzo") +
theme_bw()¿Quienes llevan más tiempo almorzando en el sitio (mayor “antigüedad”) perciben distinta atención?
## Df Sum Sq Mean Sq F value Pr(>F)
## V4_Atencion_cat 3 1109 369.8 0.586 0.624
## Residuals 286 180381 630.7
ggplot(muestra_trabajo, aes(x = V4_Atencion_cat, y = V2_TiempoConoce_meses)) +
geom_boxplot(fill = "lightgreen", color = "darkgreen") +
labs(title = "Tiempo que lleva visitando el restaurante según calidad de atención",
x = "Calidad de la atención",
y = "Meses de antigüedad") +
theme_bw()