#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")
#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)")
#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)")
# 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)")
#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")
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")
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
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
#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()