• Utilizar herramientas tecnológicas para realizar inferencias sobre parámetros de una población usando una muestra aleatoria.
• Obtener conclusiones sobre parámetros poblacionales utilizando estimación por intervalos y prueba de hipótesis.
1. Actividad 1
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án principalmente la variable PURCHASE
## # A tibble: 6 × 12
## User_ID Product_ID Gender Age Occupation City_Category Marital_Status
## <dbl> <chr> <chr> <chr> <dbl> <chr> <dbl>
## 1 1003808 P00313042 M 26-35 7 A 1
## 2 1005836 P00067842 M 26-35 0 C 0
## 3 1000146 P00266642 F 36-45 20 B 1
## 4 1005812 P00064242 F 26-35 7 A 1
## 5 1002006 P00110742 M 36-45 0 A 1
## 6 1000749 P00182442 M 36-45 18 B 0
## # ℹ 5 more variables: Product_Category_1 <dbl>, Product_Category_2 <dbl>,
## # Product_Category_3 <dbl>, Purchase <dbl>, Income <dbl>
ANALISIS DESCRIPTIVO VARIABLE “GENDER”
summary(muestra$Gender)
## Length Class Mode
## 25 character character
frecuencias_absolutas <- table(muestra$Gender)
print(frecuencias_absolutas)
##
## F M
## 6 19
frecuencias_relativas <- prop.table(frecuencias_absolutas)
print(frecuencias_relativas)
##
## F M
## 0.24 0.76
frecuencias_relativas_porcentaje <- frecuencias_relativas * 100
print(frecuencias_relativas_porcentaje)
##
## F M
## 24 76
library(ggplot2)
df <- data.frame(
Gender = names(frecuencias_absolutas),
Frecuencia = as.vector(frecuencias_absolutas))
ggplot(df, aes(x = Gender, y = Frecuencia, fill = Gender)) +
geom_bar(stat = "identity") +
geom_text(aes(label = paste0(round(Frecuencia / sum(Frecuencia) * 100, 1), "%")),
vjust = -0.5) +
theme_minimal() +
labs(title = "Distribución de Género",
x = "Género",
y = "Frecuencia")
La tabla muestra una distribución de valores por género, con “F” (femenino) registrando un valor de 6 y “M” (masculino) un valor de 19. Esto indica que el 24% de los valores corresponden a mujeres y el 76% a hombres. Hay una notable diferencia, con los hombres presentando un valor significativamente mayor que las mujeres.
ANALISIS DESCRIPTIVO VARIABLE “CITY”
summary(muestra$City_Category)
## Length Class Mode
## 25 character character
frecuencias_absolutas <- table(muestra$City_Category)
print(frecuencias_absolutas)
##
## A B C
## 9 10 6
frecuencias_relativas <- prop.table(frecuencias_absolutas)
print(frecuencias_relativas)
##
## A B C
## 0.36 0.40 0.24
frecuencias_relativas_porcentaje <- frecuencias_relativas * 100
print(frecuencias_relativas_porcentaje)
##
## A B C
## 36 40 24
library(ggplot2)
df <- data.frame(
City_Category = names(frecuencias_absolutas),
Frecuencia = as.vector(frecuencias_absolutas))
ggplot(df, aes(x = "", y = Frecuencia, fill = City_Category)) +
geom_bar(width = 1, stat = "identity") +
coord_polar(theta = "y") +
theme_void() +
labs(title = "Distribución de City_Category") +
geom_text(aes(label = paste0(round(Frecuencia / sum(Frecuencia) * 100, 1), "%")),
position = position_stack(vjust = 0.5)) +
scale_fill_brewer(palette = "Set3")
El gráfico de pastel muestra la distribución porcentual de la categoría de ciudades (City_Category) en tres segmentos: A, B y C. La categoría B es la más grande, representando el 40% del total, seguida por la categoría A con un 36%, y finalmente la categoría C con un 24%. Esto indica que la mayoría de los datos provienen de ciudades clasificadas como B, mientras que las ciudades de la categoría C tienen la menor representación en el conjunto de datos. Esta distribución desigual puede reflejar diferencias en tamaño, población, o actividad entre las distintas categorías de ciudades.
ANALISIS DESCRIPTIVO VARIABLE “INCOME”
summary(muestra$Income)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 7678 9899 11751 11711 13030 15686
mean_income <- mean(muestra$Income, na.rm = TRUE)
median_income <- median(muestra$Income, na.rm = TRUE)
sd_income <- sd(muestra$Income, na.rm = TRUE)
var_income <- var(muestra$Income, na.rm = TRUE)
range_income <- range(muestra$Income, na.rm = TRUE)
iqr_income <- IQR(muestra$Income, na.rm = TRUE)
library(ggplot2)
ggplot(muestra, aes(x = Income)) +
geom_histogram(binwidth = 1000, fill = "skyblue", color = "black", alpha = 0.7) +
theme_minimal() +
labs(title = "Histograma de Income",
x = "Income",
y = "Frecuencia")
El análisis descriptivo de la variable Income revela una distribución con las siguientes estadísticas: el valor mínimo es 7678, el primer cuartil es 9899, la mediana es 11751, la media es 11711, el tercer cuartil es 13030 y el valor máximo es 15686. La cercanía entre la media (11711) y la mediana (11751) sugiere que la distribución es relativamente simétrica. Sin embargo, el histograma de Income muestra una distribución bimodal, con dos picos principales alrededor de los ingresos de 10000 y 12500. Este patrón indica que hay dos grupos distintos de ingresos dentro de la muestra. Además, se observa una dispersión considerable en los valores de ingresos, con una presencia significativa de datos en todos los rangos, desde los ingresos más bajos cerca de 7500 hasta los ingresos más altos cerca de 15000. Esta variabilidad podría ser indicativa de diferencias sustanciales en las características socioeconómicas de los individuos en la muestra.
mu_purchase <- mean(muestra$Purchase)
cat("La media poblacional de Purchase es:", mu_purchase, "\n")
## La media poblacional de Purchase es: 9337.44
La media poblacional de la variable Purchase es 9337.44. Esta media representa el valor promedio de las compras realizadas por los individuos en la población. Al tener un valor de 9337.44, se puede interpretar que, en promedio, cada individuo de la población ha realizado compras por un valor de aproximadamente 9337.44.
sigma_purchase <- sd(muestra$Purchase)
cat("La desviación estándar poblacional de Purchase es:", sigma_purchase, "\n")
## La desviación estándar poblacional de Purchase es: 5231.611
La desviación estándar poblacional de la variable Purchase es 5231.611. La desviación estándar es una medida de la dispersión o variabilidad de los datos respecto a la media. Una desviación estándar de 5231.611 indica que las cantidades de compras realizadas por los individuos tienden a desviarse, en promedio, en 5231.611 del valor medio (9337.44).
media_pobla <- mu_purchase / 2
z_valor <- (mu_purchase - media_pobla) / (sigma_purchase / sqrt(25))
probabilidad <- 1 - pnorm(z_valor)
cat("La probabilidad de que la media muestral sea mayor o igual que la mitad de la media poblacional es:", probabilidad, "\n")
## La probabilidad de que la media muestral sea mayor o igual que la mitad de la media poblacional es: 4.059359e-06
summary(muestra$Income)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 7678 9899 11751 11711 13030 15686
library(ggplot2)
ggplot(muestra, aes(x = Income)) +
geom_histogram(binwidth = 1000, fill = c("#FFC0CB", "#FF69B4", "#FF1493", "#C71585", "#DA70D6", "#FFB6C1","#FFC0CB", "#FF69B4", "#FF1493"), color = "black", alpha = 0.7) +
theme_minimal() +
labs(title = "Histograma de Income",
x = "Income",
y = "Frecuencia")
sesgo <- ds_skewness(muestra$Purchase)
cat("El sesgo de la variable Purchase es:", sesgo, "\n")
## El sesgo de la variable Purchase es: 1.256057
Teniendo en cuenta que el sesgo mide la asimetría de la distribución de los datos. Un sesgo de 1.256057 indica que la distribución de Purchase está sesgada positivamente (o a la derecha). Esto significa que hay una cola más larga en el lado derecho de la distribución, con algunos valores de Purchase significativamente más altos que la mayoría de los datos.
curtosis <- ds_kurtosis(muestra$Purchase)
cat("La curtosis de la variable Purchase es:", curtosis, "\n")
## La curtosis de la variable Purchase es: 1.092849
Teniendo en cuenta que la curtosis mide la “apuntación” o “planicidad” de la distribución de los datos en comparación con una distribución normal. Una curtosis de 1.092849 sugiere que la distribución de Purchase es mesocúrtica, es decir, tiene una curtosis moderada que es relativamente cercana a la curtosis de una distribución normal (que es 3).
En conclusión, la distribución de la variable Purchase no parece distribuirse de forma normal debido al sesgo positivo significativo, a pesar de tener una curtosis relativamente cercana a la de una distribución normal.
2. Actividad 2
# Media muestral y desviación estándar muestral
media.muestral.Purchase <- mean(muestra$Purchase)
desv.purchase <- sd(muestra$Purchase)
valor.critico.Purchase <- qt((1 - 0.9) / 2, df = 25 - 1, lower.tail = FALSE)
# Error estándar de la media
error.estandar <- desv.purchase / sqrt(25)
# Límites del intervalo de confianza
lim_inferior <- media.muestral.Purchase - valor.critico.Purchase * error.estandar
lim_superior <- media.muestral.Purchase + valor.critico.Purchase * error.estandar
cat("Intervalo de confianza del 90% para la media de P:", "[", lim_inferior, ",", lim_superior, "]\n")
## Intervalo de confianza del 90% para la media de P: [ 7547.306 , 11127.57 ]
media_pobla <- mean(muestra$Purchase)
if (media_pobla >= lim_inferior && media_pobla <= lim_superior) {
cat("La media poblacional cae dentro del intervalo de confianza.\n")} else{
cat("La media poblacional no cae dentro del intervalo de confianza.\n")}
## La media poblacional cae dentro del intervalo de confianza.
Compras_Hombres <- subset(muestra, Gender =="M",Purchase)
Compras_Mujeres <- subset(muestra, Gender =="F",Purchase)
Solucion <- t.test(x = Compras_Hombres$Purchase, y = Compras_Mujeres$Purchase, paired = FALSE, var.equal = TRUE, conf.level = 0.9)
Solucion$conf.int <- round(Solucion$conf.int, 2)
print(Solucion)
##
## Two Sample t-test
##
## data: Compras_Hombres$Purchase and Compras_Mujeres$Purchase
## t = 1.4326, df = 23, p-value = 0.1654
## alternative hypothesis: true difference in means is not equal to 0
## 90 percent confidence interval:
## -674.50 7544.96
## sample estimates:
## mean of x mean of y
## 10161.895 6726.667
Compras_mujeres <- subset(muestra, Gender == "F", Purchase)
n_m <- nrow(Compras_mujeres)
varianza_muestral <- var(Compras_mujeres$Purchase)
# Grados de libertad
df <- n_m - 1
# Nivel de confianza
confianza <- 0.95
alpha <- 1 - confianza
# Valores críticos de la distribución chi-cuadrado
chi_critico_inferior <- qchisq(alpha / 2, df)
chi_critico_superior <- qchisq(1 - alpha / 2, df)
# Límites del intervalo de confianza para la varianza
limite_inferior_var <- (df * varianza_muestral) / chi_critico_superior
limite_superior_var <- (df * varianza_muestral) / chi_critico_inferior
cat("Intervalo de confianza del 95% para la varianza de las compras de las mujeres:", "[", limite_inferior_var, ",", limite_superior_var, "]\n")
## Intervalo de confianza del 95% para la varianza de las compras de las mujeres: [ 4236337 , 65401884 ]
n <- length(muestra$Purchase)
media_muestral <- mean(muestra$Purchase)
error_estandar <- 5231.611 / sqrt(n)
Z <- (media_muestral - 9337.44) / error_estandar
Z_critico <- qnorm(0.95) # Valor crítico para α = 0.05
if (Z > Z_critico) {
cat("Rechazamos la hipótesis nula: hay evidencia suficiente para afirmar que la media poblacional es mayor que 9337.44.\n")
} else {
cat("No rechazamos la hipótesis nula: no hay evidencia suficiente para afirmar que la media poblacional es mayor que 9337.44.\n")
}
## No rechazamos la hipótesis nula: no hay evidencia suficiente para afirmar que la media poblacional es mayor que 9337.44.
3. Actividad 3
# Nivel de significancia 5%
# H0: μ => 9500
# H1: μ < 9500
med.p_purchase <- mean(Blackfriday$Purchase)
med.p_purchase
## [1] 9344.566
med.m_purchase <- mean(muestra$Purchase)
med.m_purchase
## [1] 9337.44
desv.p_purchase <- sd(Blackfriday$Purchase)
desv.p_purchase
## [1] 4986.593
desv.m_purchase <- sd(muestra$Purchase)
desv.m_purchase
## [1] 5231.611
solucion1 <- t.test(x=muestra$Purchase, alternative='less', mu=9500)$p.value
solucion1
## [1] 0.4389171
El valor P resultante fue mayor al nivel de significancia preestablecido de 0.05. Esto significa que no hay evidencia suficiente para rechazar la hipótesis nula. En otras palabras, no se puede concluir que la media de las ventas sea menor a 9500 con un 95% de confianza.
En resumen, los datos disponibles no permiten afirmar que las ventas promedio sean inferiores a 9500. Se requieren más datos o un análisis más profundo para determinar con mayor certeza el comportamiento real de las ventas.
# Nivel de significancia 5%
# H1: μh ≠ μm
# H0: μh = μm
hombres<- muestra[muestra$Gender=="M",]
mujeres <- muestra[muestra$Gender=="F",]
library(nortest)
?t.test
## starting httpd help server ... done
solucion <- t.test(x=hombres$Purchase, y=mujeres$Purchase, alternative='two.sided',
mu=0,conf.level = 0.95)$p.value
solucion
## [1] 0.08337991
En conclusión, dado que el valor-P supera el nivel de significancia del 5%, la hipótesis nula no se rechaza. Esto implica que no hay evidencia suficiente para afirmar que existen diferencias significativas en las compras promedio entre hombres y mujeres.
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.
# Nivel de significancia 5%
# H1: Proporción de μh ≠ Proporción de μm
# H0: Proporción de μh = Proporción de μm
c.hombres <- muestra[muestra$Gender=="M",]
c.mujeres <- muestra[muestra$Gender=="F",]
solucion <- prop.test(x=c(15,10), n=c(25,25), alternative="two.sided"
,conf.level = 0.95)
solucion
##
## 2-sample test for equality of proportions with continuity correction
##
## data: c(15, 10) out of c(25, 25)
## X-squared = 1.28, df = 1, p-value = 0.2579
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.1115806 0.5115806
## sample estimates:
## prop 1 prop 2
## 0.6 0.4
solucion_valor <- solucion$p.value
solucion_valor
## [1] 0.257899
Para este punto, en primer lugar, se definió lo que se quería determinar mediante las hipótesis, estableciendo como hipótesis alternativa la diferencia en la proporción de compras entre hombres y mujeres, y como hipótesis nula la igualdad en la proporción de compras entre hombres y mujeres.
Luego, se identificó el número de hombres que compran dentro de nuestra muestra de 25 personas, resultando ser 15, y el número de mujeres que compran dentro de la misma muestra, resultando ser 10. Posteriormente, se realizó la prueba de hipótesis para la diferencia de proporciones utilizando la función prop.test.
Esto significa que, dado que nuestro valor-P es mayor que nuestro nivel de significancia del 5%, no rechazamos la hipótesis nula. Por lo tanto, podemos concluir que no existe suficiente evidencia para afirmar que hay una diferencia en la proporción de compras entre hombres y mujeres.