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