Las librerias son paquetes o bibliotecas de codigo los cuales ya contienen ciertas funciones, datos y documentación que amplia las capacidades de R.
A continuación la lista de librerias usadas en el trabajo.
library(readxl)
library(ggplot2)
library(rmarkdown)
library(descriptr)
library(ggthemes)
library(fdth)
library(car)
library(moments)
library(nortest)
library(stests)
library(stats)
library(plotrix)importacion del excel
A continuación haremos la importación del Excel donde se encuentra la base de datos que analizaremos. Este archivo fue descargado desde el siguiente enlace:
Para que el programa funcione de manera optima se debe importar el Excel a Rstudio y posterior a ello poner el read_excel que arroje con la ruta de cada uno en el siguiente chunk.
Esta base de datos cuenta con una muestra de 47.734 compras hechas en uno de los BlackFridays que se realizan en estados Unidos.
La descripción de las variables es la siguiente:
User_ID: Identificador único del comprador
Product_ID: Identificador único del producto
Gender: Sexo del comprador
Age: Edad del comprador dividida en contenedores
Occupation: Ocupación del comprador
City_Category: Lugar de residencia del comprador
Stay_In_Current_City_Years: Número de años en la ciudad actual
Marital_Status: Estado civil del comprador (1 -> Casado, 0 -> Soltero)
Product_Category_1: Categoría de producto de compra
Product_Category_2: El producto puede pertenecer a otra categoría
Product_Category_3: El producto puede pertenecer a otra categoría
Purchase: Valor de la compra en dólares
Income:Ingreso mensual
Se realizará un análisis de probabilidad y estadística de la base de datos BlackFriday, de esta se tomará una muestra de 120 datos aleatorios dada la extensión de la base original (usaremos una semilla con los dígitos 46026), en esta muestra se encuentran las variables que analizaremos.
En este analisis vamos a tomar en cuenta las categorias de “gender”, “city.category” e “Income”. Al analizar la muestra de la base de datos de compras durante el Black Friday, se identifican dos variables cualitativas: el género y el sector ubicado de cada individuo. Estas variables ofrecen una visión contextual sobre la diversidad y distribución de los compradores en función de su identidad de género y su posición dentro de los estratos socioeconómicos. Además, se considera una variable cuantitativa: el ingreso. Este dato numérico permite cuantificar y medir los niveles de ingresos de los compradores, lo que nos brinda información detallada sobre el poder adquisitivo de los diferentes grupos en este evento de compras. El análisis de estas variables cualitativas y cuantitativas en conjunto nos proporcionará una comprensión más completa y detallada de los patrones de comportamiento de compra durante el Black Friday.
Este estudio nos permitirá comprender la distribución de género entre los compradores, identificar la diversidad de los sectores representados y analizar la relación entre los ingresos y las decisiones de compra durante este evento. A través de este análisis, buscamos obtener una visión general de cómo estas variables se relacionan con el comportamiento de compra en el Black Friday, proporcionando así información valiosa para comprender mejor los patrones de consumo en este contexto.
Las variables cualitativas son aquellas que representan características o atributos no numéricos. Vamos a analizar 2 variables importantes: Genero y la categoria de la ciudad de residencia. A partir de ahi, podremos ubicarnos y entender mas facil a cada consumidor de esta muestra para comprender preferencias, rasgos, caranteristicas, etc.
La variable de genero nos ayudara a entender la distribución
proporcional de compradores según su identidad de género durante el
Black Friday. Esto puede proporcionar información valiosa sobre las
preferencias de compra o los productos más atractivos para diferentes
grupos de género.
En esta variable, tomaremos las caranteristicas Masculino = M y Femenino = F.
La frecuencia absoluta es una medida que indica el número de veces que aparece un valor específico en un conjunto de datos. En este caso, tenemos la frecuencia absoluta de dos categorías de género en una muestra de compradores del Black Friday:
A partir de la frecuencia absoluta, podremos analizar a traves de diferentes graficas, la tendencia y el analisis de esta categoria para poder entender la muestra sobre los compradores del Black friday.
barra_Gender <- ggplot(muestra, aes(x = Gender, fill = Gender)) +
geom_bar(lwd = 1, color = "black") +
scale_fill_manual(values = c("#EF233C", "#2B2D42", "#FFA500", "#00FF00")) +
theme(legend.position = "bottom") + theme(panel.background = element_rect(fill = "#EDF2F4"), plot.background = element_rect(fill = "white"), axis.text = element_text(color = "black"), legend.text = element_text(color = "black"), legend.title = element_text(color = "black"))
print(barra_Gender)Gracias a este grafico de barras encontramos que la frecuencia absoluta proporciona una comprensión directa y cuantitativa de la distribución de género en la muestra analizada, destacando que hay más compradores masculinos que femeninos en esta muestra particular.
La mayor presencia de compradores masculinos en comparación con los femeninos durante el Black Friday podría atribuirse a múltiples factores. Históricamente, los hombres tienden a buscar más productos relacionados con la tecnología o ciertos artículos específicos durante eventos de descuentos masivos, lo que podría contribuir a esta disparidad. Asimismo, las diferencias en las preferencias de compra entre géneros, con ciertos productos siendo más atractivos para los hombres en esta muestra particular, podrían influir en estos resultados. Las estrategias de marketing y publicidad empleadas durante el evento también podrían estar orientadas de manera más efectiva hacia un público masculino, afectando quién se siente más atraído a participar en estas compras. Además, los factores culturales y sociales, como las expectativas tradicionales sobre el rol de género en las compras familiares, podrían jugar un papel significativo en esta discrepancia, reflejando posibles estereotipos arraigados sobre los intereses de género durante este tipo de eventos.
pie3D(Gender$Freq, labels = Gender$Gender, explode = 0.1,
main = "DISTRIBUCIÓN DE GÉNERO",
col = c("#EF233C", "#2B2D42"),
labelcol = "black",
labelcex = 1,
theta = 0.8)
legend("topright", legend = Gender$Gender, fill = c("#EF233C", "#2B2D42"), title = "Género")La representación visual a través de un diagrama de torta proporciona una clara ilustración de la disparidad entre compradores masculinos y femeninos durante el Black Friday en la muestra analizada. En el diagrama de torta, se observa que aproximadamente el 75% de los compradores se identifican como masculinos, mientras que el restante 25% corresponde a compradores femeninos. Esta diferencia notable sugiere una predominancia masculina en las compras realizadas durante este evento de descuentos.
Al considerar la variable cualitativa que clasifica las ciudades en
categorías A, B y C, se busca comprender la distribución geográfica y
socioeconómica de los compradores durante el Black Friday. Esta variable
brinda una perspectiva clave sobre la diversidad de entornos urbanos
representados en la muestra de compras.
Analizar esta variable nos permite explorar cómo varían los patrones de compra en diferentes tipos de ciudades y si existen correlaciones entre la categoría de la ciudad y las decisiones de compra durante este evento de descuentos. Esta comprensión geográfica y socioeconómica contribuirá significativamente a identificar posibles tendencias o preferencias específicas de consumo relacionadas con el entorno urbano de los compradores durante el Black Friday.
La frecuencia absoluta proporciona una visión cuantitativa de la distribución geográfica de los compradores, destacando la presencia relativa de diferentes tipos de ciudades en el conjunto de datos:
Estos números indican cuántas veces se observó cada categoría de ciudad dentro de la muestra analizada. A traves de esta información, podremos representarlos graficamente para asi poder entender mejor esos numeros.
barra_City <- ggplot(muestra, aes(x = City_Category, fill = City_Category)) +
geom_bar(lwd = 1, color = "black") +
scale_fill_manual(values = c("#2B2D42", "#D80032", "#8D99AE", "#00FF00")) +
theme(legend.position = "bottom") + theme(panel.background = element_rect(fill = "#EDF2F4"), plot.background = element_rect(fill = "white"), axis.text = element_text(color = "black"), legend.text = element_text(color = "black"), legend.title = element_text(color = "black"))
print(barra_City)El gráfico de barras representa visualmente la distribución de compradores durante el Black Friday en función de las diferentes categorías de ciudades: A, B y C. En el gráfico, se observa claramente que la categoría B tiene la mayor frecuencia de compradores con un total de 59, seguida por la categoría C con 34 compradores, y la categoría A con 27 compradores. Esta representación gráfica resalta la predominancia de compradores provenientes de ciudades categorizadas como B, seguida por una presencia significativa de la categoría C y una menor cantidad de compradores de la categoría A. Esta visualización facilita la comparación entre las diferentes categorías de ciudades y permite identificar de manera intuitiva la proporción de compradores en cada una de ellas durante el evento del Black Friday.
Una de las posibles hipótesis es que las ciudades categorizadas como B podrían albergar una población con un equilibrio entre el poder adquisitivo y la disponibilidad de ofertas atractivas durante este evento, lo que resultaría en una mayor representación de compradores en esta categoría. Por otro lado, las ciudades categorizadas como A, a pesar de su probable mayor desarrollo económico, podrían tener una menor propensión a participar en este tipo de eventos masivos de compras, ya sea por diferentes patrones de consumo o por la disponibilidad de otros canales de venta. En cuanto a las ciudades categorizadas como C, podría existir una combinación de factores que incluyen una menor presencia de grandes ofertas o descuentos significativos, así como posiblemente un poder adquisitivo más moderado en comparación con las otras categorías.
pie3D(City_Category$Freq, labels = City_Category$City_Category, explode = 0.1,
main = "DISTRIBUCIÓN CATEGÓRICA EN LA CIUDAD",
col = c("#2B2D42", "#D80032", "#8D99AE"),
labelcol = "black",
labelcex = 1,
theta = 0.8)
legend("topright", legend = City_Category$City_Category, fill = c("#2B2D42", "#D80032", "#8D99AE"), title = "D. de Ciudad")Durante el Black Friday muestra visualmente que la categoría B tiene la mayor proporción de compradores, ocupando aproximadamente el 47% del total. Le sigue la categoría C, con alrededor del 34%, y la categoría A, con aproximadamente el 19%. Las diferencias proporcionales en la distribución de compradores entre las categorías de ciudades y podrían orientar estrategias para involucrar de manera más efectiva a diferentes áreas urbanas en eventos de compras masivas.
Una variable cuantitativa relevante podría ser el monto total gastado por cada comprador. Esta variable ofrece una visión numérica del gasto promedio durante el evento, permitiendo identificar patrones de consumo, segmentar a los compradores según su capacidad de gasto y comprender la distribución de gastos en la muestra.
una variable cuantitativa relevante podría ser el monto total gastado por cada comprador. Esta variable ofrece una visión numérica del gasto promedio durante el evento, permitiendo identificar patrones de consumo, segmentar a los compradores según su capacidad de gasto y comprender la distribución de gastos en la muestra.
la variable ingreso es fundamental al analizar el comportamiento de
compra durante el Black Friday. Esta variable cuantitativa ofrece una
medida numérica del poder adquisitivo de los compradores, permitiendo
segmentar y comprender mejor los patrones de gasto. Al examinar los
ingresos de los compradores, es posible identificar grupos con distintos
niveles de capacidad económica y evaluar cómo estos niveles influyen en
las decisiones de compra durante el evento. Además, analizar esta
variable en relación con los productos adquiridos o el monto gastado
puede revelar tendencias específicas de consumo entre diferentes
estratos económicos.
La frecuencia refleja la cantidad de individuos que se encuentran dentro de ese rango. En el intervalo [11985.536 ,13534.095), se observa una frecuencia absoluta notable, indicando que este rango particular concentra un mayor número de compradores en comparación con otros intervalos de ingresos.
El siguiente histograma nos muestra la cantidad de ingreso mensual que obtienen las personas de nuestra muestra, este va desde 0 hasta 20.000 dólares (Eje x), también se muestra la cantidad de personas que obtienen dicho ingreso (eje y) este irá de 0 a 25.
ggplot(muestra, aes(x = Income)) +
geom_histogram(bins = 14, fill = "#EF233C", alpha = 0.5, colour = "black") +
theme(panel.background = element_rect(fill="#EDF2F4"))En este histograma podemos observar lo siguiente: En el punto más alto se encuentra que la cantidad de ingreso es de aproximadamente 12.000 para 25 personas, en el punto más bajo se encuentra un ingreso cercano a $20.000 el cuál lo obtienen aproximadamente 2 personas.
En el siguiente gráfico de caja se muestra la distribución del ingreso del grupo de personas de nuestra muestra.
par(bg = "#EDF2F4")
boxplot(muestra$Income, horizontal = TRUE,
boxwex = 1,
boxlty = 1,
boxlwd = 1,
boxcol = 1,
boxfill = "#2B2D42",
whisklty = 2,
whisklwd = 2,
whiskcol = "#BC3030",
border = "white",
main = "Box plot de Income")Los siguientes son los puntos clave del análisis de nuestro gráfico de caja:
El ingreso medio o típico es de alrededor de 12,000.
El rango intercuartílico o la amplitud del 50% central es de entre 10,000 y 16,000. Esto significa que hay una variabilidad moderada en los ingresos.
Hay algunos valores atípicos o extremos por encima de 18,000, este nos muestra la cantidad de personas que ganan más del promedio.
moda_ca<-mfv(muestra$Income)
media_ca<-mean(muestra$Income)
mediana_ca<-median(muestra$Income)
ggplot(muestra, aes(x = Income)) +
geom_histogram(aes(y = after_stat(density)),
fill = "lightyellow", alpha = 0.5, colour = 4, bins = 20) +
geom_density(aes(colour = "densidad"),
fill = "#8D99AE", alpha = 0.5,lwd = 0.1, linetype = 2) +
geom_vline(aes(xintercept =moda_ca, color="moda"),
lty="dashed",
lwd = 2)+
geom_vline(aes(xintercept =media_ca, color="media"),
lty="dashed",
lwd = 2) +
geom_vline(aes(xintercept =mediana_ca, color="mediana"),
lty="dashed",
lwd = 2)+
scale_color_manual(name = "Estadisticas", values = c("moda" = "red", "media" = "#2B2D42", "mediana" = "white", "densidad"="black"))+
theme_bw() +
theme(panel.background = element_rect(fill = "#EDF2F4"),
plot.background = element_rect(fill="white"))Incomedat <- data.frame(
Tendencia_Central = c("Media", "Mediana", "Moda"),
value = c(mean(muestra$Income), median(muestra$Income), mfv(muestra$Income))
)
q1 <- quantile(muestra$Income, 0.05)
q3 <- quantile(muestra$Income, 0.95)
Income_hist <- ggplot(muestra, aes(x = Income)) +
geom_histogram(aes(y = after_stat(density)), bins = 30, color = "black", fill = paletteer::paletteer_c("ggthemes::Gray", 30)) +
geom_density(lwd = 1, linetype = 2, color = "slateblue4", fill = "slateblue2", alpha = 0.25) +
labs(title = "Histograma Income", x = "Income", y = 'Frecuencia') +
geom_vline(data = Incomedat, aes(xintercept = value, linetype = Tendencia_Central, col = Tendencia_Central), linewidth = 1) +
theme_grey()
x <- seq(min(muestra$Income), max(muestra$Income), length.out = 100)
y <- dnorm(x, mean = mean(muestra$Income), sd = sd(muestra$Income))
Income_hist <- Income_hist +
geom_ribbon(data = data.frame(x, y), aes(x = x, ymin = 0, ymax = y), fill = "gray", alpha = 0.2) +
geom_ribbon(data = subset(data.frame(x, y), x <= q1),
aes(x = x, ymin = 0, ymax = y), fill = "lightblue", alpha = 0.65) +
geom_ribbon(data = subset(data.frame(x, y), x >= q3),
aes(x = x, ymin = 0, ymax = y), fill = "lightblue", alpha = 0.65)
print(Income_hist)Para la variable “Income”, que representa el ingreso de los individuos de la muestra seleccionada, se tiene que en promedio, ganan 13050.8 unidades monetarias al mes, la mediana del ingreso se encuentra en 12024, y la moda es de 12832, un valor relativamente cercano a la media.
## la curtosis de la variable income es de 2.703991
Para la medida de curtosis de este histograma se tiene que es de 2.7, lo que informa que la distribución es platicúrtica, es decir, los ingresos se concentran poco alrededor de 13050.8, lo que genera colas achatadas y un pico suave en la distribución. Sin embargo, cabe resaltar que el valor es cercano a 3, el de una distribución normal.
## la asimetria es de 0.002202612
Por otro lado, se tiene la prueba de asimetría, en la que se obtiene un valor de 0.002, lo que informa que la cola se encuentra parcialmente en el lado derecho, pues el valor es sumamente cercano a 0, que indica una simetría perfecta en la distribución.
Esta información, complementada con el análisis de otras variables, como “purchase” permiten hacer un estudio preciso de marketing en esta muestra.
Para la variable “Purchase”, que muestra el valor de la compra de los distintos productos que están en cada se tendrá el análisis en dos instancias; una muestral, y una poblacional.
En resumen, la media poblacional se refiere al promedio de toda una población, mientras que la media muestral se refiere al promedio de una muestra extraída de esa población. Mas adelante profundizaremos mas en estos terminos.
La media poblacional, también conocida como media o promedio poblacional, se refiere a la medida central de toda una población. Se calcula sumando todos los valores en la población y dividiendo el resultado por el tamaño total de la población. Se denota comúnmente por el símbolo griego μ (mu).
\[ μ = \frac{Σx_i}{N} \] Donde:
μ = Es la media poblacional
x = Valores en la poblacion
N = Tamaño de la poblacion
Ahora calularemos esta con la funcion de Rstudio mean
## La media poblacional es 9508.259
La media muestral, por otro lado, se refiere a la medida central de una muestra extraída de una población. Se calcula sumando todos los valores en la muestra y dividiendo el resultado por el tamaño de la muestra menos uno (n-1), si se está utilizando la desviación estándar muestral. Se denota comúnmente por el símbolo X_barra
\[ \bar{x} = \frac{Σx_i}{n} \]
Donde
x_barra = Media Muestral
x = Valores en la poblacion
n = Tamaño de la muestra
Ahora calularemos esta con la funcion de Rstudio mean
## La media muestral es 9943.475
La desviación estándar es una medida estadística que indica cuánto se alejan, en promedio, los valores de un conjunto de datos respecto a la media. En otras palabras, la desviación estándar proporciona una medida de la dispersión o variabilidad de un conjunto de datos.
La desviación estándar poblacional, representada comúnmente por σ, es una medida estadística que cuantifica la dispersión o variabilidad de un conjunto de datos que representa a toda una población. Esta medida es una forma de entender cuánto se alejan, en promedio, los valores individuales de la media poblacional.
\[ \sigma =\sqrt{\frac{\sum(x_i-\mu )^2}{n}} \]
A continuacion calcularemos la desviacion estandar
Sigma <- function(x) {
n <- length(x)
desvi <- sqrt(sum((x-mean(x))^2) / n)
return(desvi)
}
sigma.pob <- round(Sigma(Blackfriday$Purchase),3)
cat("La desviacion estandar poblacional es", sigma.pob) ## La desviacion estandar poblacional es 5001.604
La desviación estándar muestral, representada comúnmente por S, es una medida estadística que cuantifica la dispersión o variabilidad de un conjunto de datos en una muestra específica. Es una versión ajustada de la desviación estándar de una población, y se utiliza cuando se trabaja con datos muestrales en lugar de datos de toda la población.
\[ S=\sqrt{\frac{\sum(x_i-\bar{x})^2}{n-1}} \]
A continuacion calcularemos la desviacion estandar con la funcion de Rstudio sd
de.m <- round(sd(muestra$Purchase, na.rm = FALSE),3)
cat("La desviacion estandar muestral es", de.m)## La desviacion estandar muestral es 5333.846
Muestral: Para esta instancia, se trabajará con la misma muestra de antes. Primero, se tiene que la media de compra de los individuos es de 9943.4 unidades monetarias. La desviación estándar es de 5333.8 unidades monetarias respecto a la media.
Poblacional: Ahora, se tiene que la media de compra de los individuos de toda la población (total de los datos), es de 9508.259 unidades monetarias. La desviación estándar es de 5001.604 unidades monetarias respecto a la media.
c.p = pnorm(med.m, mean = med.p, sd = sigma.pob / sqrt(120), lower.tail = FALSE)
cat("la probabilidad de que la variable media muestral sea mayor o igual que el valor de la
poblacional es de", c.p)## la probabilidad de que la variable media muestral sea mayor o igual que el valor de la
## poblacional es de 0.1702432
La distribución normal tiene las siguientes características clave:
Simetría: Es simétrica alrededor de la media, lo que significa que las colas izquierda y derecha de la distribución son idénticas.
Unimodal: Tiene un solo pico en la media.
Forma de Campana: La función de densidad de probabilidad forma una curva en forma de campana.
Regla Empírica: Aproximadamente el 68% de los datos caen dentro de una desviación estándar de la media, el 95% dentro de dos desviaciones estándar y el 99.7% dentro de tres desviaciones estándar.
En este trabajo es importante que la variable Purchase se distribuya de manera normal ya que mas adelante realizaremos distintos procesos en los cuales es importante que tenga la variable esta distribución.
Para esta parte del trabajo donde comprobaremos que la distribucion de los datos se distribuyen de forma normal haremos distintas pruebas las cuales nos afirmen o rechacen
qqPlot(muestra$Purchase, pch=20,
main='QQplot para purchase',
xlab='Cuantiles teoricos',
ylab='Cuantiles muestrales')## [1] 94 51
Este gráfico cuantil-cuantil nos permite ver si este conjunto de datos viene de una distribución normal. Se puede apreciar que la mayoría de datos caen en la línea de tendencia, los únicos datos que tienen una mayor distancia respecto a esta son las colas; en un primer escenario, los datos que se encuentran a la izquierda del punto (-1.5 , 2500); y en un segundo escenario, las que se encuentran a la derecha del punto (1.5 , 17500). Entonces, se puede afirmar que los datos parecen estar distribuidos normalmente
hist(muestra$Purchase,
main = "HISTOGRAMA CON CURVA NORMAL",
xlab = "muestra_purchase" ,
ylab = "frecuencia",
col = "#EF233C")x2 <- seq(min(muestra$Purchase), max(muestra$Purchase), length = 15)
fun <- dnorm(x2, mean = mean(muestra$Purchase), sd = sd(muestra$Purchase))
hist(muestra$Purchase, prob = TRUE,
ylim = c(0, max(fun)),
main = "HISTOGRAMA CON CURVA NORMAL",
xlab = "muestra_purchase" ,
ylab = "densidad",
col = "#2B2D42")
lines(x2, fun, col = 2, lwd = 2)A primera vista, el histograma parece tener una forma acampanada, la media muestral se encuentra muy cerca de la mediana del histograma (9943.4 y 10178, respectivamente), por otro lado la moda es de 4798. Las relaciones entre estos datos y la forma dan un símil a la distribución normal, sin embargo, para confirmar este supuesto será necesario realizar las pruebas pertinentes que se harán a continuación
La prueba de normalidad de Lilliefors, Kolmogorov-Smirnov, (lillie.test) es una prueba estadística utilizada para evaluar si una muestra de datos sigue una distribución normal. Es una variante de la prueba de Kolmogorov-Smirnov (KS) diseñada para muestras pequeñas.
La prueba de Lilliefors es una prueba de bondad de ajuste que compara la distribución acumulativa empírica (ECDF) de los datos observados con la distribución acumulativa teórica de una distribución normal. La hipótesis nula (H0) es que los datos provienen de una población con una distribución normal.
\[ D_n = max[\frac{i}{n}-F(X_i)] + [F(X_i)-\frac{i-1}{n}]) \]
Ahora realizaremos esta prueba con la funcion lillie.test
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: muestra$Purchase
## D = 0.046371, p-value = 0.761
En el resultado de la prueba de Lilliefors, los valores de nuestra muestra
Estadístico D: En este caso, es 0.046371. Este valor representa la máxima diferencia absoluta entre la función de distribución empírica acumulativa de los datos y la función de distribución acumulativa de una distribución normal. Cuanto más pequeño sea este valor, más cerca estarán los datos de una distribución normal.
p-value (valor p): Es 0.761. Este valor es la probabilidad de obtener un estadístico D tan extremo como el observado, bajo la hipótesis nula de que los datos provienen de una distribución normal. Un valor p grande (mayor a 0.05 comúnmente) sugiere que no hay suficiente evidencia para rechazar la hipótesis nula de normalidad.
La prueba de normalidad de Anderson-Darling (ad.test) es una prueba estadística utilizada para evaluar si una muestra de datos sigue una distribución normal. La prueba da más peso a las colas de la distribución, lo que la hace más sensible a las desviaciones en esas áreas.
La hipótesis nula (H0) en la prueba de normalidad de Anderson-Darling es que los datos provienen de una población con una distribución normal. Por lo tanto, si el valor p resultante es menor que el nivel de significancia predefinido (por ejemplo, 0.05), se rechaza la hipótesis nula, lo que sugiere que los datos no siguen una distribución normal.
\[ A^2 = -n-\frac{1}{n}\sum [(2i-1)(ln(F(X_i))+Ln(1-F(X_1)))] \]
Ahora realizaremos esta prueba con la funcion ad.test
##
## Anderson-Darling normality test
##
## data: muestra$Purchase
## A = 0.20619, p-value = 0.8671
En el resultado de la prueba de Anderson-Darling, los valores de nuestra muestra
Estadístico A (Anderson-Darling): En este caso, es 0.20619. Este valor cuantifica la distancia entre la distribución de los datos y la distribución normal. Cuanto más pequeño sea este valor, más cerca estarán los datos de una distribución normal.
p-value (valor p): Es 0.8671. Este valor es la probabilidad de obtener un estadístico A tan extremo como el observado, bajo la hipótesis nula de que los datos provienen de una distribución normal. Un valor p grande (mayor a 0.05 comúnmente) sugiere que no hay suficiente evidencia para rechazar la hipótesis nula de normalidad.
La prueba de normalidad de Shapiro-Francia es una prueba estadística que se utiliza para evaluar si una población sigue una distribución normal, basándose en los datos de una muestra. Fue introducida como una simplificación de la prueba de Shapiro-Wilk. Esta prueba compara la correlación entre los datos y los valores normales esperados de los datos. Si el coeficiente de correlación es cercano a 1, la población es probablemente normal. Esta prueba es adecuada para muestras pequeñas, que tienen entre 5 y 5000 observaciones.
\[ W=\frac{(\sum x_iu_i)^2}{\sum (x_i-\bar{x})^2} \]
##
## Shapiro-Francia normality test
##
## data: muestra$Purchase
## W = 0.99418, p-value = 0.8342
En el resultado de la prueba Shapiro-Francia, los valores de nuestra muestra:
-Valor del estadístico de Shapiro-Francia (W): El valor es 0.99418, lo que indica que los datos se ajustan bastante bien a una línea recta y se acercan a 1, mostrando así normalidad.
-p-value: es 0.8342, este valor mide la probabilidad de tener un valor de W = o < al observado, lo que indica que no hay suficiente evidencia para rechazar la hipótesis nula de normalidad.
Dados los datos observados y el análisis de cada una de las pruebas de normalidad, podemos concluir que nuestra variable purchase es normal, esto se confirma a través del qqplot, el histograma y la densidad.
## La curtosis es de 2.722436
Para la muestra, se tiene que la curtosis es de 2.722436, lo que indica que es de tipo platicúrtica, de manera estricta. Sin embargo, al ser un número tan cercano al 3, se puede asemejar a la curtosis de una distribución normal, cuyo valor es el anterior mencionado.
## el sesgo es de -0.1422219
Ahora, para comprobar la simetría de la distribución de los datos de “Purchase”, se tiene que el sesgo es negativo, de manera estricta, más concretamente, tiene un valor de -0.14, es decir que de manera muy ligera, tiene la cola izquierda más larga. De igual manera, se tiene que el sesgo es muy cercano a 0, como el de una distribución normal, por lo que se puede concluir que los datos parecen estar distribuidos de manera normal
if (sesgo_resultado > 0) {
cat("La distribución tiene sesgo positivo (cola derecha más larga)\n")
} else if (sesgo_resultado < 0) {
cat("La distribución tiene sesgo negativo (cola izquierda más larga)\n")
} else {
cat("La distribución es aproximadamente simétrica\n")
}## La distribución tiene sesgo negativo (cola izquierda más larga)
Estos resultados pueden ser observados y analizados de mejor manera en nuestro histograma y curva de densidad.
Cuartil con respecto al 25%
datos <- data.frame(muestra)
minimo.precio <- min(muestra$Purchase)
maximo.precio <- max(muestra$Purchase)
mediana.precio <- median(muestra$Purchase)
Q1.Purchase <- quantile(muestra$Purchase, c(0.25), type = 6)
data.frame(Q1.Purchase)Cuartil con respecto al 50%
datos <- data.frame(muestra)
minimo.precio <- min(muestra$Purchase)
maximo.precio <- max(muestra$Purchase)
mediana.precio <- median(muestra$Purchase)
Q2.Purchase <- quantile(muestra$Purchase, c(0.50), type = 6)
data.frame(Q2.Purchase)Cuartil con respecto al 75%
datos <- data.frame(muestra)
minimo.precio <- min(muestra$Purchase)
maximo.precio <- max(muestra$Purchase)
mediana.precio <- median(muestra$Purchase)
Q3.Purchase <- quantile(muestra$Purchase, c(0.75), type = 6)
data.frame(Q3.Purchase)En el siguiente histograma se evidencia el análisis de nuestra variable purchase dentro de la muestra. Los valores están representados por la cantidad de ingresos y el número de personas. Dentro de este mismo histograma se evidencian 3 cuartiles de la siguiente manera:
Cuartil 1: 25%
Cuartil 2: 50%
Cuartil 3: 75%
Los datos adicionales serán mencionados más adelante.
datos.Purchase <- data.frame(muestra$Purchase)
ggplot(data = muestra, aes(x=muestra$Purchase)) +
geom_histogram(bins = 30, fill = "#2B2D42", color = "white") +
geom_vline(aes(xintercept = Q1.Purchase,
color = "Q1"),
linetype = "dashed",
linewidth = 1) +
geom_vline(aes(xintercept = Q2.Purchase,
color = "Q2"),
linetype = "dashed",
linewidth = 2) +
geom_vline(aes(xintercept = Q3.Purchase,
color = "Q3"),
linetype = "dashed",
linewidth = 1.5) +
labs(title = "HISTOGRAMA DE PURCHASE",subtitle = paste("Cuartil 1 al 25% = ",Q1.Purchase, ", Cuartil 2 al 50% = ",Q2.Purchase, ", Cuartil 3 al 75% = ",Q3.Purchase))+
scale_color_manual(name = "Estadisticas", values = c("Q1" = "black", "Q2" = "white", "Q3" = "red", "densidad"="palegreen4"))+
theme_bw() +
theme(panel.background = element_rect(fill = "#EDF2F4"),
plot.background = element_rect(fill="white"))Purchase_dat <- data.frame(
Tendencia_Central = c("Media", "Mediana", "Moda"),
value = c(mean(muestra$Purchase), median(muestra$Purchase), mfv(muestra$Purchase))
)
q1_purchase <- quantile(muestra$Purchase, 0.05)
q3_purchase <- quantile(muestra$Purchase, 0.95)
Purchase_hist <- ggplot(muestra, aes(x = Purchase)) +
geom_histogram(aes(y = after_stat(density)), bins = 30, color = "black", fill = paletteer::paletteer_c("ggthemes::Gray", 30)) +
geom_density(lwd = 1, linetype = 2, color = "slateblue4", fill = "slateblue2", alpha = 0.25) +
labs(title = "Histograma Purchase", x = "Purchase", y = 'Frecuencia') +
geom_vline(data = Purchase_dat, aes(xintercept = value, linetype = Tendencia_Central, col = Tendencia_Central), linewidth = 1) +
theme_grey()
x_purchase <- seq(min(muestra$Purchase), max(muestra$Purchase), length.out = 100)
y_purchase <- dnorm(x_purchase, mean = mean(muestra$Purchase), sd = sd(muestra$Purchase))
Purchase_hist <- Purchase_hist +
geom_ribbon(data = data.frame(x_purchase, y_purchase), aes(x = x_purchase, ymin = 0, ymax = y_purchase), fill = "gray", alpha = 0.2) +
geom_ribbon(data = subset(data.frame(x_purchase, y_purchase), x_purchase <= q1_purchase),
aes(x = x_purchase, ymin = 0, ymax = y_purchase), fill = "lightblue", alpha = 0.65) +
geom_ribbon(data = subset(data.frame(x_purchase, y_purchase), x_purchase >= q3_purchase),
aes(x = x_purchase, ymin = 0, ymax = y_purchase), fill = "lightblue", alpha = 0.65)
print(Purchase_hist)Dentro de nuestro análisis tenemos que:
El histograma tiene una forma aproximadamente normal, lo que significa que los datos están distribuidos de manera simétrica alrededor de la media.
El histograma tiene una dispersión moderada, lo que significa que los datos no varían mucho de la media. La dispersión se mide por el rango intercuartílico (IQR), que es la diferencia entre el cuartil 3 (Q3) y el cuartil 1 (Q1). El IQR indica la amplitud del 50% central de los datos. En este caso, el IQR es de aproximadamente 13,500-6,000 = 7500.
Un intervalo de confianza describe la variabilidad entre la medida obtenida en un estudio y la medida real de la población (el valor real). Corresponde a un rango de valores, cuya distribución es normal y en el cual se encuentra, con alta probabilidad, el valor real de una determinada variable. Esta «alta probabilidad» se ha establecido por consenso en 95%. Así, un intervalo de confianza de 95% nos indica que dentro del rango dado se encuentra el valor real de un parámetro con 95% de certeza.
Algunos intervalos que se pueden construir son los siguientes:
Para calcular este primer intervalo de confianza, usaremos la función t.test
El t.test se usa para calcular intervalos de confianza para la media y diferencia de medias, con muestras independientes y dependientes (o pareadas).
Para este caso usaremos la siguiente fórmula:
\[ t = \frac{\bar{x}-\mu_0}{\frac{s}{\sqrt{n}}} \]
res <- t.test(x=muestra$Purchase, conf.level=0.90)$conf.int
cat("Con una confianza del 90% se estima que el promedio de la variable purchase está entre:",res)## Con una confianza del 90% se estima que el promedio de la variable purchase está entre: 9136.293 10750.66
Ahora comprobaremos si la media poblacional está dentro de el intervalo que construimos.
Tenemos una media poblacional de 9508,259
Un intervalo que va de 9136,239 hasta 10750,657.
A simple vista podemos concluir que SI se encuentra dentro del intervalo, sin embargo utilizaremos el siguiente código para comprobarlo:
# Comprueba si la media poblacional está dentro del intervalo
if (med.p < res[1] | med.p > res[2]) {
cat("La media poblacional está fuera del intervalo de confianza.")
} else {
cat("La media poblacional está dentro del intervalo de confianza.")
}## La media poblacional está dentro del intervalo de confianza.
Para construir nuestro intervalo, usaremos la función prop.test
La función prop.test nos permite comparar las proporciones bajo los supuestos que hayamos realizado en el caso de que los tamaños de los grupos sean iguales. La función, además, nos permite calcular el intervalo de confianza, introduciendo como vectores el número de eventos verdaderos y los tamaños muestrales n1 y n2.
Esta función calcula la estadística de prueba z y el valor p asociado automáticamente. Además, también puede calcular intervalos de confianza para la proporción.
datos.filtrados = muestra$Purchase[muestra$Purchase > 5000]
exitos <- length(datos.filtrados)
tamano_muestra <- nrow(muestra)
res1 <- prop.test(x = exitos, n = tamano_muestra, conf.level=0.95)$conf.int
cat("Con un nivel de confianza del 95%, se puede afirmar que la verdadera proporción de ventas superiores a US$5,000 está en algún lugar entre",res1)## Con un nivel de confianza del 95%, se puede afirmar que la verdadera proporción de ventas superiores a US$5,000 está en algún lugar entre 0.7150727 0.8652583
Ahora, calcularemos nuestra proporción poblacional: Utilizaremos la proporción muestral como una estimación puntual de la proporción en la población
## [1] 0.8
Obtuvimos un intervalo de confianza de 0.7150727, 0.8652583 y nuestra proporción poblacional es de 0.8 lo que nos muestra que se encuentra dentro de ese intervalo. A continuación utilizaremos un código para comprobarlo.
# Comprueba si la proporción poblacional está dentro del intervalo
if (p.mue < res1[1] | p.mue > res1[2]) {
cat("La proporción poblacional está fuera del intervalo de confianza.")
} else {
cat("La proporción poblacional está dentro del intervalo de confianza.")
}## La proporción poblacional está dentro del intervalo de confianza.
Para construir nuestro intervalo de confianza utilizaremos la función t.test explicada anteriormente. Y para ello se definirán los siguientes argumentos:
Vector numérico de la muestra 1 (Compras hechas por hombres)
Vector numérico de la muestra 2 (compras hechas por mujeres)
Nivel de confianza (90%)
hombres <- muestra[muestra$Gender=="M", ]
mujeres <- muestra[muestra$Gender=="F", ]
res2 <- t.test(x=hombres$Purchase, y=mujeres$Purchase,
paired=FALSE, var.equal=TRUE, conf.level = 0.90)$conf.int
cat("Con una certeza del 90% se puede afirmar que la diferencia de medias de las compras en nuestras variables se encuentra entre",res2)## Con una certeza del 90% se puede afirmar que la diferencia de medias de las compras en nuestras variables se encuentra entre -3303.085 415.1075
Para hallar este intervalo utilizaremos la función var.test de paquete stests para nuestra población (mujeres)
Este test se puede usar para construir un intervalo de confianza para la varianza de una población.
Asumimos un intervalo de confianza del 95%
res3 <- stests::var.test(x=mujeres$Purchase, conf.level=0.95)$conf.int
cat("Con una certeza del 95% podemos afirmar que la varianza de las compras de las mujeres se encuentra entre",res3)## Con una certeza del 95% podemos afirmar que la varianza de las compras de las mujeres se encuentra entre 21610719 61574566
Una prueba de hipótesis es un procedimiento estadístico que se utiliza para tomar decisiones sobre afirmaciones o hipótesis acerca de características de una población.
El proceso general de una prueba de hipótesis implica los siguientes pasos:
Formulación de hipótesis:
Hipótesis nula (H0): Es la afirmación que se está probando.
Hipótesis alternativa (H1 o Ha): Es la afirmación opuesta a la hipótesis nula.
Especificación de un nivel de significancia (α): Comúnmente se utiliza un nivel del 5% (0.05).
Recopilación de datos
Análisis de datos
Toma de decisión: Se toma una decisión basada en la evidencia. Se puede rechazar o no la hipótesis nula.
Para esta primera prueba de hipótesis utilizaremos los datos allí descritos y la fórmula para obtener el valor del estadístico.
En esta prueba tenemos
La hipótesis alternativa H1: μ es > que el valor real encontrado en la población.
La hipótesis nula H0: μ es = al valor real de la población.
xbarra <- med.m # Datos del problema
desvia <- de.m # Datos del problema
mu <- med.p # Media de referencia
est <- (xbarra - mu) / (desvia / sqrt(120))
est # Para obtener el valor del estadístico## [1] 0.8938302
Después de haber obtenido nuestro estadístico, pasaremos a calcular el valor de p-value con la función p.norm.
## el valor p-value es 0.8142936
Después de realizar estos cálculos, obtuvimos un valor de p-value del 0.8142936 el cual es mucho mayor que nuestro nivel de significancia (0.05) lo que nos indica que no hay suficiente evidencia para rechazar la hipótesis nula y por ello concluimos que μ es = al valor real de la población.
Para esta prueba de hipótesis, vamos a hallar los valores para nuestras variables de 1. Compra de hombres, 2. Compra de mujeres. Después de esto utilizaremos la función t.test descrita en puntos anteriores para calcular los resultados de nuestra prueba.
En esta prueba tenemos
Hipótesis nula H0: Compra promedio de hombres = compra promedio de mujeres.
Hipótesis alternativa H1: Compra promedio de hombres es diferente ≠ a la compra promedio de mujeres.
compras_hombres <- muestra$Purchase[muestra$Gender == "M"]
compras_mujeres <- muestra$Purchase[muestra$Gender == "F"]
resultado_prueba <- t.test(compras_hombres, compras_mujeres)
resultado_prueba##
## Welch Two Sample t-test
##
## data: compras_hombres and compras_mujeres
## t = -1.2079, df = 44.944, p-value = 0.2334
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -3851.9040 963.9263
## sample estimates:
## mean of x mean of y
## 9582.478 11026.467
Después de realizar nuestra prueba de hipótesis y analizar cada uno de nuestros resultados, obtuvimos un valor de p-value del 0.2334 que aunque es bajo, supera nuestro nivel de significancia del 0.05, por lo tanto debemos aceptar nuestra hipótesis nula y concluir que la compra promedio de los hombres es = a la compra promedio de las mujeres.
Primero observaremos si las muestras provienen de una poblacion normal.
q1 <- qqnorm(hombres$Purchase, plot.it=FALSE)
q2 <- qqnorm(mujeres$Purchase, plot.it=FALSE)
plot(range(q1$x, q2$x), range(q1$y, q2$y), type="n", las=1,
xlab='Theoretical Quantiles', ylab='Sample Quantiles')
points(q1, pch=19)
points(q2, col="red", pch=19)
qqline(hombres$Purchase, lty='dashed')
qqline(mujeres$Purchase, col="red", lty="dashed")
legend('topleft', legend=c('q1', 'q2'), bty='n',
col=c('#2B2D42', 'red'), pch=19)En nuestro qqplot podemos observar que los puntos están bastante alineados los cual nos lleva a pensar que las muestra provienen de una población normal.
Para comprobarlo haremos una prueba de normalidad adicional para cada una de nuestras variables:
## [1] 0.7687239
## [1] 0.6785446
Cómo se observa, dados los resultados, podemos asumir que nuestras poblaciones son normales.
Para construir el intervalo de confianza del cociente de las varianzas utilizaremos la función var.test que fue descrita anteriormente, pero en esta ocasión será del paquete stats para 2 poblaciones.
stats::var.test(x=hombres$Purchase, y=mujeres$Purchase, null.value=1,
alternative="two.sided",
conf.level=0.05)##
## F test to compare two variances
##
## data: hombres$Purchase and mujeres$Purchase
## F = 0.77513, num df = 89, denom df = 29, p-value = 0.3643
## alternative hypothesis: true ratio of variances is not equal to 1
## 5 percent confidence interval:
## 0.7486408 0.7778004
## sample estimates:
## ratio of variances
## 0.7751349
Como el valor-P es de 0.3643 y este es superior al nivel de significancia establecido de α = 5 %, se puede concluir que las varianzas entre las compras de hombres y mujeres son similares
Para esta prueba tenemos los siguientes supuestos:
Hipótesis Nula: H0 = Las varianzas son iguales
Hipótesis Alternativa: H1 = Las varianzas son distintas ≠
La calcularemos utilizando la función var.test:
##
## F test to compare two variances
##
## data: compras_hombres and compras_mujeres
## F = 0.77513, num df = 89, denom df = 29, p-value = 0.3643
## alternative hypothesis: true ratio of variances is not equal to 1
## 5 percent confidence interval:
## 0.7486408 0.7778004
## sample estimates:
## ratio of variances
## 0.7751349
Tenemos un valor p-value = 0.3643 el cuál es mayor a nuestro nivel de significancia del 0.05, esto nos indica que no hay suficiente evidencia para rechazar nuestra hipótesis nula.
Siendo este un análisis estadístico frente a las compras del Black Friday, se tiene que para los individuos que pertenecen a esta base de datos, se presentan las características de: género, edad, ocupación, ciudad, permanencia en la ciudad, estado civil, categoría del producto comprado, ingresos y cantidad gastada.
Para este trabajo, se empleó, principalmente, una muestra de la base de datos, donde las variables estudiadas de manera primordial fueron las de ingresos, cantidad gastada y género de los individuos. Primero, se tiene que en promedio, los individuos, independientemente de su género tienen ingresos por 13050 dólares. Por otro lado, en el Black Friday gastan en promedio 9943.4 dólares. Estos datos informan que se destina en promedio un 76.19% del ingreso a las compras en este día.
Por otro lado, un análisis importante es la discriminación de los géneros en el Black Friday frente a sus ingresos y la compra, pues esto permite hacer análisis y toma de decisiones de mercadeo por parte de los productores. Se tiene que en la muestra hay una mayor cantidad de individuos de género masculino que de femenino (90 y 30 respectivamente), es por ello que se busca establecer si hay diferencia en la media y varianza en las compras entre ambos géneros.
Para esto, se realizaron pruebas de hipótesis las cuales están sustentadas en el supuesto de la normalidad de los datos de la muestra. Para esto, se realizaron distintas pruebas, tales como: la función cuantil-cuantil (qq_plot), análisis del histograma de la variable purchase e Income, la prueba Lilliefors, Anderson Darling y Shapiro-Francia.
Se encontró que:
La media del total de los datos es igual al valor real de la población, lo que asegura que las decisiones que se tomen sobre los datos de este caso, tengan efectos similares en la población. En promedio, las compras de los individuos de género masculino y femenino son iguales La varianza es la misma para el género masculino que al femenino.
Con base en esto, se puede concluir que al momento de hacer publicidad o mercadeo independientemente del tipo de los productos ofrecidos y demás variables de la base de datos, el género no es una variable que genere algún tipo de diferencia frente a la compra de los productos o el gasto que cada género le destina a este día. Es pertinente hacer este mismo estudio con otras variables, tales como la categoría del producto, la edad, o incluso el estado civil de los individuos para poder llegar a tomar decisiones orientadas a aumentar el beneficio o las ganancias para los productores en este día de ofertas.
Hernández, F., & Usuga, O. (2023). Manual de R. Retrieved from https://fhernanb.github.io/Manual-de-R/normal.html
Candia B, R., & Caiozzi A., G. (n.d.). Intervalos de Confianza. Retrieved from https://www.scielo.cl/scielo.php?script=sci_arttext&pid=S0034-98872005000900017
Melchor J, Expósito M & Femia P. Test de comparación de dos proporciones en R. Retrieved from https://digibug.ugr.es/bitstream/handle/10481/71607/Pr%C3%A1ctica8_Bioestad%C3%ADsticaR.pdf?sequence=1#