#Este documento presenta el análisis de los datos celulares

#Cargar los datos desde el archivo Excel

library(readxl)
data<-read_excel("C:/Users/Usuario/Downloads/base de datos.xlsx")

¿Cuál es la capacidad promedio de la batería por número de núcleos del procesador

#Calculando el promedio de capacidad de bateria por número de núcleos
battery_avg <- data %>%
#Agrupando por núcleos del procesador
  group_by(n_cores) %>%
  summarise(avg_battery_power = mean(battery_power, na.rm = TRUE))

# Mostrar resultados
print(battery_avg)
## # A tibble: 8 × 2
##   n_cores avg_battery_power
##     <dbl>             <dbl>
## 1       1             1302.
## 2       2             1239.
## 3       3             1215.
## 4       4             1225.
## 5       5             1226 
## 6       6             1255.
## 7       7             1222.
## 8       8             1228.
# Crear el gráfico
ggplot(battery_avg, aes(x = n_cores, y = avg_battery_power)) +
  geom_bar(stat = "identity", fill= "pink") +
  labs(title = "Capacidad promedio de bateria por nucleos del procesador",
       x = "Nucleos del procesador",
       y = "Promedio de capacidad de bateria (mAh)")

¿Cuál es el promedio de velocidad del reloj por tipo de pantalla táctil?

#Convertir clock_speed a numerico (estaba en caracter)
data$clock_speed <- as.numeric(data$clock_speed)

#Calculando el promedio de velocidad de reloj por tipo de pantalla táctil
clock_speed_avg <- data %>%
  group_by(touch_screen) %>%
  summarise(avg_clock_speed = mean(clock_speed, na.rm = TRUE))

# Mostrar resultados
print(clock_speed_avg)
## # A tibble: 2 × 2
##   touch_screen avg_clock_speed
##          <dbl>           <dbl>
## 1            0            1.51
## 2            1            1.54
# Crear el gráfico, 0 es sin pantalla táctil, 1 es con pantalla táctil
ggplot(clock_speed_avg, aes(x = touch_screen, y = avg_clock_speed)) +
  geom_bar(stat = "identity", fill= "blue") +
  labs(title = "Promedio de velocidad del reloj por tipo de pantalla tactil",
       x = "Pantalla tatil",
       y = "Velocidad promedio del reloj (GHz)")

¿Cuál es la relación entre la memoria RAM y la velocidad del reloj?

# Crear un gráfico de dispersión para hallar la relación entre RAM y velocidad del reloj
ggplot(data, aes(x = ram, y = clock_speed)) +
  geom_point(color = "purple") +
  labs(title = "Relacion entre la memoria RAM y la velocidad del reloj",
       x = "Memoria RAM (MB)",
       y = "Velocidad del reloj (GHz)")

¿Cuál es la proporción de teléfonos con soporte 3G?

#Agrupar datos de la columna three_g que indica si el teléfono tiene soporte para 3G (1 para sí, 0 para no).
three_g_counts <- data %>%
  group_by(three_g) %>%
#Calculando el número de teléfonos en cada grupo (con o sin 3G).
  summarise(count = n()) %>%
#Creando una nueva columna proportion que calcula la proporción de cada grupo en relación con el total.
  mutate(proportion = count / sum(count))

#Creando gráfico de barras
ggplot(three_g_counts, aes(x = factor(three_g), y = proportion, fill = factor(three_g))) +
  geom_bar(stat = "identity") +
  labs(title = "Proporcion de Telefonos con Soporte 3G",
       x = "Soporte 3G (1 = Si, 0 = No)",
       y = "Proporcion") +
  scale_fill_manual(values = c("0" = "pink", "1" = "yellow")) +
  theme(legend.position = "none")

# ¿Cuál es la resolución promedio de píxeles (ancho x alto) por tamaño de pantalla?

# Calculando la resolución total de la en pixeles, con el producto
data <- data %>%
  mutate(resolution = px_height * px_width)

#Agrupando los datos según la altura de la pantalla, que está en centímetros.
screen_resolution_avg <- data %>%
  group_by(sc_h) %>%
#Calculando el promediio de la resolución
  summarise(avg_resolution = mean(resolution, na.rm = TRUE))

#Creando el gráfico
ggplot(screen_resolution_avg, aes(x = sc_h, y = avg_resolution)) +
  geom_line(color = "blue") +
  labs(title = "Resolucion Promedio de Pixeles por Altura de Pantalla",
       x = "Altura de la Pantalla (cm)",
        y = "Resolucion Promedio de Pixeles")

¿Cuál es el peso promedio de los teléfonos por número de núcleos del procesador y presencia de 4G?

weight_avg <- data %>%
#Agrupando los datos según el número de núcleos del procesador y presencia de de 4G
  group_by(n_cores, four_g) %>%
#Calculando el peso promedio de los telefonos
  summarise(avg_weight = mean(mobile_wt, na.rm = TRUE))
## `summarise()` has grouped output by 'n_cores'. You can override using the
## `.groups` argument.
ggplot(weight_avg, aes(x = factor(n_cores), y = avg_weight, fill = factor(four_g))) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(title = "Peso Promedio por Nucleos y Presencia de 4G",
       x = "Nucleos del Procesador",
       y = "Peso Promedio del Telefono (g)",
       fill = "Presencia de 4G")

¿Cuál es la eficiencia del espacio de almacenamiento (RAM/Profundidad) por número de núcleos del procesador?

str(data$ram)
##  num [1:2000] 2549 2631 2603 2769 1411 ...
str(data$m_dep)
##  chr [1:2000] "0.6" "0.7" "0.9" "0.8" "0.6" "0.7" "0.8" "0.8" "0.7" "0.1" ...
#Cambiando a valor numerico
data$ram <- as.numeric(data$ram)
data$m_dep <- as.numeric(data$m_dep)
data <- data %>%
#Creando columna de storage_efficiency y calculando la eficiencia de almacenamiento Memoria Ram/produfundidad
  mutate(storage_efficiency = ram / m_dep)

efficiency_avg <- data %>%
#Agrupando los datos por el número de núcleos del procesador
  group_by(n_cores) %>%
#Calculando el promedio de la eficiencia del almacenamiento
  summarise(avg_efficiency = mean(storage_efficiency, na.rm = TRUE))

ggplot(efficiency_avg, aes(x = n_cores, y = avg_efficiency)) +
  geom_bar(stat = "identity", fill = "orange") +
  labs(title = "Eficiencia de Espacio de Almacenamiento por Nucleos",
       x = "Nucleos del Procesador",
       y = "Eficiencia (RAM/Profundidad)")

# ¿Cuál es la proporción de teléfonos con 3G, 4G y WiFi por rango de memoria interna?

data <- data %>%
#Creando una columna en el dataframe llamada memory_range y luego clasificando la columna de int_memory
  mutate(memory_range = cut(int_memory, breaks = c(0, 16, 32, 64, 128, Inf), labels = c("0-16", "16-32", "32-64", "64-128" , "128+" )))
#Calculado las proporciones
proportion_data <- data %>%
#Agrupando los datos segúnlos rangos de memoria
  group_by(memory_range) %>%
#Calculando las proporciones promedio para 3G, 4G y Wifi
  summarise(proportion_3G = mean(three_g, na.rm = TRUE),
            proportion_4G = mean(four_g, na.rm = TRUE),
            proportion_wifi = mean(wifi, na.rm = TRUE))

proportion_data
## # A tibble: 3 × 4
##   memory_range proportion_3G proportion_4G proportion_wifi
##   <fct>                <dbl>         <dbl>           <dbl>
## 1 0-16                 0.770         0.519           0.498
## 2 16-32                0.756         0.508           0.532
## 3 32-64                0.760         0.530           0.499

¿Cuál es el perfil promedio de los celulares por rango de precio?

data <- data %>%
#Creando columna rango_precio que clasifica los teléfonos por rango de precio bajo, medio, alto y premium
  mutate(rango_precio = cut(price_range , breaks = 4, labels = c("Bajo", "Medio", "Alto", "Premium")))

profile_avg <- data %>%
#Calculando los promedios para cada rango
  group_by(price_range) %>%
  summarise(avg_battery = mean(battery_power, na.rm = TRUE),
            avg_ram = mean(ram, na.rm = TRUE),
            avg_clock_speed = mean(clock_speed, na.rm = TRUE))

profile_avg
## # A tibble: 4 × 4
##   price_range avg_battery avg_ram avg_clock_speed
##         <dbl>       <dbl>   <dbl>           <dbl>
## 1           0       1117.    785.            1.55
## 2           1       1229.   1679.            1.49
## 3           2       1228.   2583.            1.53
## 4           3       1380.   3449.            1.52

¿Cuál es la relación entre la capacidad de la batería, la memoria RAM y el rango de precios ?

#Los tonos de color más oscuros son los telefonos de menor precio y los más claros de mayor precio
ggplot(data, aes(x = battery_power, y = ram, color = price_range)) +
  geom_point() +
  labs(title = "Relacion entre Capacidad de Bateria, RAM y Rango de Precios",
       x = "Capacidad de Bateria (mAh)",
       y = "Memoria RAM (MB)",
       color = "Rango de Precio")

# ¿Cuál es la relación entre el peso del teléfono y la capacidad de la batería controlando por la resolución de pantalla?

# Crear una nueva variable para la resolución de pantalla
data <- data %>%
  mutate(screen_resolution = px_height * px_width)

# Agrupar por intervalos de resolución de pantalla
data <- data %>%
  mutate(screen_category = cut(screen_resolution, 
                               breaks = quantile(screen_resolution, probs = seq(0, 1, 0.25), na.rm = TRUE), 
                               include.lowest = TRUE, 
                               labels = c("Baja", "Media-Baja", "Media-Alta", "Alta")))

# Resumen de datos para graficar
battery_weight_data <- data %>%
  group_by(screen_category) %>%
  summarise(avg_weight = mean(mobile_wt, na.rm = TRUE),
            avg_battery = mean(battery_power, na.rm = TRUE))

# Visualizar los datos
print(battery_weight_data)
## # A tibble: 4 × 3
##   screen_category avg_weight avg_battery
##   <fct>                <dbl>       <dbl>
## 1 Baja                  138.       1248.
## 2 Media-Baja            143.       1230.
## 3 Media-Alta            140.       1236.
## 4 Alta                  140.       1240.
# Gráfico de la relación
ggplot(data, aes(x = battery_power, y = mobile_wt, color = screen_category)) +
  geom_point(alpha = 0.6) +
  labs(title = "Relación entre Peso del Teléfono y Capacidad de la Batería\nControlando por Resolución de Pantalla",
       x = "Capacidad de Batería (mAh)",
       y = "Peso del Teléfono (g)",
       color = "Resolución de Pantalla") +
  theme_minimal()