Reporte de Análisis de Interacciones en Facebook

Evaluacion de la cuarta unidad para la materia de Análisis de Datos Sociales impartida por el Lic. Sergio Valdez Rodela.

Introducción

Este análisis examina las interacciones en Facebook de tres candidatos políticos: Maynez, Claudia y Xochilt. Se procesaron y analizaron datos sobre comentarios, likes y compartidos en sus publicaciones, generando diversas visualizaciones para identificar patrones y tendencias.

Reporte del codigo

Carga de Librerías y Definición del Directorio

Primero, se cargan las librerías necesarias para manejar y visualizar los datos, y se define la ruta del directorio que contiene los archivos CSV con los datos de cada candidato.

library(lubridate)
library(ggplot2)
library(tidyr)
library(patchwork)

directory <- "/Users/vicentcodes/Downloads/analisis/"
  • lubridate: facilita el manejo de fechas y horas.
  • ggplot2: herramienta para crear gráficos.
  • tidyr: ayuda a reorganizar los datos.
  • patchwork: combina múltiples gráficos.

Lectura y Procesamiento de Datos

Se crearon dos funciones principales: read_data y process_data.

read_data

Esta función lee un archivo CSV, convierte la columna de tiempo a un formato adecuado y ajusta la hora restando 6 horas (posiblemente para corregir la zona horaria). También convierte las interacciones (comentarios, likes y compartidos) a números.

read_data <- function(filename) {
  data <- read.csv(paste0(directory, filename))
  data$time <- ymd_hms(data$time)
  data$time_adjusted <- data$time - hours(6)
  data$hour <- hour(data$time_adjusted)
  data$shares <- as.numeric(data$shares)
  data$comments <- as.numeric(data$comments)
  data$likes <- as.numeric(data$likes)
  return(data)
}

process_data

Esta función selecciona las columnas de interés (hora, comentarios, likes y compartidos) del conjunto de datos.

process_data <- function(data) {
  selected_data <- data[, c("hour", "comments", "likes", "shares")]
  return(selected_data)
}

Se aplican estas funciones para leer y procesar los datos de cada candidato:

data_maynez <- read_data("Maynez.csv")
data_claudia <- read_data("Claudia.csv")
data_xochilt <- read_data("Xochilt.csv")
View(data_claudia)

processed_data_maynez <- process_data(data_maynez)
processed_data_claudia <- process_data(data_claudia)
processed_data_xochilt <- process_data(data_xochilt)

Gráficas de Interacciones por Hora

Para analizar las interacciones por hora, se procesan los datos y se generan gráficos de líneas para cada candidato.

Procesamiento de Datos por Hora

Esta función calcula el total de likes, comentarios y compartidos por hora del día.

procesar_datosInteracciones <- function(data) {
  data$shares <- as.numeric(data$shares)
  data$comments <- as.numeric(data$comments)
  data$likes <- as.numeric(data$likes)
  data$time <- ymd_hms(data$time)
  data$time_adjusted <- data$time - hours(6)
  data$hour <- hour(data$time_adjusted)
  total_likes <- tapply(data$likes, data$hour, sum, na.rm = TRUE)
  total_comments <- tapply(data$comments, data$hour, sum, na.rm = TRUE)
  total_shares <- tapply(data$shares, data$hour, sum, na.rm = TRUE)
  hourly_data <- data.frame(
    hour = as.numeric(names(total_likes)),
    total_likes = total_likes,
    total_comments = total_comments,
    total_shares = total_shares
  )
  hourly_data_long <- hourly_data %>%
    pivot_longer(cols = c(total_likes, total_comments, total_shares), 
                 names_to = "interaction_type", values_to = "count")
  return(hourly_data_long)
}

Creación de Gráficas

Esta función crea un gráfico de líneas para visualizar las interacciones por hora.

Interaccionesgrafica <- function(data_long, titulo) {
  ggplot(data_long, aes(x = hour, y = count, color = interaction_type, group = interaction_type)) +
    geom_line() +
    geom_point() +
    labs(title = titulo,
         x = "Hora del Día",
         y = "Número de Interacciones",
         color = "Tipo de Interacción") +
    theme_minimal() +
    scale_x_continuous(breaks = 0:23)
}

Se procesan los datos y se generan las gráficas:

hourly_data_maynez <- procesar_datosInteracciones(data_maynez)
hourly_data_claudia <- procesar_datosInteracciones(data_claudia)
hourly_data_xochilt <- procesar_datosInteracciones(data_xochilt)

maynezInteracciones <- Interaccionesgrafica(hourly_data_maynez, "Interacciones por Hora en Facebook de Maynez")
claudiaInteracciones <- Interaccionesgrafica(hourly_data_claudia, "Interacciones por Hora en Facebook de Claudia")
xochiltInteracciones <- Interaccionesgrafica(hourly_data_xochilt, "Interacciones por Hora en Facebook de Xochilt")

Gráficas de Dispersión

Se crean gráficos de dispersión para visualizar la relación entre comentarios, likes y compartidos.

Creación de Gráficas de Dispersión

Esta función genera un gráfico de dispersión para ver cómo se relacionan dos variables (por ejemplo, comentarios y likes).

Eliminación de Outliers

Se creó una función para eliminar valores atípicos (outliers), que pueden distorsionar el análisis. Utiliza el rango intercuartílico (IQR) para identificar y eliminar estos valores.

remove_outliers <- function(data, cols) {
  outlier_free <- data
  for (col in cols) {
    q1 <- quantile(data[[col]], 0.25)
    q3 <- quantile(data[[col]], 0.75)
    iqr <- q3 - q1
    lower <- q1 - 1.5 * iqr
    upper <- q3 + 1.5 * iqr
    outlier_free <- outlier_free[!(data[[col]] < lower | data[[col]] > upper), ]
  }
  return(outlier_free)
}

Aplicamos esta función a los datos procesados:

filtered_data_maynez <- remove_outliers(processed_data_maynez, c("comments", "likes", "shares"))
filtered_data_claudia <- remove_outliers(processed_data_claudia, c("comments", "likes", "shares"))
filtered_data_xochilt <- remove_outliers(processed_data_xochilt, c("comments", "likes", "shares"))
plotComent <- function(data, title) {
  ggplot(data, aes(x = comments, y = likes)) +
    geom_point() +
    labs(title = title,
         x = "Número de Comentarios",
         y = "Número de Likes")
}


plotCompar <- function(data, title) {
  ggplot(data, aes(x = shares, y = likes)) +
    geom_point() +
    labs(title = title,
         x = "Número de Compartidos",
         y = "Número de Likes")
}

Gráficas de Pastel

Para visualizar la proporción de interacciones totales por candidato, se crean gráficas de pastel.

Preparación de Datos Combinados

Se combinan los datos de todos los candidatos en un solo conjunto de datos.

combined_data <- rbind(
  cbind(processed_data_maynez, candidate = "Maynez"),
  cbind(processed_data_claudia, candidate = "Claudia"),
  cbind(processed_data_xochilt, candidate = "Xochilt")
)

Creación de Gráficas de Pastel

Esta función genera una gráfica de pastel para mostrar la proporción de una interacción específica (likes, comentarios o compartidos) por candidato.

TopInteraccionesGrafica <- function(interaction_data, interaction_type) {
  total_interactions <- aggregate(interaction_data ~ candidate, combined_data, sum)
  
  pie_chart <- ggplot(total_interactions, aes(x = "", y = interaction_data, fill = candidate)) +
    geom_bar(stat = "identity", width = 1) +
    geom_text(aes(label = paste(candidate, "\n", interaction_data), color = candidate),
              position = position_stack(vjust = 0.5), size = 4) +
    coord_polar("y", start=0) +
    labs(title = paste("Total de", interaction_type, "por Candidato"),
         fill = "Candidato",
         y = paste("Número Total de", interaction_type)) +
    theme_void() +
    scale_fill_manual(values = c("Maynez"

 = "#ee7e1d", "Claudia" = "#753232", "Xochilt" = "#008cce")) +
    scale_color_manual(values = c("Maynez" = "white", "Claudia" = "white", "Xochilt" = "white")) +
    theme(legend.position = "none")
  
  return(pie_chart)
}

likes_pie <- TopInteraccionesGrafica(combined_data$likes, "Likes")
comments_pie <- TopInteraccionesGrafica(combined_data$comments, "Comentarios")
shares_pie <- TopInteraccionesGrafica(combined_data$shares, "Compartidos")

Analisis de la informacion

Interacciones en publicaciones por hora

La presente seccion tiene como objetivo mostrar a que hora del dia los candidatos presidenciales tienen mas interacciones, desglosado en tres tipos de interacción: comentarios, me gusta y comparticiones. El analisis se muestran se forma indivudual para cada candidato. En el eje Y de las graficas se muestran el numero total de interacciones sumado la cantidad de me gustas, comentarios y compartidos.

Maynez

El pico más notable de interacciones ocurre alrededor de las 6 de la mañana, donde los me gusta alcanzan su máximo con cerca de 80,000 interacciones, mientras que los comentarios y comparticiones se mantienen relativamente bajos en comparación. Otro pico significativo en los me gusta se observa alrededor de las 13 a 16 horas, seguido de otro aumento notable alrededor de las 21 horas.

La explicación plausible para estos patrones puede estar relacionada con los hábitos diarios de los usuarios. El pico temprano en la mañana podría corresponder a personas revisando sus redes sociales al despertar o camino al trabajo. El aumento alrededor del mediodía podría estar asociado con la pausa para el almuerzo, mientras que el pico en la noche podría coincidir con el tiempo libre después del trabajo o la cena.

La mayor cantidad de me gusta en comparación con los comentarios y compartidos podría sugerir que es más fácil y rápido para los usuarios interactuar con un simple me gusta o reaccion en lugar de escribir un comentario o decidir compartir una publicación. Este comportmiento se repite con todos los candidatos.

Claudia

Los picos de mas interacciones de claudia son demasiado consisntes, al derredor de las 10 AM 17 y 22 horas son donde mas interacciones tiene, pero cabe destacar que en cuanto a los me gusta, a las 10 y 22 horas tiene un numero muy similar de me gustas un poco superior a los 125,000, por lo que se puede deducir que son las horas en las que sus simpatizantes mas consntantes estan mas activos en las redes de claudia. Sin embargo, las hora mas popular y en la que tiene mejores resultados es las 17 horas, donde los me gusta llegan hasta los 250,000.

Los comentarios y compartidos durante todas las horas son practicamente iguales y no hay demasiada variacion en algunos casos llegan a ser iguales. El hecho que los comentarios y compartidos asi como que los me gustas en ciertas horas llegen a ser muy similares sugiere un comportamiento poco organico y dificlmente puede ser atribuido a la interaccion real de personas.

Xochilt

Las horas con mayor numero de interacciones en la pagina de Facebook son principalmente de las 12 a 13 horas con otro pico considerable a las 7 de la tarde. A diferencia de los otros candidatos, los comentarios y compartidos de la pagina de Xochilt no son son similares, de hecho pueden parecer mas organicos y respetar el orden de cuando se presentan los picos de interaccion.

Con base a los datos y a la grafica se puede concluir que el rango en que es preferible realizar las publicaciones en la pagina es desde las 12 a 14 y de 17 a 21 horas ya que seguramente los seguidores de Xochilt apoyan sus publicaciones cuando estan comiendo y al final del dia cuando terminan sus jornadas laborales.

Dispersion de comentarios-likes y compartidos-likes

Esta sección se analizara la posible relación entre las el número de likes con los compartidos y el número de compartidos de cada uno de los candidatos de acuerdo con graficas que dispersión que permitan interpretar los datos.

Maynez Dispersion

El análisis de las gráficas de dispersión “Comentarios vs Likes” y “Likes vs Compartidas” en las publicaciones de Maynez en Facebook revela patrones interesantes, en ambas gráficas muestran una correlación positiva clara entre el número de comentarios y el número de me gusta hasta aproximadamente 300 comentarios. Esto sugiere que las publicaciones que generan discusiones también tienden a recibir más me gusta, reflejando una apreciación general por parte de los usuarios. Sin embargo, después de este umbral de 300 comentarios, la relación se debilita y se observa una estabilización o incluso una ligera disminución en los me gusta.

Este fenómeno puede indicar que las publicaciones con un gran volumen de comentarios pueden estar polarizando o generando debates intensos, donde los usuarios prefieren interactuar comentando en lugar de dar me gusta.

Claudia Dispersion

Existe una relación positiva entre el número de comentarios y la cantidad de likes, donde generalmente, a medida que aumentan los comentarios, también lo hacen los likes. No obstante, hay excepciones en las que un alto número de comentarios no se traduce en muchos likes, lo que sugiere que otros factores, como la calidad o relevancia del contenido, influyen en la interacción.

En cuanto a la relación entre el número de likes y el número de compartidas, también se observa una tendencia positiva: a medida que aumentan las compartidas, tienden a aumentar los likes. Sin embargo, hay variabilidad en esta relación, ya que algunas publicaciones pueden recibir muchas compartidas, pero pocos likes, y otras pueden tener una alta correlación entre ambos.

En ambos casos la mayor relación que existen entre las variables ocurren debajo del rango de los 10,000 likes por lo que se puede deducir que en cuando la publicación se vuelve popular esta deja ser compartida o la gente deja de comentar. Este fenómeno también explicararia la baja cantidad de interacciones en cuanto a comentarios y compartidas que tiene la candidata del oficialismo si los comparamos con sus números de likes.

Xoxhilt Dispersion

Los datos de Xochilt muestra un compartimiento muy similar al de los otros candidatos, por debajo de los 500 compartidos y los 600 comentarios existen una clara relación con el número de likes, donde a mayor número de comentarios y compartidos, mayor es el número de likes.

La relación se rompe o es más difusa cuando los comentarios y compartidos superan los 500 y 600 respectivamente ya en las graficas después de estas cifras existen puntos muy separados en lo que no puede establecerse una relación muy clara.

Top Likes, Comentarios y compartidos

En las siguientes graficas se analizará mediante graficas de pastel que candidato tiene un mayor número de likes, comentarios y compartidas.

Likes

De acuerdo con la información de la grafica podemos ver una clara y holgada ventaja de Claudia con más del 50% de ventaja y con 1345849 likes como suma en todas sus publicaciones.

Compartidos

De cuando con la grafica Claudia vuelve a tener una gran ventaja frente a los otros candidatos donde ni sumados logran obtener ni el 50% del total.

Comentarios

Esta es la unica grafica en que los candidatos de la opisicion logran obtener mas del 50% de las interacciones de los comentarios destacando Xochilt que tiene cerca de los 100,000 comentarios, aunque claudia aun tiene una clara ventaja frente a los demas.

Graficas y funciones

print(maynezInteracciones) 
print(claudiaInteracciones)
print(xochiltInteracciones)

print(plotComent(filtered_data_maynez, "Dispersión de Comentarios vs
Likes (Maynez)")) 

print(plotComent(filtered_data_claudia, "Dispersión
de Comentarios vs Likes (Claudia)"))

print(plotComent(filtered_data_xochilt, "Dispersión de Comentarios vs
Likes (Xochilt)"))


print(plotCompar(filtered_data_maynez, "Dispersión de Likes vs
Compartidas (Maynez)")) 

print(plotCompar(filtered_data_claudia,
"Dispersión de Likes vs Compartidas (Claudia)"))

print(plotCompar(filtered_data_xochilt, "Dispersión de Likes vs
Compartidas (Xochilt)"))


print(likes_pie) 
print(comments_pie) 
print(shares_pie)

Conclusión

El análisis de interacciones en Facebook de los candidatos políticos Maynez, Claudia y Xochilt revela distintos patrones de engagement. Maynez alcanza los picos de interacciones más altos en la mañana, al mediodía y por la noche, sugiriendo que sus seguidores están activos al despertar, durante el almuerzo y al finalizar el día. Claudia tiene picos de interacción a las 10 AM, 5 PM y 10 PM, con un comportamiento de interacción que podría no ser completamente orgánico. Xochilt muestra picos de interacción más orgánicos y concentrados entre las 12-1 PM y 7 PM.

En cuanto a la relación entre comentarios, likes y compartidos, Maynez y Xochilt muestran una correlación positiva hasta ciertos umbrales, mientras que Claudia tiene una relación positiva más variable, indicando que otros factores influyen en su engagement.

En términos de interacciones totales, Claudia domina claramente en likes y compartidos, pero Maynez y Xochilt logran captar una mayor proporción de comentarios, sugiriendo un mayor nivel de discusión y participación activa entre sus seguidores. Claudia lidera en cantidad de interacciones totales, mientras que Maynez y Xochilt muestran un engagement más distribuido y posiblemente más genuino. Estos resultados ofrecen una visión útil para entender mejor cómo los candidatos logran interactuar con sus seguidores en las redes sociales.