1. Análisis exploratorio de la base
library(readr)
datos_negocios_var_5_ventas <- read_csv("~/Angie/datos_negocios_var_5_ventas.csv")
## Rows: 100 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): Tienda
## dbl (3): Monto_Ventas, Clientes_Frecuentes, Productos_Vendidos
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(datos_negocios_var_5_ventas)
datos <- read.csv("~/Angie/datos_negocios_var_5_ventas.csv")
head(datos)
## Tienda Monto_Ventas Clientes_Frecuentes Productos_Vendidos
## 1 Tienda A 10880.85 0 346
## 2 Tienda B 48635.34 1 159
## 3 Tienda C 33066.81 0 102
## 4 Tienda A 41198.95 0 299
## 5 Tienda A 47513.59 0 311
## 6 Tienda A 26147.79 0 327
Resumen estadístico de las variables numéricas
summary(datos)
## Tienda Monto_Ventas Clientes_Frecuentes Productos_Vendidos
## Length:100 Min. :10294 Min. :0.00 Min. : 61.0
## Class :character 1st Qu.:19853 1st Qu.:0.00 1st Qu.:140.5
## Mode :character Median :30921 Median :0.00 Median :239.0
## Mean :31160 Mean :0.45 Mean :254.4
## 3rd Qu.:42604 3rd Qu.:1.00 3rd Qu.:353.5
## Max. :49187 Max. :1.00 Max. :486.0
Mediana: 30921
Media: 31160
La media y mediana estan muy cerca lo que significa que la distribucion del Monto de ventas es simetrica. Esto significa que los valores están distribuidos de manera uniforme alrededor del promedio.
Diagrama de caja y bigotes
library(ggplot2)
ggplot(datos, aes(x = Tienda, y = Monto_Ventas, fill = Tienda)) +
geom_boxplot() +
labs(title = "Distribución del monto de ventas por tienda",
x = "Tienda",
y = "Monto de ventas") +
theme_minimal()
Conclusiones
la Tienda B tiene una distribución bastante simétrica, mientras que la tienda A y C tienen una ligera asimetría.
La Tienda B se destaca por tener los montos de venta más altos y una menor variabilidad. La Tienda A muestra la mayor variabilidad, mientras que la Tienda C se sitúa en un punto intermedio.
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
datos <- read.csv("~/Angie/datos_negocios_var_5_ventas.csv")
Clientes_Frecuentes_Tienda <- datos %>%
group_by(Tienda) %>%
summarise(Clientes_Frecuentes_Porcentaje = mean(Clientes_Frecuentes) * 100)
print(Clientes_Frecuentes_Tienda)
## # A tibble: 3 × 2
## Tienda Clientes_Frecuentes_Porcentaje
## <chr> <dbl>
## 1 Tienda A 35.3
## 2 Tienda B 41.9
## 3 Tienda C 57.1
Tienda A: el 35% de los clientes son clientes frecuentes.
Tienda B: en la tienda B el 41% de sus clientes van con frecuencia.
Tienda C: en la tienda C el 57% de los clientes van con frecuencia.
Clonclusion general: Entre la tienda A, B y C la tienda C es la tienda que tiene mas clientes que van con frecuencia a comprar esto se puede dar debido a que la tienda tendra mas variedad de productos y por ende tiene clientes mas fieles a diferencia de las otras tiendas.
Diagrama de barras
ggplot(datos, aes(x = Tienda, fill = as.factor(Clientes_Frecuentes))) +
geom_bar(position = "dodge") +
labs(title = "Número de Clientes frecuentes por tienda",
x = "Tienda",
y = "Clientes Frecuentes",
fill = "Frecuentes") +
scale_fill_manual(values = c("lightblue", "lightgreen"), labels = c("No", "Sí")) +
theme_minimal()
Conclusion: Nos percatamos que la tienda C tiene más clientes frecuentes (20) a comparación con las otras, y tiene 15 clientes no frecuentes lo que suma 35.
En el caso de las demás tienen más clientes no frecuentes, y la proporción de clientes frecuentes no hace que iguale a la tienda C.
Diagrama caja y bigotes
ggplot(datos, aes(x = (Clientes_Frecuentes), y = Monto_Ventas, fill = as.factor(Clientes_Frecuentes))) +
geom_boxplot() +
labs(title = "Distribución del monto de ventas según la frecuencia del Cliente",
x = "Frecuencia del Cliente",
y = "Monto de ventas") +
scale_x_discrete(labels = c("0" = "No es frecuente", "1" = "si es frecuente")) +
scale_fill_manual(values = c("lightblue", "lightgreen")) +
theme_minimal()
Conclusion: El grupo de clientes no frecuentes (0) muestra una distribución más simétrica, mientras que el grupo de clientes frecuentes (1) presenta una ligera asimetría hacia la izquierda.
Los clientes no frecuentes tienden a generar montos de venta más altos y más uniformes, mientras que los clientes frecuentes muestran una mayor variabilidad en sus compras, con una tendencia a montos de venta más bajos pero con algunos valores atípicos más altos.
Diagrama de barras
library(ggplot2)
datos <- read.csv("~/Angie/datos_negocios_var_5_ventas.csv")
productos_por_tienda <- aggregate(Productos_Vendidos ~ Tienda, data = datos, sum)
ggplot(productos_por_tienda, aes(x = Tienda, y = Productos_Vendidos, fill = Tienda)) +
geom_bar(stat = "identity") +
labs(title = "Productos Vendidos por Tienda",
x = "Tienda",
y = "Total de Productos Vendidos") +
theme_minimal() +
scale_fill_brewer(palette = "Set3")
Conclusion: Vemos cómo la tienda C al tener más clientes frecuentes tienen más ventas, es un índice. Todo esto depende de la forma en que las tiendas manejan la relación, promoción, y fidelización de los clientes.
Histograma
library(ggplot2)
datos <- read.csv("~/Angie/datos_negocios_var_5_ventas.csv")
ggplot(datos, aes(x = Monto_Ventas)) +
geom_histogram(binwidth = 1000, fill = "lightblue", color = "black") +
labs(title = "Distribución del Monto de Ventas", x = "Monto de Ventas", y = "Frecuencia")
Conclusion: Luego de evaluar la distribución del monto de ventas, encontramos que la frecuencia más alta la tiene el rango entre 40000 a 50000 con una frecuencia de 30 mientras q la segunda con más frecuencia es de 10000 a 20000 con 26 de frecuencia.
2. Intervalo de confianza para la media
Calcular un intervalo de confianza al 95% para la media poblacional del monto de venta mensual en la tienda C.
Muestra \({n}\): 35 tiendas
Media muestral ({X}): Calculada con la muestra
Desviación estándar muestral \({s}\): Calculada con la muestra
Nivel de confianza: \(95\%\)
library(dplyr)
datos <- read.csv("~/Angie/datos_negocios_var_5_ventas.csv")
datos_tienda_C <- datos %>%
filter(Tienda == "Tienda C")
print(datos_tienda_C)
## Tienda Monto_Ventas Clientes_Frecuentes Productos_Vendidos
## 1 Tienda C 33066.81 0 102
## 2 Tienda C 38066.25 0 131
## 3 Tienda C 12612.52 0 210
## 4 Tienda C 39172.95 1 404
## 5 Tienda C 25834.14 0 175
## 6 Tienda C 28791.12 1 258
## 7 Tienda C 25390.91 1 180
## 8 Tienda C 17883.83 1 83
## 9 Tienda C 39084.89 0 470
## 10 Tienda C 15081.87 0 256
## 11 Tienda C 14854.47 0 114
## 12 Tienda C 28195.20 0 157
## 13 Tienda C 17271.63 0 248
## 14 Tienda C 31041.73 1 250
## 15 Tienda C 38670.10 1 434
## 16 Tienda C 35948.84 1 93
## 17 Tienda C 41911.09 1 138
## 18 Tienda C 45355.02 0 367
## 19 Tienda C 27026.45 1 441
## 20 Tienda C 13249.43 0 361
## 21 Tienda C 48642.58 1 134
## 22 Tienda C 36517.82 1 258
## 23 Tienda C 14097.74 1 133
## 24 Tienda C 31066.10 1 395
## 25 Tienda C 25110.59 1 482
## 26 Tienda C 17448.10 1 112
## 27 Tienda C 30260.26 1 292
## 28 Tienda C 34826.09 0 287
## 29 Tienda C 39679.78 0 323
## 30 Tienda C 43398.42 1 125
## 31 Tienda C 33554.81 1 355
## 32 Tienda C 22615.52 1 168
## 33 Tienda C 16489.87 1 348
## 34 Tienda C 48906.81 0 237
## 35 Tienda C 37647.29 0 311
datos <- read.csv("~/Angie/datos_negocios_var_5_ventas.csv")
datos_tienda_c <- datos[datos$Tienda == "Tienda C", ]
media <- mean(datos_tienda_c$Monto_Ventas)
desviacion <- sd(datos_tienda_c$Monto_Ventas)
n <- nrow(datos_tienda_c)
z <- 1.96
margen_error <- z * (desviacion / sqrt(n))
intervalo_confianza <- c(media - margen_error, media + margen_error)
cat("Media del monto de ventas en Tienda C:", round(media, 2), "\n")
## Media del monto de ventas en Tienda C: 29964.89
cat("Intervalo de Confianza 95%: [", round(intervalo_confianza[1], 2),
"y ", round(intervalo_confianza[2], 2), "]\n")
## Intervalo de Confianza 95%: [ 26410.3 y 33519.47 ]
Conclusion: Con un nivel de confianza del 95% podemos estimar que el numero de clientes frecuentes de la tienda C estan entre 26410.3 y 33519.47
Intervalo de confianza para la proporción
La empresa también desea estimar el porcentaje de clientes frecuentes en las tiendas C. Se selecciona una muestra aleatoria de 35 tiendas y se evalúa si los clientes van con frecuencia a la tienda (1 = frecuente, 0 = No frecuente).
Muestra \({n}\): 35 tiendas
Proporcion muestral \(\hat{P}\): Calculada con la muestra
Nivel de confianza: \(95\%\)
library(dplyr)
datos <- read.csv("~/Angie/datos_negocios_var_5_ventas.csv")
clientes_frecuentes_tienda_c <- datos %>%
filter(Tienda == "Tienda C") %>%
summarise(Total_Clientes = n(),Clientes_Frecuentes = sum(Clientes_Frecuentes), Clientes_No_Frecuentes = Total_Clientes - Clientes_Frecuentes)
cat("Tamaño de la muestra:", clientes_frecuentes_tienda_c$Total_Clientes, "\n")
## Tamaño de la muestra: 35
cat("Clientes frecuentes en la tienda C (1):", clientes_frecuentes_tienda_c$Clientes_Frecuentes, "\n")
## Clientes frecuentes en la tienda C (1): 20
clientes_frecuentes <- 20
total_clientes <- 35
p_hat <- clientes_frecuentes / total_clientes
z <- 1.96
margen_error <- z * sqrt(p_hat * (1 - p_hat) / total_clientes)
IC_inferior <- p_hat - margen_error
IC_superior <- p_hat + margen_error
cat("Muestra utilizada:", total_clientes, "clientes\n")
## Muestra utilizada: 35 clientes
cat("Proporción muestral:", round(p_hat, 2), "\n")
## Proporción muestral: 0.57
cat("Intervalo de Confianza 95% de la de la población de clientes frecuentes:", round(IC_inferior, 4),"y ", round(IC_superior, 4), "\n")
## Intervalo de Confianza 95% de la de la población de clientes frecuentes: 0.4075 y 0.7354
Conclusion: Con un nivel de confianza del 95% no se puede estima que el numero de clientes frecuentes esta entre 0.4075 y 0.7354.
Intervalo de confianza para la diferencia de proporciones
Un analista de negocios de una cadena de tiendas minoristasr está evaluando el numero de clientes que van con frecuencia a la tienda A y tienda C. El analista desea determinar si hay una diferencia significativa entre las dos tiendas.
Calcular un intervalo de confianza al 95% para la diferencia de proporciones poblacionales de clientes frecuentes entre tienda A y tienda C.
Muestra en Tienda A: \(n_A\) = 34
Muestra en Tienda C: \(n_C\) = 35
Proporción muestral en Tienda A: \(\hat{P_A}\)
Proporción muestral en Tienda C: \(\hat{P_C}\)
Nivel de confianza: \(95\%\)
library(dplyr)
datos <- read.csv("~/Angie/datos_negocios_var_5_ventas.csv")
datos_A <- filter(datos, Tienda == "Tienda A")
datos_C <- filter(datos, Tienda == "Tienda C")
frecuentes_A <- sum(datos_A$Clientes_Frecuentes)
frecuentes_C <- sum(datos_C$Clientes_Frecuentes)
p_A <- frecuentes_A / nrow(datos_A)
p_C <- frecuentes_C / nrow(datos_C)
diff_proporciones <- p_A - p_C
error_diff_p <- sqrt((p_A * (1 - p_A) / nrow(datos_A)) + (p_C * (1 - p_C) / nrow(datos_C)))
z_critico <- qnorm(0.975)
IC_diff_proporciones <- c(diff_proporciones - z_critico * error_diff_p,
diff_proporciones + z_critico * error_diff_p)
cat("Proporción de clientes Frecuentes en la tienda A:", round(p_A, 2), "\n")
## Proporción de clientes Frecuentes en la tienda A: 0.35
cat("Proporción de clientes Frecuentes en la tienda C:", round(p_C, 2), "\n")
## Proporción de clientes Frecuentes en la tienda C: 0.57
cat("Diferencia de proporciones:", round(diff_proporciones, 4), "\n")
## Diferencia de proporciones: -0.2185
cat("Intervalo de confianza (95%):", round(IC_diff_proporciones[1], 4), "a", round(IC_diff_proporciones[2], 4), "\n")
## Intervalo de confianza (95%): -0.448 a 0.011
Conclusion: Con un nivel de confianza del 95% se concluye que no se puede hacer una estimacion debido a que el intervalo de confianza esta entre -0.448 a 0.011
PARTE 2: TALLER 3
Un analista financiero afirma que el monto promedio de ventas mensuales en la Tienda C es mayor o igual a $32,000. Para verificarlo, se toma una muestra de 35 registros de ventas de esta tienda, obteniendo los siguientes resultados:
Datos:
Muestra \(n\): 35
({X}): 29964.89
Desviacion estandar \(o\): 10000
Nivel de significancia α: 0.05
\(u\): 32000
Formulacion de la hipotesis
Hipótesis Nula \(H_0\): El monto promedio de ventas en la Tienda C es mayor o igual a $32000.
Hipótesis Alternativa \(H_1\): El monto promedio de ventas en la Tienda C menor a $32000.
Elementos
media_muestral <- 29964.89
mu0 <- 32000
sigma <- 10000
n <- 35
alpha <- 0.05
z <- (media_muestral - mu0) / (sigma / sqrt(n))
cat("Estadístico Z:", round(z, 2), "\n")
## Estadístico Z: -1.2
z_critico <- qnorm(alpha)
cat("Valor crítico (Z_α):", round(z_critico, 2),"\n")
## Valor crítico (Z_α): -1.64
Verificacion
Regla de decision
Si Z ≤ -Zα; entonces, se Rechaza \(H_0\); de lo contrario, se acepta \(H_0\)
if (z <= z_critico) {cat("Decisión: Rechazar H0 (Z ≤ Zα)\n")
} else
{cat("Decisión: No rechazar H0 (Z > Zα)\n")}
## Decisión: No rechazar H0 (Z > Zα)
Como z: -1.2 y Zα:-1.64, entonces z > \(z_α\) por lo tanto no se rechaza \(H_0\)
Grafica
media_muestral <- 29964.89
mu0 <- 32000
sigma <- 10000
n <- 35
alpha <- 0.05
z <- (media_muestral - mu0) / (sigma / sqrt(n))
z_critico <- qnorm(alpha)
curve(dnorm(x), from = -3, to = 3, main = "Prueba de Hipótesis Unilateral Izquierda",
xlab = "Z", ylab = "Densidad", col = "black", lwd = 2)
abline(v = z_critico, col = "red", lty = 2, lwd = 2)
abline(v = z, col = "blue", lty = 2, lwd = 2)
legend("topright",
legend = c(sprintf("Z crítico (α=0.05) = %.3f", z_critico),
sprintf("Z = %.3f", z)),
col = c("red", "blue"), lty = 2, lwd = 2)
x_rechazo <- seq(-3, z_critico, length.out = 100)
y_rechazo <- dnorm(x_rechazo)
polygon(c(x_rechazo, rev(x_rechazo)), c(rep(0, 100), rev(y_rechazo)),
col = rgb(1, 0, 0, 0.3), border = NA)
Si z cae en zona de rechazo, se rechaza \(H_0\). Como z no cayo en la zona de rechazo entonces no se rechaza \(H_0\)
Valor P
Si P valor es ≤ α se rechaza \(H_0\)
z <- -1.20
valor_p <- 1 - pnorm(z)
cat("Valor p (unilateral derecha):", valor_p, "\n")
## Valor p (unilateral derecha): 0.8849303
si P: 0.88 y α: 0.05 no se rechaza H_0
Conclusion: podemos concluir que el monto de ventas de la tienda c podria ser mayor o igual a $32,000 debido a que la \(H_0\) (\(u\)≥ 32000) no se rechazo.
Prueba de Hipótesis para una Proporcion
La Tienda C tiene 35 registros. Se ha observado que 20 de ellos tienen Clientes Frecuentes. Queremos saber si la proporción de clientes frecuentes en la Tienda C es diferente del promedio general esperado del 45%.
Datos
Muestra \({n}\): 35 tiendas
Proporcion muestral \(\hat{P}\): 0.57
Nivel de significancia α: 0.05
\(P_0\): 0.45
Formulacion de la hipotesis
Hipótesis Nula \(H_0\): p = 0.45 la proporción de clientes frecuentes en Tienda C es igual 45%
Hipótesis Alternativa \(H_1\): p ≠ 0.45 la proporción de clientes frecuentes en Tienda C es diferente a 45%
Elementos
n <- 35
p_muestral <- 0.57
p_0 <- 0.45
alpha <- 0.05
error_estandar <- sqrt((p_0 * (1 - p_0)) / n)
z <- (p_muestral - p_0) / error_estandar
z_critico <- qnorm(1- alpha/2)
cat("Valor Z:", round(z,2), "\n")
## Valor Z: 1.43
cat("Z crítico:", round(z_critico,2), "\n")
## Z crítico: 1.96
Verificacion
Regla de decisiones
Si Z ≥ Zα/2 o si Z ≤ -Zα/2; entonces, se Rechaza \(H_0\); de lo contrario, se acepta \(H_0\)
decision <- ifelse(abs(z) >= z_critico, "Rechazar H_0", "No Rechazar H0")
cat("Decisión:", decision, "\n")
## Decisión: No Rechazar H0
como es una prueba bilateral se toma z critico como un valor absoluto por ende z critico es mayor a z normal y por eso no se rechaza \(H_0\)
Grafico
Si z cae en zona de rechazo, se rechaza \(H_0\).
library(ggplot2)
z_vals <- seq(-4, 4, length.out = 1000)
densidad <- dnorm(z_vals)
df <- data.frame(z = z_vals, densidad = densidad)
z_obtenido <- 1.43
z_critico <- 1.96
ggplot(df, aes(x = z, y = densidad)) +
geom_line(color = "black", size = 1.2) +
geom_area(data = subset(df, z > z_critico), aes(x = z, y = densidad),
fill = "red", alpha = 0.3) +
geom_area(data = subset(df, z < -z_critico), aes(x = z, y = densidad),
fill = "red", alpha = 0.3) +
geom_vline(xintercept = z_obtenido, color = "blue", linetype = "dashed", size = 1.2) +
geom_vline(xintercept = c(-z_critico, z_critico), color = "red", linetype = "dotted", size = 1) +
labs(
title = "Distribución Normal Estándar",
subtitle = paste("Z obtenido =", z_obtenido, "| Z crítico = ±", z_critico),
x = "Valor Z",
y = "Densidad"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 16, face = "bold", hjust = 0.5),
plot.subtitle = element_text(size = 13, hjust = 0.5),
axis.title = element_text(size = 13),
axis.text = element_text(size = 11)
)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Como z no cae en la zona de rechazo, entonces no se rechaza \(H_0\)
P valor
Si P valor es ≤ α se rechaza \(H_0\)
p_valor <- 2 * (1 - pnorm(abs(z)))
cat("Valor p:", round(p_valor,2), "\n")
## Valor p: 0.15
como p: 0.15 y α: 0.05, entonces no se rechaza \(H_0\)
Conclusion
Debido a que la hipotesis nula (\(H_0\)=0.45) no se rechaza podeos concluir que no hay suficiente evidencia estadística para afirmar que la proporción de clientes frecuentes en la Tienda C sea diferente al 45%.