Analizar el comportamiento de consumo de los clientes durante el Black Friday, identificando el nicho de mercado de los consumidores a partir de una muestra representativa de 120 datos extraídos de una base de 47,734 transacciones.
Identificar patrones de compra por género: Examinar una muestra aleatoria para detectar tendencias de consumo según el género, diferenciando las preferencias y comportamientos de hombres y mujeres.
Detectar oportunidades de mercado en las ciudades con mayor volumen de compras: Analizar las ciudades donde se realizaron más transacciones para encontrar áreas de interés para posibles inversores.
Evaluar los ingresos por género: Determinar qué género genera más ingresos en proporción, evaluando si las mujeres o los hombres tienen una mayor propensión a comprar.
Analizar la relación entre edad e ingresos: Estudiar la relación entre la edad de los consumidores y sus ingresos para identificar qué grupos etarios son más propensos a realizar compras significativas.
Definir el nicho de mercado óptimo: A partir de la muestra aleatoria, identificar el segmento de mercado más realista y rentable para dirigir esfuerzos comerciales.
Aplicar análisis estadístico utilizando R Studio: Desarrollar un estudio detallado del comportamiento del consumidor mediante herramientas estadísticas en el entorno de programación R Studio.
Utilizar intervalos de confianza para mejorar la comprensión del riesgo: Proporcionar una mejor comprensión de la incertidumbre asociada a la inversión en distintos tipos de tiendas, ciudades y segmentos poblacionales, utilizando intervalos de confianza.
Validar teorías mediante pruebas de hipótesis: Comprobar o refutar las teorías y estimaciones realizadas a partir de la muestra aleatoria mediante pruebas de hipótesis, aportando rigor estadístico a las conclusiones.
El análisis de datos es fundamental para comprender y extraer conclusiones sobre el comportamiento de los consumidores durante el Black Friday en Estados Unidos. Este análisis ayuda a las empresas a identificar tendencias y prever ventas futuras. A continuación, se describen las principales técnicas utilizadas:
En resumen, este análisis permite entender mejor cómo compran los clientes durante el Black Friday, lo cual es crucial para tomar decisiones en marketing, inventarios y ofertas futuras.
En esta sección y en los ejercicios futuros asuman que los 47.734 datos corresponden a la población de clientes de la cadena de almacenes que obtuvo la información de la base de datos descargada. Se quiere estudiar cómo fueron las compras en esa jornada, por lo que se analizará principalmente la variable PURCHASE.
Extraiga una muestra aleatoria de tamaño 120, use los últimos dígitos de la cédula de los integrantes del grupo. Debe explicar el paso a paso y adjuntar la muestra en formado .xlsx (Solo la muestra, el archivo no debe contener fórmulas ni procesos allí usados).
library(readxl)
#Datos del archivo Excel
Blackfriday <- read_excel("Blackfriday.xlsx")
View(Blackfriday)
set.seed(22893408)
Data.blackfriday <- Blackfriday
#Muestra
muestra <- Data.blackfriday[sample(nrow(Data.blackfriday), size = 120), ]
View(muestra)
#install.packages("openxlsx")
#library(openxlsx)
#write.xlsx(muestra, file = "muestra_blackfriday.xlsx")
#setwd("C:/Users/Acer/Desktop/4TO SEMESTRE/P. y E. Fundamental/Parcial Final/MUESTRA EXCEL")
#Exportar en formato Excel
#write.table(muestra, file = "Muestra_BlackFriday", sep = ";", row.names = F)Realice un análisis descriptivo con las variables “Gender”, “City_Category” e “Income”
# Cargar librerías necesarias
library(ggplot2)
# Crear gráfico de dispersión con línea de tendencia
ggplot(muestra, aes(x = Age, y = Purchase)) +
geom_point(color = "pink", alpha = 0.6) + # Puntos de dispersión
geom_smooth(method = "lm", color = "lightblue", se = FALSE) + # Línea de tendencia (regresión lineal)
labs(title = "Relación entre Edad y Monto de Compra",
x = "Edad",
y = "Monto de Compra",
caption = "Línea roja: Regresión lineal") +
theme_minimal() + # Tema limpio y minimalista
theme(plot.title = element_text(hjust = 0.5, size = 15), # Ajustar el título
axis.title = element_text(size = 12)) # Ajustar el tamaño de las etiquetas de los ejes## `geom_smooth()` using formula = 'y ~ x'
Gráfica Hecha por: Chat GPT
Tabla de Distribución de Género en la Muestra
##
## F M
## 31 89
Tabla de Distribución Porcentual de Género
##
## F M
## 25.83333 74.16667
#Visualización Mejorada del Gráfico
#install.packages("showtext")
#Librería para usar fuentes de Google
library(showtext)## Loading required package: sysfonts
## Loading required package: showtextdb
showtext_auto()
#Fuente "Lora"
font_add_google("Lora", "lora")
par(family = "lora")
#Cantidad de cada género en la muestra
gender_counts <- table(muestra$Gender)
#Porcentaje de cada género
gender_pct <- round(gender_counts / sum(gender_counts) * 100, 1) #Porcentajes redondeados
#Etiquetas para el gráfico
labels <- paste(gender_pct, "%", sep = " ")
#Colores para el gráfico
colores <- c("#3365d3", "#f34c9d")
#Gráfico
pie(gender_counts,
labels = labels, #Etiquetas
col = colores, #Colores
main = "Distribución de Género Que compraron en el Black Friday", #Título
border = "white", #Borde para el gráfico
radius = 0.9, #Radio
)
#Leyenda del gráfico
legend("topright",
legend = c("Hombres", "Mujeres"), #Leyenda
fill = colores, #Colores
cex = 1.2, #Tamaño del texto
title = "Género") #Título
Gráfica Hecha por: Chat GPT
# Crear gráfico de barras mejorado con colores distintos por categoría
ggplot(muestra, aes(x = reorder(City_Category, Purchase), y = Purchase, fill = City_Category)) +
geom_bar(stat = "identity", show.legend = FALSE) + # Crear las barras con borde negro
scale_y_continuous(labels = scales::comma) + # Escalar eje Y con formato legible
scale_fill_manual(values = c("A" = "#66c2a5", "B" = "#fc8d62", "C" = "#8da0cb")) + # Colores diferentes por ciudad
labs(title = "Compras Totales por Categoría de Ciudad",
x = "Categoría de Ciudad",
y = "Total de Compras") +
coord_flip() + # Voltear el gráfico para facilitar la lectura
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, size = 16, face = "bold"), # Título más grande y en negrita
axis.title = element_text(size = 13), # Ajustar el tamaño de las etiquetas
axis.text.x = element_text(size = 11), # Agrandar los números del eje X
panel.grid.major = element_line(color = "gray85"), # Cambiar el color de las líneas de la cuadrícula
panel.grid.minor = element_blank() # Quitar las líneas de la cuadrícula menor
)
Gráfica Hecha por: Chat Gpt
Tabla Distribución de Categorías de Ciudad en la Muestra
##
## A B C
## 26 51 43
Tabla Porcentaje de Compradores por Categoría de Ciudad
##
## A B C
## 21.66667 42.50000 35.83333
library(showtext)
showtext_auto()
font_add_google("Lora", "lora")
par(family = "lora")
city_table <- table(muestra$City_Category)
prop_city <- prop.table(city_table) * 100
barplot(city_table,
col = c("#c0c7fb", "#f99973", "#f6c0d8"),
main = "Distribución por Categoría de Ciudad",
ylab = "Frecuencia",
xlab = "Categoría de Ciudad",
border = "white", # Bordes de las barras
ylim = c(0, max(city_table) * 1.2), # Ajustar el límite superior
cex.axis = 0.8, # Tamaño de las etiquetas de los ejes
cex.names = 0.9, # Tamaño de las etiquetas de las categorías
las = 1)
text(x = barplot(city_table, plot = FALSE),
y = city_table,
labels = city_table,
pos = 3,
cex = 0.8,
col = "black")library(showtext)
showtext_auto()
font_add_google("Lora", "lora")
par(family = "lora")
gender_table <- table(muestra$Gender)
city_table <- table(muestra$City_Category)Tabla Conteo de Género en la Muestra
##
## F M
## 31 89
Conteo de Categorías de Ciudad en la Muestra
##
## A B C
## 26 51 43
Distribución Proporcional de Género: Femenino y Masculino
##
## F M
## 0.2583333 0.7416667
Proporción de Compradores por Categoría de Ciudad
##
## A B C
## 0.2166667 0.4250000 0.3583333
Análisis de la Relación entre Género y Ciudad
##
## A B C
## F 6 17 8
## M 20 34 35
barplot(tabla_contingencia, beside = TRUE, legend = rownames(tabla_contingencia),
col = c("#f34c9d", "#3365d3"), main = "Distribución de Género que compraron en cada Ciudad",
xlab = "Categoría de Ciudad", ylab = "Frecuencia", border = "white")mosaicplot(tabla_contingencia, color = c("#3365d3", "#f34c9d"),
main = "Relación entre Género y Categoría de Ciudad",
xlab = "Género", ylab = "Categoría de Ciudad",
las = 1, cex.axis = 0.8)
Gráfica Hecha por: Chat GPT
## Media de ingreso de la muestra: 12803.66
## Mediana del ingreso de la muestra: 12568
## Desviación estándar del ingreso de la muestra: 2886.377
## Variacion del ingreso de la muestra: 8331175
## Rango del ingreso de la muestra: 6752 21503
Cálculo de los Cuantiles del Ingreso (25%, 50% y 75%)
## 25% 50% 75%
## 11045.50 12568.00 14580.75
Histograma
library(ggplot2)
# Histograma
ggplot(muestra, aes(x = Income)) +
geom_histogram(binwidth = 500, fill = "#dee255", color = "white", alpha = 0.8) +
labs(title = "Distribución del Ingreso",
x = "Ingreso",
y = "Frecuencia") +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 16),
axis.title.x = element_text(size = 14, margin = margin(t = 10)),
axis.title.y = element_text(size = 14, margin = margin(r = 10)),
axis.text = element_text(size = 12)
)Comparación de Ingreso por Género
# Comparación del ingreso por género con leyenda personalizada
ggplot(muestra, aes(x = Gender, y = Income, fill = Gender)) +
geom_boxplot(alpha = 0.7, outlier.color = "#f99973", outlier.shape = 16, outlier.size = 2) +
scale_fill_manual(values = c("#3365d3", "#f34c9d")) +
labs(title = "Comparación del Ingreso por Género",
x = "Género",
y = "Ingreso",
fill = "Género") +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 16),
axis.title.x = element_text(size = 14, margin = margin(t = 10)),
axis.title.y = element_text(size = 14, margin = margin(r = 10)),
axis.text = element_text(size = 12),
legend.position = "right"
)
Gráfica Hecha por: Chat GPT
Relación entre ingreso y edad
#Relación entre ingreso y edad
ggplot(muestra, aes(x = Age, y = Income)) +
geom_point(color = "#3c6d1e", size = 3, alpha = 0.6) + # Puntos personalizados
geom_smooth(method = "lm", color = "#2c3e50", se = FALSE, linetype = "dashed") + # Línea de tendencia
labs(title = "Relación entre Ingreso y Edad",
x = "Edad",
y = "Ingreso") +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 16),
axis.title.x = element_text(size = 14, margin = margin(t = 10)),
axis.title.y = element_text(size = 14, margin = margin(r = 10)),
axis.text = element_text(size = 12)
)## `geom_smooth()` using formula = 'y ~ x'
#Sesgo y Curtosis del ingreso
sesgo_ingreso <- mean((muestra$Income - mean(muestra$Income))^3) / sd(muestra$Income)^3
curtosis_ingreso <- mean((muestra$Income - mean(muestra$Income))^4) / sd(muestra$Income)^4 - 3
cat("Sesgo del ingreso:", round(sesgo_ingreso, 3))## Sesgo del ingreso: 0.268
## Curtosis del ingreso: 0.129
De la variable PURCHASE, determine el valor de la media y la desviación estándar poblacionales y muestrales (tienen la población y una muestra). Explique brevemente quién es el estimador de quién allí. Además, calcule la probabilidad de que la variable media muestral sea mayor o igual que el valor de la poblacional.
#Media y desviación estándar poblacional
media_poblacional <- mean(Blackfriday$Purchase);media_poblacional## [1] 9508.259
## [1] 5001.657
## [1] 8966.417
## [1] 4905.116
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -5615 5292 9415 8966 12677 18565
purchase_filtrado <- muestra$Purchase[muestra$Purchase >= 0]
n <- length(muestra$PURCHASE)
mu <- media_poblacional
sigma <- desv_poblacional #
x_bar <- media_muestral
z_score <- (x_bar - mu) / (sigma / sqrt(n))
probabilidad <- 1 - pnorm(z_score)
cat("Probabilidad de que la media muestral sea mayor o igual que la media poblacional es:", probabilidad)## Probabilidad de que la media muestral sea mayor o igual que la media poblacional es: 0.5
Haga el histograma de la variable PURCHASE, calcule el sesgo, la curtosis e indique con ellos brevemente si la variable parece distribuirse de forma normal o no.
# install.packages("e1071")
# install.packages("nortest")
library(e1071)
library(nortest)
#Histograma
hist(muestra$Purchase, col = "#f6c0d8", main = "Histograma Variable Purchase",
xlab = "Purchase", ylab = "Frecuencia")#Calcular sesgo y curtosis
sesgo <- skewness(muestra$Purchase, na.rm = TRUE)
curtosis <- kurtosis(muestra$Purchase, na.rm = TRUE)## [1] -0.3840804
Interpretación: Sesgo negativo: Un sesgo de \(-0.3840804\) indica que la distribución de la variable Purchase tiene una cola más larga a la izquierda, lo que significa que hay más valores extremos (outliers) a la izquierda (valores más bajos) que a la derecha. En otras palabras, hay una tendencia a que los datos sean ligeramente asimétricos hacia la parte inferior. Cercano a 0: Dado que el valor del sesgo está cerca de 0, esto sugiere que la distribución no está extremadamente sesgada, pero sí hay cierta asimetría hacia la izquierda.
## [1] -0.0156752
Interpretación: Curtosis negativa: Un valor de curtosis de aproximadamente \(-0.0156752\) indica que la distribución es ligeramente más plana en comparación con una distribución normal. Esto se refiere a que hay menos valores extremos (outliers) en comparación con una distribución normal. Cercano a 0: Al estar tan cerca de 0, sugiere que la distribución de Purchase es muy similar a la normal en términos de sus colas. Sin embargo, la curtosis negativa implica que podría tener menos extremos comparada con la normal.
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: muestra$Purchase
## D = 0.056288, p-value = 0.4623
##
## Cramer-von Mises normality test
##
## data: muestra$Purchase
## W = 0.061288, p-value = 0.3611
Normalidad de la Distribución: - Sesgo: La distribución de Purchase tiene una ligera asimetría hacia la izquierda, lo que puede afectar su normalidad. - Curtosis: La distribución es similar a una normal, pero ligeramente más plana, lo que sugiere menos valores extremos.
En conjunto, estos resultados sugieren que la variable Purchase no sigue una distribución normal, pero tampoco se aleja drásticamente de ella. La ligera asimetría y la planitud indican que puede ser útil considerar transformaciones o técnicas no paramétricas si planeas realizar análisis estadísticos que asumen normalidad.
Use la muestra seleccionada en la actividad 1 para todos los desarrollos:
Construya un intervalo de confianza al noventa por ciento para el promedio de la variable PURCHASE. Escriba la interpretación en el contexto del caso. Compruebe si la media poblacional cae en dicho intervalo. Justifique su respuesta
## [1] 8966.417
## [1] 119
talfamed <- qt(0.05, df = df, lower.tail = FALSE)
Ic_i <- xbarra - talfamed * s / sqrt(n)
Ic_s <- xbarra + talfamed * s / sqrt(n)
cat("El intervalo de confianza para la media de Purchase es:\n")## El intervalo de confianza para la media de Purchase es:
## Inferior: 8224.116
## Superior: 9708.718
media_poblacional <- mean(Blackfriday$Purchase, na.rm = TRUE)
if (media_poblacional >= Ic_i && media_poblacional <= Ic_s) {
cat("La media poblacional", media_poblacional, "CAE dentro del intervalo de confianza, que va de", Ic_i, "a", Ic_s, "\n")
} else {
cat("La media poblacional", media_poblacional, "NO CAE dentro del intervalo de confianza, que va de", Ic_i, "a", Ic_s, "\n")
}## La media poblacional 9508.259 CAE dentro del intervalo de confianza, que va de 8224.116 a 9708.718
Con una confianza del 99% estimamos que las compras hechas en uno de los Blackfridays que se realizan en Estados Unidos está entre us$ 8668 y Us$9534.
Resolución del punto basado en: Chat GPT
Construya un intervalo de confianza al noventa y cinco por ciento para la proporción de ventas superiores a US$5.000. Escriba la interpretación en el contexto del caso. Compruebe si la proporción poblacional está en este intervalo.
# Asumiendo que tienes dos data frames: 'muestra' y 'Blackfriday'
# Con la variable 'Purchase' en ambos
library(ggplot2)
# Paso 1: Calcular la proporción muestral para 'muestra'
n_muestra <- nrow(muestra) # Número de observaciones en 'muestra'
ventas_mayores_5000_muestra <- sum(muestra$Purchase > 5000) # Ventas mayores a $5000
p_muestral <- ventas_mayores_5000_muestra / n_muestra # Proporción muestral
# Paso 2: Calcular el intervalo de confianza al 95% para 'muestra'
z <- 1.96 # Valor crítico para un nivel de confianza del 95%
error_estandar <- sqrt((p_muestral * (1 - p_muestral)) / n_muestra)
margen_error <- z * error_estandar
# Intervalo de confianza
IC_inferior <- p_muestral - margen_error
IC_superior <- p_muestral + margen_error
cat("El intervalo de confianza al 95% para 'muestra' es: [", IC_inferior, ", ", IC_superior, "]\n")## El intervalo de confianza al 95% para 'muestra' es: [ 0.7096219 , 0.8570448 ]
# Paso 3: Calcular la proporción poblacional para 'Blackfriday'
n_blackfriday <- nrow(Blackfriday) # Número de observaciones en 'Blackfriday'
ventas_mayores_5000_blackfriday <- sum(Blackfriday$Purchase > 5000) # Ventas mayores a $5000 en Blackfriday
p_poblacional <- ventas_mayores_5000_blackfriday / n_blackfriday # Proporción poblacional
cat("La proporción poblacional en 'Blackfriday' es:", p_poblacional, "\n")## La proporción poblacional en 'Blackfriday' es: 0.815247
# Paso 4: Comprobar si la proporción poblacional está dentro del intervalo de confianza
if (p_poblacional >= IC_inferior && p_poblacional <= IC_superior) {
cat("La proporción poblacional está dentro del intervalo de confianza.\n")
} else {
cat("La proporción poblacional NO está dentro del intervalo de confianza.\n")
}## La proporción poblacional está dentro del intervalo de confianza.
# --- Gráfico 1: Comparación de proporciones ---
proporciones <- data.frame(
Base = c("Muestra", "Blackfriday"),
Proporcion = c(p_muestral, p_poblacional)
)
ggplot(proporciones, aes(x = Base, y = Proporcion, fill = Base)) +
geom_bar(stat = "identity", width = 0.6) +
labs(title = "Comparación de Proporciones de Ventas Mayores a $5000",
x = "Base de Datos",
y = "Proporción de Ventas Mayores a $5000") +
scale_fill_manual(values = c("Muestra" = "#f9e5c7", "Base de Datos excel" = "#f6c0d8")) +
theme_minimal()# --- Gráfico 2: Intervalo de confianza ---
# Para mostrar el intervalo de confianza y la proporción poblacional
intervalo_confianza <- data.frame(
Intervalo = c("Inferior", "Muestral", "Superior"),
Valor = c(IC_inferior, p_muestral, IC_superior)
)
ggplot(intervalo_confianza, aes(x = Intervalo, y = Valor)) +
geom_point(color = "#c0c7fb", size = 4) +
geom_errorbar(aes(ymin = IC_inferior, ymax = IC_superior), width = 0.2, color = "#f99973") +
geom_hline(yintercept = p_poblacional, color = "#f6c0d8", linetype = "dashed", size = 1.2) +
labs(title = "Intervalo de Confianza para la Proporción de Ventas Mayores a $5000",
x = "Intervalo",
y = "Proporción") +
annotate("text", x = 2.5, y = p_poblacional, label = "Proporción Poblacional", color = "#3365d3", vjust = -0.5) +
theme_minimal()Construya un intervalo de confianza al noventa por ciento para la diferencia de medias de las compras hechas por hombres y por mujeres. Escriba la interpretación en el contexto del caso.
hombres <- subset(muestra, Gender == "M")
mujeres <- subset(muestra, Gender == "F")
res2c <- t.test(x = hombres$Purchase, y = mujeres$Purchase,
paired = FALSE, var.equal=FALSE, conf.level = 0.90)$conf.int
res2c <- round(res2c, 2); res2c## [1] -1493.85 2177.74
## attr(,"conf.level")
## [1] 0.9
## Con una confianza del 90%, la diferencia del promedio de las compras está entre: -1493.85 2177.74
Construya un intervalo de confianza para la varianza de las compras de las mujeres.
# Especifica un mirror para CRAN al instalar paquetes
if (!require('devtools')) {
install.packages('devtools', repos = "https://cloud.r-project.org")
}## Loading required package: devtools
## Loading required package: usethis
# Instalación y carga del paquete stests
if (!require('stests')) {
devtools::install_github('fhernanb/stests', force = TRUE)
}## Loading required package: stests
##
## Attaching package: 'stests'
## The following object is masked from 'package:stats':
##
## var.test
# Cargar el paquete stests
library(stests)
# Filtrar los datos de las mujeres con valores no NA en Purchase
mujeres_2d <- subset(muestra, Gender == "F" & !is.na(Purchase))
# Verificar si hay suficientes datos para el análisis
if (nrow(mujeres_2d) > 0) {
res2d <- stests::var.test(x = mujeres_2d$Purchase, conf.level = 0.90)
# Mostrar el intervalo de confianza
cat("El intervalo de confianza para la varianza de las compras de las mujeres es: [",
round(res2d$conf.int[1], 3), ",", round(res2d$conf.int[2], 3), "]\n")
} else {
cat("No hay datos disponibles para calcular el intervalo de confianza.\n")
}## El intervalo de confianza para la varianza de las compras de las mujeres es: [ 20055823 , 47473047 ]
# Graficar el histograma de compras
hist(mujeres_2d$Purchase, col = "#c0c7fb", main = "Histograma de Compras de Mujeres",
xlab = "Compras", ylab = "Frecuencia", freq = TRUE)Usando la muestra seleccionada en la actividad 1, conteste:
Construya una prueba de hipótesis con un nivel de significancia de 0,05 para las ventas promedio, usando como hipótesis alternativa: “μ es mayor a el valor real encontrado en la población (Actividad 1 ítem c.)”. Justifique cada parte del proceso, al final dé su conclusión en el contexto del problema.
# Especificar un mirror de CRAN
options(repos = c(CRAN = "https://cloud.r-project.org"))
# Instalar los paquetes si es necesario
if (!require("BSDA")) install.packages("BSDA", dependencies = TRUE)
if (!require("nortest")) install.packages("nortest", dependencies = TRUE)
# Cargar las librerías
library(BSDA)
library(nortest)
# Cálculo de la media muestral y desviación estándar
media_muestral <- mean(muestra$Purchase, na.rm = TRUE)
desv_muestral <- sd(muestra$Purchase, na.rm = TRUE)
# Tamaño de la muestra
n <- length(muestra$Purchase)
# Media poblacional de referencia
mu <- mean(Blackfriday$Purchase, na.rm = TRUE)
# Cálculo del estadístico Z
est <- (media_muestral - mu) / (desv_muestral / sqrt(n))
# Mostrar el valor del estadístico
cat("Estadístico Z:", round(est, 3), "\n")## Estadístico Z: -1.21
# Prueba de hipótesis usando tsum.test
sol_a <- tsum.test(mean.x = media_muestral, s.x = desv_muestral, n.x = n, alternative = "greater", mu = mu)
# Mostrar los resultados de la prueba tsum.test
cat("Resultado de tsum.test:\n")## Resultado de tsum.test:
##
## One-sample t-Test
##
## data: Summarized x
## t = -1.2101, df = 119, p-value = 0.8857
## alternative hypothesis: true mean is greater than 9508.259
## 95 percent confidence interval:
## 8224.116 NA
## sample estimates:
## mean of x
## 8966.417
# Visualización de la distribución normal estándar
x <- seq(-3, 3, length=1000)
y <- dnorm(x)
plot(x, y, type="l", lwd=2, col="#27187e", xlab="Estadístico Z", ylab="Densidad", main="Distribución Normal Estándar")
# Agregar línea para el valor del estadístico Z
abline(v=sol_a$statistic, col="#aeb8fe", lwd=2)
# Sombrear el área de la región de rechazo
polygon(c(seq(qnorm(0.95), 3, length=100), 3, qnorm(0.95)),
c(dnorm(seq(qnorm(0.95), 3, length=100)), 0, 0),
col=rgb(1, 0, 0, alpha=0.3), border=NA)# Interpretación de los resultados
if (sol_a$p.value < 0.05) {
cat("El p-valor es menor que 0.05, se rechaza la hipótesis nula.\n")
cat("La media muestral es significativamente mayor que la media poblacional (mu = ", mu, ").\n")
} else {
cat("El p-valor es mayor que 0.05, no se rechaza la hipótesis nula.\n")
cat("No hay suficiente evidencia para afirmar que la media muestral es mayor que la media poblacional (mu = ", mu, ").\n")
}## El p-valor es mayor que 0.05, no se rechaza la hipótesis nula.
## No hay suficiente evidencia para afirmar que la media muestral es mayor que la media poblacional (mu = 9508.259 ).
Construya una prueba de hipótesis con un nivel de significancia de 0,05 para concluir si hay diferencia entre las compras promedio de hombres y mujeres. Justifique cada parte del proceso, al final dé su conclusión en el contexto del problema.
# Dividir la muestra por género
compras_hombres <- muestra$Purchase[muestra$Gender == "M"]
compras_mujeres <- muestra$Purchase[muestra$Gender == "F"]
# Realizar la prueba t de comparación de medias
resultado <- t.test(compras_hombres, compras_mujeres, alternative = "two.sided", conf.level = 0.95)
# Mostrar los resultados de la prueba t
print(resultado)##
## Welch Two Sample t-test
##
## data: compras_hombres and compras_mujeres
## t = 0.31253, df = 47.092, p-value = 0.756
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -1859.044 2542.936
## sample estimates:
## mean of x mean of y
## 9054.753 8712.806
# Crear un data frame para las compras por género
data_compras <- data.frame(
compras = c(compras_hombres, compras_mujeres),
genero = factor(c(rep("Hombres", length(compras_hombres)), rep("Mujeres", length(compras_mujeres))))
)
# Graficar el boxplot de las compras por género
boxplot(compras ~ genero, data = data_compras, las = 1,
xlab = "Género", ylab = "Compras", main = "Compras por Género", col = c("lightblue", "lightpink"))Construya un intervalo de confianza para el cociente de varianzas de las compras entre hombres y mujeres.
# Vector
hombres <- as.numeric(unlist(muestra[muestra$Gender == "M", "Purchase"]))
mujeres <- as.numeric(unlist(muestra[muestra$Gender == "F", "Purchase"]))
# F para comparar las varianzas
res1 <- var.test(x = hombres, y = mujeres, conf.level = 0.95)
# Intervalo de confianza
cat("Intervalo de confianza para el cociente de varianzas: [",
res1$conf.int[1], ", ", res1$conf.int[2], "]\n")## Intervalo de confianza para el cociente de varianzas: [ 0.4065238 , 1.335943 ]
# Histograma
hist(hombres, col = rgb(51/255, 109/255, 211/255, 0.5), # Color para Hombres: #3365d3
xlim = c(min(c(hombres, mujeres)), max(c(hombres, mujeres))),
main = "Histograma de Compras por Género",
xlab = "Monto de Compras",
ylab = "Frecuencia")
hist(mujeres, col = rgb(243/255, 76/255, 157/255, 0.5), add = TRUE) # Color para Mujeres: #f34c9d
legend("topright", legend = c("Hombres", "Mujeres"),
fill = c(rgb(51/255, 109/255, 211/255, 0.5), rgb(243/255, 76/255, 157/255, 0.5)))Elabore una prueba de hipótesis con alfa = 5% para la igualdad de las varianzas de las compras entre hombres y mujeres.
# Asegurarse de que se obtiene un vector numérico
hombres <- as.numeric(unlist(muestra[muestra$Gender == "M", "Purchase"]))
mujeres <- as.numeric(unlist(muestra[muestra$Gender == "F", "Purchase"]))
# Realizar la prueba F para comparar varianzas
res <- var.test(x = hombres, y = mujeres, conf.level = 0.95)
# Mostrar resultados de la prueba
print(res)##
## F test to compare two variances
##
## data: hombres and mujeres
## F = 0.76987, num df = 88, denom df = 30, p-value = 0.3484
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.4065238 1.3359431
## sample estimates:
## ratio of variances
## 0.7698749
# Tomar decisión
if (res$p.value < 0.05) {
cat("Rechazamos H0: Hay evidencia suficiente para afirmar que las varianzas son diferentes.\n")
} else {
cat("No rechazamos H0: No hay evidencia suficiente para afirmar que las varianzas son diferentes.\n")
}## No rechazamos H0: No hay evidencia suficiente para afirmar que las varianzas son diferentes.
El análisis de las compras durante el Black Friday en Estados Unidos muestra varios puntos importantes sobre cómo se comportan los consumidores. En promedio, los clientes gastan una cierta cantidad, y la variabilidad en estos gastos nos ayuda a entender si los patrones de compra son consistentes. Se verificó que los datos siguen una distribución normal, lo cual es importante para aplicar otras técnicas estadísticas. Los intervalos de confianza nos dan una idea del rango en el que probablemente se encuentran los valores promedio de las compras y la proporción de ventas que superan los US$5.000, ayudando a tomar decisiones con mayor certeza. Se realizaron pruebas para comparar los gastos entre hombres y mujeres y para ver si el gasto promedio durante el Black Friday es significativamente mayor que un valor conocido. Esto permitió identificar diferencias importantes y validar suposicione sobre el comportamiento de los consumidores. Además, se estimó la proporción de ventas que superan un cierto montoo y se comparó la variabilidad de los datos entre diferentes grupos para evaluar la homogeniedad en el comportamiento de compra
Purchase El código summary(muestra$Purchase) da un resumen rápido de los datos de compra:
Min: El valor más bajo es -5615, lo que podría ser una devolución o un error. 1st Qu : El 25% de las compras son menores a 5292. Median: El valor central de las compras es 9415 (la mitad de las compras están por debajo de este valor). Mean: El promedio de todas las compras es 8966. 3rd Qu: El 75% de las compras son menores a 12677. -Max: El valor más alto registrado es 18565.
La función summary da una idea general de cómo están distribuidas las compras, incluyendo los valores mínimos, máximos, y algunos puntos clave como la mediana y los cuartiles.
El análisis de sesgo y curtosis indica lo siguiente:
Inferior: 8224.116 Superior: 9708.718
Este intervalo indica que se espera que la media verdadera de las compras esté entre **8224.116 y 9708.718 con un nivel de confianza (por lo general, 95%). No incluye valores negativos, lo que sugiere que las compras promedio son positivas. Un intervalo relativamente estrecho indica que la estimación de la media es precisa.
En resumen, podemos confiar en que la media de las compras en la población se encuentra dentro de este rango.
La curtosis es una medida que indica la cantidad de valores extremos en una distribución de datos. En el análisis de compras durante el Black Friday, una curtosis alta sugiere que existen más compras muy grandes o muy pequeñas de lo que se esperaría en una distribución normal, mientras que una curtosis baja indica que los valores están más concentrados alrededor de la media, con menos valores extremos.
Estadística t: t = -0.39829 Esta es la estadística calculada que se utiliza para evaluar la hipótesis. Un valor t cercano a 0 sugiere que la media de la muestra (8966.417) no es significativamente diferente de la media hipotética (9508.259). Grados de libertad , df = 12 Esto indica el número de observaciones menos uno. En este caso, sugiere que se basó en 13 datos (13 - 1 = 12).
p-value p = 0.6513 Este valor es mayor que el nivel de significancia típico de 0.05, lo que indica que no hay evidencia suficiente para rechazar la hipótesis nula. En otras palabras, no se puede afirmar que la media de las compras sea mayor que 9508.259.
Hipótesis alternativa: la media verdadera es mayor que 9508.259” - La prueba está evaluando si la media de la población es significativamente mayor que 9508.259.
Intervalo de confianza Se proporciona un intervalo de confianza del 95% de 6541.731. El límite inferior es bastante bajo, pero no se proporciona un límite superior, lo que sugiere que no se ha podido calcular un rango superior debido a que la media de la muestra está lejos de la media hipotética.
Media de la muestra: 8966.417 Este es el promedio de las compras en la muestra, que está por debajo de la media hipotética (9508.259). Para realizar el cálculo utilizamos la función “tsum.test” y “zsum.test”, estas funciones provienen de la librería “BSDA”, que nos permite un análisis básico estadístico, este para realizar la prueba de hipótesis
Orientación para futuros inversionistas: El análisis muestra que la ciudad C registró el mayor volumen de compras durante el Black Friday, seguida de cerca por la ciudad B. Esto sugiere que ambas ciudades son opciones atractivas para invertir en nuevas tiendas. Al combinar este resultado con otros factores externos como la competitividad del mercado, las condiciones macroeconómicas y la infraestructura local, los inversionistas pueden tomar decisiones más informadas, minimizando el riesgo y maximizando su rentabilidad. Invertir en tiendas ubicadas en estas ciudades podría ofrecer un buen equilibrio entre rentabilidad y riesgo.
Identificación del nicho de mercado: Para los inversionistas interesados en identificar un nicho de mercado, los datos revelan que el grupo demográfico más activo en compras en la ciudad C son hombres de entre 26 y 35 años. Por lo tanto, enfocar las estrategias de marketing y ventas en este segmento, en esta ciudad, podría ser una estrategia eficiente para maximizar las oportunidades de negocio.
Volumen de compras en las ciudades B y C: Se concluye que tanto en las ciudades B como C se registró un alto volumen de compras durante el Black Friday. Esto sugiere que sería valioso para las empresas investigar en mayor profundidad el comportamiento del consumidor en estas dos ciudades, lo que podría proporcionar una ventaja competitiva en la toma de decisiones comerciales.
Ingreso promedio y comportamiento de compra de los hombres: El análisis muestra que los hombres tienen, en promedio, ingresos más altos, lo que explica en gran parte por qué realizaron más compras en el Black Friday del año pasado. Este hallazgo resalta la importancia de considerar las diferencias de ingresos por género al desarrollar estrategias de marketing y ventas.
Segmento de edad de 26-35 años: El grupo de edad de 26 a 35 años fue el más activo en términos de compras. Esto sugiere que los ingresos en este rango de edad tienden a estar más concentrados, lo que convierte a este segmento en un objetivo atractivo para futuras campañas de ventas. Realizar un estudio más profundo sobre el comportamiento de compra en esta franja etaria permitiría entender mejor sus motivaciones y hábitos de consumo.
Uso de R Studio en estudios de mercado: Se comprobó que R Studio es una herramienta eficaz para desarrollar estudios de mercado realistas y alineados con las tendencias actuales. Los análisis realizados con esta plataforma pueden ofrecer un valor significativo para empresas que busquen internacionalizar sus productos o capturar segmentos de mercado específicos, ayudándolas a reducir el riesgo operativo al iniciar nuevas operaciones.