library(dplyr)
library(lubridate)
library(ggplot2)
amazon <- read.csv("data_set_amazon.csv",
stringsAsFactors = FALSE)
# Hipotesis
##### Contando únicamnente a las mujeres, las compras de ropa estan hechas mayoritariamente #### por mujeres entre 18 y 30 años
#### Primero debo convertir la columna de hombres y mujeres a numerica, donde:
# 0 sea hombre y 1 mujer
df2 <- amazon %>% mutate(Gender_str = as.character(Gender))
df2$gender_num[df2$Gender_str == "Female"] <- 1
df2$gender_num[df2$Gender_str == "Male"] <- 0
####Dado que conozco la fecha de nacimiento de los compradores puedo calcular su edad
df3 <- df2 %>% #mutate para que haga otra columna
#difftime es la diferencia de tiempo y Sys.date arroja la fecha actual
mutate(edad = floor(difftime(Sys.Date(),
Date.of.Birth, units = "weeks")/52.25)) #floor es para que rendonee hacia abajo
df3$edad_char = as.character(df3$edad)
df3$edad_char = as.numeric(as.character(df3$edad))
####Debo convertir a numerico la columna de compras, de manera que
# electronicos = 3 libros = 4 ropa = 5
df4 <- df3 %>% mutate(Purchase_str = as.character(Purchase.History))
df4$Purchase_num[df4$Purchase_str == "Electronics"] <- 3
df4$Purchase_num[df4$Purchase_str == "Books"] <- 4
df4$Purchase_num[df4$Purchase_str == "Clothing"] <- 5
#### Debido a que la base es muy extensa y hay datos irrelevantes seleccionaré las variables de interés
df5 <- df4 %>% select(Purchase_num, edad_char, gender_num)
#### Para facilitar la lectura de los datos voy a crear clases en las edades
intervalos <- c(18, 30, 40, 50, 65, 80)
etiquetas <- c("18-30", "31-40", "41-50", "51-65", "66-80")
df5$grupo_edad <- cut(df5$edad_char, breaks = intervalos,
labels = etiquetas, include.lowest =TRUE)
head(df4)
## User.ID Name Email.Address Username
## 1 1 Ronald Murphy williamholland@example.com williamholland
## 2 2 Scott Allen scott22@example.org scott22
## 3 3 Jonathan Parrish brooke16@example.org brooke16
## 4 4 Megan Williams elizabeth31@example.net elizabeth31
## 5 5 Kathryn Brown pattersonalexandra@example.org pattersonalexandra
## 6 6 Sandra Cox gparks@example.org gparks
## Date.of.Birth Gender Location Membership.Start.Date Membership.End.Date
## 1 1953-06-03 Male Rebeccachester 2024-01-15 2025-01-14
## 2 1978-07-08 Male Mcphersonview 2024-01-07 2025-01-06
## 3 1994-12-06 Female Youngfort 2024-04-13 2025-04-13
## 4 1964-12-22 Female Feliciashire 2024-01-24 2025-01-23
## 5 1961-06-04 Male Port Deborah 2024-02-14 2025-02-13
## 6 1954-09-19 Female Lake Johnathan 2024-01-15 2025-01-14
## Subscription.Plan Payment.Information Renewal.Status Usage.Frequency
## 1 Annual Mastercard Manual Regular
## 2 Monthly Visa Manual Regular
## 3 Monthly Mastercard Manual Regular
## 4 Monthly Amex Auto-renew Regular
## 5 Annual Visa Auto-renew Frequent
## 6 Monthly Amex Manual Occasional
## Purchase.History Favorite.Genres Devices.Used Engagement.Metrics
## 1 Electronics Documentary Smart TV Medium
## 2 Electronics Horror Smartphone Medium
## 3 Books Comedy Smart TV Low
## 4 Electronics Documentary Smart TV High
## 5 Clothing Drama Smart TV Low
## 6 Books Action Tablet Low
## Feedback.Ratings Customer.Support.Interactions Gender_str gender_num edad
## 1 3.6 3 Male 0 70 weeks
## 2 3.8 7 Male 0 45 weeks
## 3 3.3 8 Female 1 29 weeks
## 4 3.3 7 Female 1 59 weeks
## 5 4.3 1 Male 0 62 weeks
## 6 3.8 2 Female 1 69 weeks
## edad_char Purchase_str Purchase_num
## 1 70 Electronics 3
## 2 45 Electronics 3
## 3 29 Books 4
## 4 59 Electronics 3
## 5 62 Clothing 5
## 6 69 Books 4
#### Para mayor claridad se hace una gráfica
ggplot(df5, aes(x = Purchase_num, fill = gender_num)) +
geom_bar(position = "dodge") +
labs(title = "Frecuencia de Tipos de Producto por Sexo",
x = "Tipo de Producto", y = "Frecuencia") +
theme_minimal()

#### Es notorio que los productos más comprados son los libros, después los electrónicos y la ropa es el artículo menos comprado
#### Se creará un nuevo data frame donde se filtre la edad y sexo de interes
df6 <- df5 %>% filter(gender_num == 1, grupo_edad == "18-30")
table(df6)
## , , gender_num = 1, grupo_edad = 18-30
##
## edad_char
## Purchase_num 18 19 20 21 22 23 24 25 26 27 28 29 30
## 3 2 9 5 5 2 2 6 7 4 5 4 8 3
## 4 3 4 10 10 5 3 7 5 6 7 7 6 5
## 5 8 8 4 2 3 2 3 5 5 6 5 6 6
##
## , , gender_num = 1, grupo_edad = 31-40
##
## edad_char
## Purchase_num 18 19 20 21 22 23 24 25 26 27 28 29 30
## 3 0 0 0 0 0 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0 0 0 0 0 0
##
## , , gender_num = 1, grupo_edad = 41-50
##
## edad_char
## Purchase_num 18 19 20 21 22 23 24 25 26 27 28 29 30
## 3 0 0 0 0 0 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0 0 0 0 0 0
##
## , , gender_num = 1, grupo_edad = 51-65
##
## edad_char
## Purchase_num 18 19 20 21 22 23 24 25 26 27 28 29 30
## 3 0 0 0 0 0 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0 0 0 0 0 0
##
## , , gender_num = 1, grupo_edad = 66-80
##
## edad_char
## Purchase_num 18 19 20 21 22 23 24 25 26 27 28 29 30
## 3 0 0 0 0 0 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0 0 0 0 0 0
#### La tabla nos ayuda a verificar que el producto más popular entre las mujeres de 18-30 años son los libros
##### Dado que el interés de la exploración de datos son las mujeres de entre 18 y 30 años y la compra de libros, filtraré esas variables
df_mujer_joven_4 <- df5 %>% filter(gender_num== 1,
Purchase_num== 4, grupo_edad == "18-30")
# Regresión lineal
modelo <- lm(Purchase_num ~ gender_num + edad_char, data = df_mujer_joven_4)
summary(modelo)
##
## Call:
## lm(formula = Purchase_num ~ gender_num + edad_char, data = df_mujer_joven_4)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.400e-14 -7.400e-17 4.420e-16 9.570e-16 1.472e-15
##
## Coefficients: (1 not defined because of singularities)
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.000e+00 3.036e-15 1.318e+15 <2e-16 ***
## gender_num NA NA NA NA
## edad_char -1.717e-16 1.247e-16 -1.376e+00 0.173
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.974e-15 on 76 degrees of freedom
## Multiple R-squared: 0.4968, Adjusted R-squared: 0.4902
## F-statistic: 75.03 on 1 and 76 DF, p-value: 5.923e-13
### interpretación de coeficientes
### Efectivamente las mujeres entre 18 y 30 años compran ropa en amazon el 50.82% de estas compras pueden explicarse por la edad y sexo debido a que tengo un p-value < 0.05