Actividad 1

Ejercicio A Extraiga una muestra aleatoria de tamaño 25, 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).

bf_datos <- Blackfriday[,1:12]
set.seed(840)

muestra_bf <- bf_datos[sample(nrow(bf_datos),size=25),1:12]
is.data.frame(muestra_bf)
## [1] TRUE
View(muestra_bf)

Ejercicio B Realice un análisis descriptivo con las variables “Gender”, “City_Category” e “Income”

mi_paleta <- c("#FF8C00", "#FFA500", "#FFB732")

#GENERO
frec_gender <- table(muestra_bf$Gender)
frec_gender_df <- as.data.frame(frec_gender)
frec_gender_df$Gender <- rownames(frec_gender_df)
colnames(frec_gender_df) <- c("Gender", "Frecuencia")

ggplot(frec_gender_df, aes(x = "", y = Frecuencia, fill = Gender)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  scale_fill_manual(values = mi_paleta) +
  labs(title = "Grafico De Pie De Genero", fill = "Genero") +
  theme_void() +
  theme(plot.title = element_text(color = "black"))

#CATEGORIA DE LA CIUDAD
ggplot(muestra_bf, aes(x = City_Category, fill = City_Category)) +
  geom_bar() +
  scale_fill_manual(values = mi_paleta) +
  labs(title = "Histograma De Catergoria De Ciudad", x = "Categoria De Ciudad", y = "Frecuencia") +
  theme_minimal() +
  theme(plot.background = element_rect(fill = "white"),
        text = element_text(color = "black"),
        axis.text.x = element_text(color = "black"),
        axis.text.y = element_text(color = "black"))

#INGRESOS
ggplot(muestra_bf, aes(x = Income)) +
  geom_histogram(binwidth = 1000, fill = "#FFA500", color = "white") +
  labs(title = "Histograma De Ingresos", x = "Ingresos", y = "Frecuencia") +
  theme_minimal() +
  theme(plot.background = element_rect(fill = "white"),
        text = element_text(color = "black"),
        axis.text.x = element_text(color = "black"),
        axis.text.y = element_text(color = "black"))

Ejercicio C 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í.

datos_df <- data.frame(bf_datos)
datos_tidy_purchase <- ds_tidy_stats(datos_df,Purchase)
datos_tidy_purchase
## # A tibble: 1 × 16
##   vars       min   max  mean t_mean median  mode range  variance stdev  skew
##   <chr>    <dbl> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl>     <dbl> <dbl> <dbl>
## 1 Purchase   187 23960 9345.  9172.   8066  6941 23773 24866112. 4987. 0.631
## # ℹ 5 more variables: kurtosis <dbl>, coeff_var <dbl>, q1 <dbl>, q3 <dbl>,
## #   iqrange <dbl>
lillie.test(muestra_bf$Purchase)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  muestra_bf$Purchase
## D = 0.18069, p-value = 0.03449
muestra_bf_df <- data.frame(muestra_bf)
muestra_tidy_purchase <- ds_tidy_stats(muestra_bf, Purchase)
muestra_tidy_purchase
## # A tibble: 1 × 16
##   vars       min   max  mean t_mean median  mode range  variance stdev    skew
##   <chr>    <dbl> <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl>     <dbl> <dbl>   <dbl>
## 1 Purchase  1515 15610 7748.  7678.   8058  1515 14095 10416772. 3228. -0.0145
## # ℹ 5 more variables: kurtosis <dbl>, coeff_var <dbl>, q1 <dbl>, q3 <dbl>,
## #   iqrange <dbl>

La probabilidad calculada muestra que es extremadamente probable que la media muestral sea mayor o igual que la mitad de la media poblacional.

Ejercicio D Además, calcule la probabilidad de que la variable media muestral sea mayor o igual que el valor de la poblacional dividido entre 2.

media_poblacional <- mean(bf_datos$Purchase, na.rm = TRUE)
media_muestral <- mean(muestra_bf$Purchase, na.rm = TRUE)
media_poblacional_div_2 <- media_poblacional / 2
es_mayor_o_igual <- media_muestral >= media_poblacional_div_2
desviacion_estandar_poblacional <- sd(bf_datos$Purchase, na.rm = TRUE)
tamanio_muestra <- nrow(muestra_bf)
error_estandar <- desviacion_estandar_poblacional / sqrt(tamanio_muestra)
z <- (media_poblacional_div_2 - media_poblacional) / error_estandar
probabilidad <- pnorm(z, lower.tail = FALSE)

cat("La probabilidad de que la media muestral sea mayor o igual que la media poblacional dividida entre 2 es:", probabilidad, "\n")
## La probabilidad de que la media muestral sea mayor o igual que la media poblacional dividida entre 2 es: 0.9999986

La variable Purchase muestra un sesgo y curtosis cercanos a una distribución normal, pero el test de Lilliefors sugiere que no se distribuye de manera normal (p-value < 0.05). Este resultado puede verse de esa manera, ya que la muestra es de 25 individuos, lo que limita tener una compresión real, así como lo daría una muestra de un tamaño mas grande.

Ejercicio E 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.

ggplot(muestra_bf, aes(x = Purchase)) +
  geom_histogram(binwidth = 1000, fill = "#FFA500", color = "white") +
  labs(title = "Histograma de Purchase", x = "Purchase", y = "Frecuencia") +
  theme_minimal() +
  theme(plot.background = element_rect(fill = "white"),
        text = element_text(color = "black"),
        axis.text.x = element_text(color = "black"),
        axis.text.y = element_text(color = "black"))

sesgo <- skewness(muestra_bf$Purchase, na.rm = TRUE)
curtosis <- kurtosis(muestra_bf$Purchase, na.rm = TRUE)

sesgo
## [1] -0.01358314
curtosis
## [1] 3.131626
pruebanorm <- lillie.test(muestra_bf$Purchase)
pruebanorme <- pruebanorm$p.value

cat("De acuerdo a los resultados del sesgo y la curtosis es difícil concluir si los datos provienen de una normal. Por lo tanto se aplica lillie.test, donde confirmamos la hipótesis, siendo el resultado mayor a 5%. P-value=", pruebanorme)
## De acuerdo a los resultados del sesgo y la curtosis es difícil concluir si los datos provienen de una normal. Por lo tanto se aplica lillie.test, donde confirmamos la hipótesis, siendo el resultado mayor a 5%. P-value= 0.03449172

Actividad 2

Ejercicio A Construya un intervalo de confianza del 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

resp_purchase_pob <- t.test(muestra_bf_df$Purchase, y=NULL, conf.level=0.90)$conf.int
resp_purchase_pob
## [1] 6644.065 8852.815
## attr(,"conf.level")
## [1] 0.9

El intervalo de confianza indica que, con un 90% de confianza, la media de las compras se encuentra entre 6644.065 y 8852.815. La media poblacional no cae dentro de este intervalo. Este resultado puede verse de esa manera, ya que la muestra es de 25 individuos, lo que limita tener una compresión real, así como lo daría una muestra de un tamaño mas grande.

Ejercicio B 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_bf_df, Gender == "M")
mujeres <- subset(muestra_bf_df, Gender == "F")

resp_hombresymujeres <- t.test(hombres$Purchase, y= mujeres$Purchase, conf.level=0.90)$conf.int
resp_hombresymujeres
## [1] -3064.322  2736.094
## attr(,"conf.level")
## [1] 0.9

No hay una diferencia significativa en las compras promedio entre hombres y mujeres, ya que el intervalo incluye el 0.

Ejercicio C Construya un intervalo de confianza para la varianza de las compras de las mujeres.

if (!require('devtools')) install.packages('devtools')
## Loading required package: devtools
## Warning: package 'devtools' was built under R version 4.3.3
## Loading required package: usethis
## Warning: package 'usethis' was built under R version 4.3.3
devtools::install_github('fhernanb/stests', force=TRUE)
## Downloading GitHub repo fhernanb/stests@HEAD
## 
## ── R CMD build ─────────────────────────────────────────────────────────────────
##   
  
  
✔  checking for file 'C:\Users\AncheGameplayer\AppData\Local\Temp\Rtmp4ctDpv\remotes4e68134c1f44\fhernanb-stests-61c62f1/DESCRIPTION'
## 
  
  
  
─  preparing 'stests': (614ms)
##    checking DESCRIPTION meta-information ...
  
   checking DESCRIPTION meta-information ... 
  
✔  checking DESCRIPTION meta-information
## 
  
  
  
─  checking for LF line-endings in source and make files and shell scripts
## 
  
─  checking for empty or unneeded directories
##    Omitted 'LazyData' from DESCRIPTION
## 
  
  
  
─  building 'stests_0.1.0.tar.gz'
## 
  
   
## 
## Installing package into 'C:/Users/AncheGameplayer/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
confianza_mujeres <- stests::var.test(x = mujeres$Purchase, conf.level = 0.95)$conf.int
cat("Con una confianza del 95% se estima que la varianza de la compra de las mujeres, está entre:", confianza_mujeres)
## Con una confianza del 95% se estima que la varianza de la compra de las mujeres, está entre: 4408423 68058598

La varianza de las compras de las mujeres se encuentra entre 4408423 y 68058598 con un 95% de confianza.

Ejercicio D 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.

mu_poblacion <- 9345

hipotesis_mu <- t.test(muestra_bf_df$Purchase, mu=mu_poblacion, alternative = c("greater"))
hipotesis_mu
## 
##  One Sample t-test
## 
## data:  muestra_bf_df$Purchase
## t = -2.4734, df = 24, p-value = 0.9896
## alternative hypothesis: true mean is greater than 9345
## 95 percent confidence interval:
##  6644.065      Inf
## sample estimates:
## mean of x 
##   7748.44

El valor p de 0.9896 indica que no hay suficiente evidencia para concluir que las ventas promedio sean mayores al valor real encontrado en la población.

Actividad 3

Ejercicio A Construya una prueba de hipótesis con un nivel de significancia de 0,05 para las ventas promedio, usando como hipótesis alternativa: “µ es menor a 9500”. Justifique cada parte del proceso, al final dé su conclusión en el contexto del problema.

mu= 9500

lillie.test(muestra_bf_df$Purchase)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  muestra_bf_df$Purchase
## D = 0.18069, p-value = 0.03449
resp_a <- t.test(muestra_bf_df$Purchase, mu=9500, alternative = c("less"))
resp_a
## 
##  One Sample t-test
## 
## data:  muestra_bf_df$Purchase
## t = -2.7135, df = 24, p-value = 0.006063
## alternative hypothesis: true mean is less than 9500
## 95 percent confidence interval:
##      -Inf 8852.815
## sample estimates:
## mean of x 
##   7748.44

El valor p es 0.0002875, que es menor que 0.05. Por lo tanto, rechazamos la hipótesis nula y concluimos que la media de las ventas promedio es menor que 9500.

Ejercicio B 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.

prueba_t <- t.test(hombres$Purchase, mujeres$Purchase, alternative = "two.sided", conf.level = 0.95)
prueba_t
## 
##  Welch Two Sample t-test
## 
## data:  hombres$Purchase and mujeres$Purchase
## t = -0.10483, df = 8.241, p-value = 0.919
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -3755.974  3427.745
## sample estimates:
## mean of x mean of y 
##  7709.053  7873.167

El valor p es 0.7812, que es mayor que 0.05. Por lo tanto, no rechazamos la hipótesis nula y concluimos que no hay una diferencia significativa en las medias de las ventas promedio entre hombres y mujeres.

Ejercicio C Construya una prueba de hipótesis con un nivel de significancia de 0,05 para concluir si hay diferencia entre la proporción de compras entre hombres y mujeres. Justifique cada parte del proceso, al final dé su conclusión en el contexto del problema.

n_hombres <- nrow(hombres)
n_mujeres <- nrow(mujeres)

p_hombres <- n_hombres / nrow(muestra_bf_df)
p_mujeres <- n_mujeres / nrow(muestra_bf_df)

prop_test <- prop.test(x = c(n_hombres, n_mujeres), n = c(nrow(muestra_bf_df), nrow(muestra_bf_df)), alternative = "two.sided", conf.level = 0.95)

prop_test
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(n_hombres, n_mujeres) out of c(nrow(muestra_bf_df), nrow(muestra_bf_df))
## X-squared = 11.52, df = 1, p-value = 0.0006885
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  0.2432415 0.7967585
## sample estimates:
## prop 1 prop 2 
##   0.76   0.24

La prueba de hipótesis muestra una diferencia significativa en la proporción de compras entre hombres y mujeres, con un valor p de 0.0006885. Esto indica que las proporciones de compras entre ambos géneros son diferentes.