library(readxl)
Blackfriday <- read_excel("C:/Users/vale1/Downloads/Blackfriday.xlsx")
View(Blackfriday)
library(ggplot2)
library(fBasics)
library(moments)
## 
## Attaching package: 'moments'
## The following objects are masked from 'package:fBasics':
## 
##     kurtosis, skewness
library(nortest)
library(plotrix)
library(descriptr)
library(stats)
library(devtools)
## Warning: package 'devtools' was built under R version 4.3.2
## Loading required package: usethis
## Warning: package 'usethis' was built under R version 4.3.2
library(stats)
require(stests)
## Loading required package: stests
## 
## Attaching package: 'stests'
## The following object is masked from 'package:stats':
## 
##     var.test

INTRODUCCIÓN

En este documento se desarrollará un análisis descriptivo y de probabilidades de ciertas variables estudiadas en el evento del Blackfriday, donde se clasificará y examinará la información tomada de una muestra de 120 compradores, analizando variables como sus ingresos, la ciudad donde viven, su sexo, entre otras. La muestra será extraida de la base de datos Blackfriday, dada previamente por el docente, usando una semilla compuesta por los últimos dígitos de los documentos de identidad de los integrantes del grupo.

MARCO TEÓRICO

*Análisis descriptivo: Hace referencia a la clasificación, tabulación, ordenamiento y visualización de los datos de una muestra. Las variables estudiadas se pueden dividir en cualitativas y cuantitativas

*Media muestral: Es una medida que representa el promedio de un conjunto de datos de una muestra. Se denota comúnmente como xbarra.

*Media poblacional: Es conocida como la “media”, es un parámetro que describe el centro de una distribución en una población y se denota comúnmente por el símbolo griego μ (mu).

*Desviación estandar: Es una medida de dispersión que indica cuánto se alejan, en promedio, los valores individuales de una distribución con respecto a la media.

*Sesgo: Hace referencia a la tendencia sistemática de un estimador de alejarse del valor real del parámetro que está estimando.

*Curtosis: Es una medida que describe la forma de la distribución de un conjunto de datos. Indica qué tan “picuda” o “aplanada” es la distribución en comparación con una distribución normal.

*Intervalo de confianza: Es un rango de valores que utilizado para estimar el parámetro desconocido de una población, con un cierto nivel de confianza. Es una herramienta que proporciona un margen de error alrededor de un estimador puntual y refleja la incertidumbre de la estimación.

*Prueba de hipótesis: Es una metodología utilizada en estadística que permite evaluar y tomar decisiones sobre la validez de ciertas afirmaciones sobre parámetros poblacionales

*Distribución normal: Es una distribución continua y simétrica que se caracteriza por su forma de campana.

*Estadistico ‘t’: Se asocia con la distribución t de Student y se utiliza en pruebas de hipótesis y estimaciones cuando se trabaja con muestras pequeñas y la desviación estándar de la población es desconocida.

ACTIVIDAD UNO

a) Muestra aleatoria

Semilla:

Se planto una semilla con el ultimo dígito del documento de identidad de cada uno de los integrantes

set.seed(82158) 

Tabla muestra2:

Se utiliza como base de datos: Blackfriday con una muestra de ciento veinte datos elegidos a partir de la semilla plantada

datos.bf <- data.frame(Blackfriday)
muestra2 <- datos.bf[sample(nrow(datos.bf),size=120),0:13]

View(Blackfriday)
View(muestra2)
attach(muestra2)

b) Análisis descriptivo

Variable gender:

Condición que define el sexo del comprador dentro de la base de datos.

Tabla de frecuencia:

frec_gender <- table(muestra2$Gender)
frec_gender
## 
##  F  M 
## 30 90

Esta tabla nos permite observar qué la cantidad de compradores en la base de datos del Blackfriday estan clasificados por distintas variables como su sexo; en este caso variando entre el sexo ‘Femenino’ o el sexo ‘Masculino’. De esta manera sabemos que para el grupo del sexo ‘Masculino’ existen 70 personas en dicha condición, mientras que para el sexo ‘Femenino’ hay 30 personas. Ahora, como esta tabla indica la mayoria de las personas que compran en dicho evento pertenecen al sexo masculino.

Diagrama de torta Gender:

count2 <-c(" Femenino 30%","Masculino 70%") 
torta2 <- pie3D(frec_gender, labels= count2,radius = 1.8,
                explode=0.1, height=0.3,labelcex = 1.5,theta=pi/5,
                main="Diagrama de tarta frecuencia de variable Gender (Sexo del comprador)")

Variable City Category:

Muestra el lugar de residencia del comprador.

Tabla de frecuencia:

frec_city <- table(muestra2$City_Category)
frec_city
## 
##  A  B  C 
## 31 49 40

Esta tabla representa la cantidad de compradores que se encuentran en las posibles ciudades. En este caso 31 personas se encuentran en la ciudad ‘A’según la muestra. Consiguiente a esto, 49 compradores viven en la ciudad ’B’ y por ultimo40 personas se encuentran en la ciudad ‘C’. De esta manera se entiende que las personas que más compras realizarón en el Blackfriday estan en la ciudad ‘B’.

Diagrama de barras Ciudad de los compradores:

class(muestra2$City_Category);
## [1] "character"
levels(muestra2$City_Category);
## NULL
str(muestra2$City_Category);
##  chr [1:120] "B" "C" "A" "A" "A" "A" "A" "C" "A" "B" "C" "C" "C" "B" "B" ...
table(muestra2$City_Category);
## 
##  A  B  C 
## 31 49 40
tabla_city = table(muestra2$City_Category)

ggplot(data = data.frame(Categoria = names(tabla_city),
                         Frecuencia = as.numeric(tabla_city)),
       aes(x = Categoria, y = Frecuencia, fill = Categoria)) +
  geom_bar(stat = "identity", color = "black") +
  labs(title = "Lugar de residencia del comprador.",
       x = "Categoría",
       y = "Frecuencia") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 0.7, color = "black",
                                   size = 10),
        plot.title = element_text(hjust = 0.5))

Variable Income:

Explica el ingreso mensual de cada uno de los compradores.

media.Income<-mean(muestra2$Income)
media.Income
## [1] 12978.38

La media de los ingresos de los compradores es de 12978.38 dolares mensuales.

hist(muestra2$Income, main = "Histograma de variable Income", xlab = "Ingresos",
     ylab = "Frecuencia", col = "lightblue2", breaks =25, border = "black",
     cex.axis = 1.0, cex.main = 1.5,)

Esta tabla representa los ingresos de cada uno de los compradores del blackfriday. Mediante la media los de ingresos de los 120 compradores se puede observar que en promedio ellos tienen unos ingresos variables de 12978.38 dolares mensuales

c) Análisis variable Purchase

Desviación estandar muestral

sd(muestra2$Purchase, na.rm = FALSE)
## [1] 4492.97

Desviación estandar poblacional

Sigma <- function(x) {n <- length(datos.bf$Purchase)
  desvi <- sqrt(sum((x-mean(x))^2) / n)
  return(desvi)} 

Sigma(datos.bf$Purchase)
## [1] 5001.604

Media muestral

mean(muestra2$Purchase)
## [1] 9281.083

Media poblacional

mean(datos.bf$Purchase)
## [1] 9508.259

De estos datos se puede entender que el estimador de la media y desviacion muestral es la media o desviación estandar poblacional, ya que son aquellas que poseen valores mas altos y cuentan con todos los datos reales de la variable de los valores de la compra en dolares.

Probabilidad de que la variable media muestral sea mayor o igual que el valor de la poblacional.

des.m<-sd(muestra2$Purchase, na.rm = FALSE)
des.m
## [1] 4492.97
Sigma <- function(x) {n <- length(datos.bf$Purchase)
  desvi <- sqrt(sum((x-mean(x))^2) / n)
  return(desvi)} 

Sigma(datos.bf$Purchase)
## [1] 5001.604
mean1<-mean(muestra2$Purchase)
mean1
## [1] 9281.083
mean2<-mean(datos.bf$Purchase)

Se calcula el t-student para poder hallar la prbabilidad

El valor t-student es calculado mediante la fórmula “(xbarra.muestra-mu)/(s.muestra/sqrt(datos de la muestra))”

t<-((mean1- mean2)/(des.m/sqrt(120)))
t
## [1] -0.5538847

De esta manera finalmente podemos decir que la probabilidad de media muestral=> media poblacional es:

probabilidad <- pt(t, df = 119, lower.tail = TRUE)
probabilidad
## [1] 0.2903485

Se entiende entonces que existe una probabilidad del 29% aproximadamente de que la media muestral de los valores de las compras en dolares de los clientes sea igual a la media poblacional de las compras en toda la base de datos.

d) Histograma de la variable Purchase

Histograma de los valores de las compras en dolares de los clientes.

ggplot(data = muestra2 ,
       mapping =aes(x=muestra2$Purchase))+
  geom_histogram(bins = 15 , fill=  "pink" , col ="#080808") +
  labs(title = "Histograma de los datos de los valores de la compra en dolares ",
       x = "Valores", y = "N°Personas")+
  theme_minimal() +
  theme(axis.text.x = element_text( hjust = 0.7, color = "black",
                                    size = 10),
        plot.title = element_text(hjust = 0.5))

Curtosis

kurtosis(muestra2$Purchase)
## [1] 3.030957

La cantidad de valores atípicos en el Valor de la compra en dólares es: -0.01934832

Como la curtosis > 0 graficamente se puede interpretar que esta distribución apunta a una distribución normal.

ad.test(muestra2$Purchase)
## 
##  Anderson-Darling normality test
## 
## data:  muestra2$Purchase
## A = 0.35136, p-value = 0.464

Además del análisis realizado con la curtosis, el valor obtenido de p-value nos indica con gran seguridad que la variable Purchase se comporta con una distribución normal

Sesgo

skewness(muestra2$Purchase)
## [1] -0.08002451

El coeficiente de asimetría es: -0.07902629

La asimetría positiva indica que la media de los datos de los valores de la compra en dolares es mayor que la mediana, y la distribución de los datos es sesgada hacia la derecha.

ACTIVIDAD DOS

a) Intervalo de confianza al noventa por ciento para el promedio de la variable purchase.

purchase <-data.frame(table(muestra2$Purchase))
prom <- mean(muestra2$Purchase)
intervalo_promedio <- (t.test(muestra2$Purchase, conf.level = 0.90))
cat(intervalo_promedio$conf.int[1], "<",prom,"<", intervalo_promedio$conf.int[2],"\n")
## 8601.153 < 9281.083 < 9961.014

El intervalo de confianza al 90% para el promedio de la variable PURCHASE es: De 8601.153 a 9961.014. Lo que significa que se tiene un 90% de seguridad de que el promedio esta en el intervalo.

El promedio de la variable PURCHASE es: 9281.083. Asi que: 8601.153 < μ < 9961.014.

Ahora cambiando μ por el promedio de la variable PURCHASE se tiene el siguiente intervalo: 8601.153 < 9281.083 < 9961.014.

Lo anterior muestra que efectivamente el promedio esta en el intervalo realizado.

b) Intervalo de confianza al noventa y cinco por ciento para la proporción de ventas superiores a US$5.000

vent_5000 <- sum(muestra2$Purchase > 5000)
n <- nrow(muestra2)
proporcion_muestral <- vent_5000 / n
proporcion_muestral
## [1] 0.825
intervalo_proporcion <- binom.test(vent_5000, n, conf.level = 0.95)
cat(intervalo_proporcion$conf.int[1], "<",proporcion_muestral,"<", intervalo_proporcion$conf.int[2], "\n")
## 0.74502 < 0.825 < 0.8882857

Con el intervalo construido, se puede concluir que se tiene un 95% de seguridad de que la proporción de ventas superiores a US$5000 se encuentra en este intervalo: 0.74502 < p < 0.8882857.

La proporción de ventas superiores a US$5000 es: 0.825. Así que cambiando p por la proporción hallada en el intervalo se tiene: 0.74502 < 0.825 < 0.8882857.

Lo anterior muestra que efectivamente la proporción poblacional se encuentra en el intervalo realizado.

c) Intervalo de confianza al noventa por ciento para la diferencia de medias de las compras hechas por hombres y por mujeres

Compras por genero

compras_hombres <- muestra2$Purchase[muestra2$Gender == "M"]
compras_mujeres <- muestra2$Purchase[muestra2$Gender == "F"]
media_hombres <- mean(compras_hombres)
media_mujeres <- mean(compras_mujeres)
diferencia_medias <- round(media_hombres - media_mujeres,5)

Intervalo de confianza para la diferencia de medias de las compras entre hombres y mujeres

intervalo_diferencia_medias <- t.test(compras_hombres, compras_mujeres, conf.level = 0.90)
cat(intervalo_diferencia_medias$conf.int[1], "<",diferencia_medias,"<", intervalo_diferencia_medias$conf.int[2], "\n")
## -999.5406 < 689.7556 < 2379.052

La media de compras hechas por hombres es de: 9453.522 , la media de compras hechas por mujeres es: 8763.767 y la diferencia de sus medias es: 689.7556. El intervalo de confianza al 90% para la diferencia de medias de las compras entre hombres y mujeres es: -999.5406 < μh - μm < 2379.052.

El intervalo anterior representa que se esta un 90% seguro que la diferencia de medias se encuentra ahí, como se mostrará en el siguiente intervalo: -999.5406 < 689.7556 < 2379.052.

Ahora se puede ver que la diferencia de las medias de las compras hechas por hombres y mujeres esta dentro del intervalo realizado. También se puede decir que dado a que el intervalo incluye el valor cero (0), la diferencia de medias (2.155) no es estadisticamente significativa en un nivel de confianza al 90%; lo que quiere decir que tomando en cuenta el intervalo anterior la diferencia entre las compras de hombres y mujeres no difieren significativamente en promedio.

d) Intervalo de confianza para la varianza de las compras de las mujeres

compras_mujeres_var <- muestra2$Purchase[muestra2$Gender == "F"]
varianza_mujeres<- var(compras_mujeres_var)

Debido a que el enunciado no presenta el porcentaje del nivel de confianza para el intervalo, se hará con un 98%

intervalo_var_mujeres <- stests::var.test(x = compras_mujeres_var, conf.level=0.98)$conf.int
cat(intervalo_var_mujeres[1],"<",varianza_mujeres,"<",intervalo_var_mujeres[2],"\n" )
## 14043944 < 24014119 < 48848714
data <- data.frame(
  group = factor(rep(c("HOMBRES", "MUJERES"), c(length(compras_hombres), length(compras_mujeres)))),
  value = c(compras_hombres, compras_mujeres)
)

ggplot(data, aes(x = group, y = value, fill = group)) +
  geom_boxplot() +
  labs(title = "DIFERENCIA DE ENTRE COMPRAS DE HOMBRES Y COMPRAS DE MUJERES", y = "PURCHASE") +
  theme(legend.position = "none")+ 
  scale_fill_manual(values = c("lavenderblush2","deeppink3"))

El intervalo es de 14043944 a 48848714. Esto quiere decir que se tiene un 98% de seguridad de que la varianza esta contenida en el intervalo: 14043944 < var_mu < 48848714.

La varianza es: 24014119. Así que intercambiando var_mu por el valor de la varianza se el siguiente intervalo: 14043944 < 24014119 < 48848714.

Este último intervalo propuesto deja ver claramente que la varianza esta contenida en el intervalo realizado.

ACTIVIDAD TRES

a) Prueba de hipótesis con un nivel de significancia de 0,05 para las ventas promedio

‘Media poblacional’

mu.p<- mean(datos.bf$Purchase); mu.p
## [1] 9508.259

‘Media muestral’

mu.m<- mean(muestra2$Purchase); mu.m
## [1] 9281.083

Planteando entonces las dos hipótesis de tal manera:

H0: mu.m es menor a mu.p

H1: mu.m es mayor a mu.p (Actividad 1 ítem c.)

Pero antes se tiene que corroborar que la muestra provenga de una normal, por lo que se le aplican varias pruebas como:

ad.test(muestra2$Purchase)
## 
##  Anderson-Darling normality test
## 
## data:  muestra2$Purchase
## A = 0.35136, p-value = 0.464
lillie.test(muestra2$Purchase)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  muestra2$Purchase
## D = 0.061873, p-value = 0.3136

Como el valor-P de la prueba Anderson-Darling y de la prueba Lillie es 0.464 y 0.3136 respectivamente, ambos valores mayores al 10% y mayor que el nivel de significancia del 5%, se puede asumir que la muestra proviene de una población normal.

pdf_t <- dt(muestra2$Purchase, df = 119)

Por lo que se procede a realizar la prueba de hipotesis

t.test(muestra2$Purchase, y = NULL,
       alternative = 'two.sided',
       conf.level=0.95, mu=mu.p)
## 
##  One Sample t-test
## 
## data:  muestra2$Purchase
## t = -0.55388, df = 119, p-value = 0.5807
## alternative hypothesis: true mean is not equal to 9508.259
## 95 percent confidence interval:
##   8468.945 10093.222
## sample estimates:
## mean of x 
##  9281.083

Como el valor-P es 0.5807 y mayor que el nivel de significancia 5%, no se rechaza la hipótesis nula, es decir, las evidencias no son suficientes para afirmar que la media muestral de las ventas promedio en dolares sea mayor al promedio de las ventas en dolares de la población total.

Esta prueba tambien indica que la hipotesis viene de un estadístico “t” y a su vez posee 119 grados de libertad.

b)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.

compras_h <- muestra2$Purchase[muestra2$Gender == "M"]; compras_h
##  [1] 12783  9266 10709 15178  8230  5759  9803 10765 22508 10730  9401 13896
## [13]  8409 15593  8861 10733  9725  2460 15257 11518  1435 15679 11997  3069
## [25] 12375  7645 13846 12476 12900  6818  3130  2397  8147 10743  3098 14211
## [37] 11911 12984 13121 18171  5877  9133 16505  5583  6190  7178  5315  9761
## [49]  1585  2523  4157 10647  7223  9094 13519 -2411  7613  7939 12091  9679
## [61] 13038 11316  4432 10969  7876 10558  5030  4100  9477  8720  9362 10789
## [73]  7854  6839 12584 13261  6602  6231 14075 15265 10879  5836 12151  -764
## [85] 17438 10821  8046  8333 13117  9644
compras_m <- muestra2$Purchase[muestra2$Gender == "F"];compras_m
##  [1] 10632 13753 10904 11527  9557 11571 -1178 10868  2455 12998  2417 13198
## [13]  9910  3172 13490  4943 12488  6292 19585  3083  5972  8575  4633  6343
## [25]  5152 16625  7960  9289 14699  2000
datos <- data.frame(compras=c(compras_h, compras_m),
                    sexo=rep(c('Masculino', 'Femenino'), each=240))
boxplot(compras ~ sexo, data=datos, las=1.0,
        xlab='Sexo del comprador', ylab='Valores de las compras en dolares')

De esta manera podemos intuir que a pesar de que los hombres realizan más compras que las mujeres, los valores de sus compras en dolares son basicamente iguales.

Entonces podemos plantear las siguientes hipotesis

H0: mu1−mu2= 0

H1: mu1−mu2≠0

Comprobando con la prueba de hipotesis que:

t.test(x=compras_h, y=compras_m, alternative="two.sided", mu=0, 
       paired=FALSE, var.equal=FALSE, conf.level=0.95)
## 
##  Welch Two Sample t-test
## 
## data:  compras_h and compras_m
## t = 0.68562, df = 45.328, p-value = 0.4964
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -1336.087  2715.598
## sample estimates:
## mean of x mean of y 
##  9453.522  8763.767

De la prueba se obtiene un valor-P grande, por lo tanto, podemos concluir que no hay diferencias significativas entre las compras en dolares de las mujeres y los hombres en el Blackfriday, resultado que ya se esperaba al ver el boxplot anterior.

c) Intervalo de confianza para el cociente de varianzas de las compras entre hombres y mujeres.

res1 <- stests::var.test(x=muestra2$Purchase[muestra2$Gender == "M"], y=muestra2$Purchase[muestra2$Gender == "F"], conf.level=0.95)
res1<-res1$conf.int
res1
## [1] 0.4147882 1.3824999
## attr(,"conf.level")
## [1] 0.95

Se puede concluir que la varianza de las compras de los hombres como de las mujeres estan en el intervalo de 0.4147882 a 1.3824999

Con esto se evidencia que las varianzas de las compras tanto de hombres como mujeres son iguales, puesto que el 1 está presente en el intervalo con una confianza del 95%

d) Prueba de hipótesis con alfa = 5% para la igualdad de las varianzas de las compras entre hombres y mujeres.

H0: Var(1)=Var(2)

H1: Var(1)diferente Var(2)

x <- muestra2$Purchase[muestra2$Gender == "M"]; x
##  [1] 12783  9266 10709 15178  8230  5759  9803 10765 22508 10730  9401 13896
## [13]  8409 15593  8861 10733  9725  2460 15257 11518  1435 15679 11997  3069
## [25] 12375  7645 13846 12476 12900  6818  3130  2397  8147 10743  3098 14211
## [37] 11911 12984 13121 18171  5877  9133 16505  5583  6190  7178  5315  9761
## [49]  1585  2523  4157 10647  7223  9094 13519 -2411  7613  7939 12091  9679
## [61] 13038 11316  4432 10969  7876 10558  5030  4100  9477  8720  9362 10789
## [73]  7854  6839 12584 13261  6602  6231 14075 15265 10879  5836 12151  -764
## [85] 17438 10821  8046  8333 13117  9644
y<-muestra2$Purchase[muestra2$Gender == "F"];y
##  [1] 10632 13753 10904 11527  9557 11571 -1178 10868  2455 12998  2417 13198
## [13]  9910  3172 13490  4943 12488  6292 19585  3083  5972  8575  4633  6343
## [25]  5152 16625  7960  9289 14699  2000
datos <- data.frame(compras=c(x,y),
                    sexo=rep(c('Masculino', 'Femenino'), each=240))
boxplot(compras ~ sexo, data=datos, las=1.0,
        xlab='Sexo del comprador', ylab='Valores de las compras en dolares')

t.test(x, y = NULL,
       alternative = c("two.sided"),
       mu = 0, paired = FALSE, var.equal = TRUE,
       conf.level = 0.95)
## 
##  One Sample t-test
## 
## data:  x
## t = 20.55, df = 89, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##   8539.459 10367.586
## sample estimates:
## mean of x 
##  9453.522

Se puede observar un valor p muy pequeño de lo que se puede concluir que si hay diferencias en la varianza de las compras realizadas por mujeres respecto a la varianza de las compras por los hombres en el Blackfriday.