Estimar, de forma fiable y reproducible, qué porcentaje de las cuentas en la base followers de un usuario son bots o cuentas falsas (fantasmas, lotes comprados), articulando señales débiles en un score ponderado y reportando un rango de estimación con su intervalo de confianza.
username followers_count statuses_count account_created_at (ISO 8601) ID de cuenta
Todo el sistema descrito aquí constituye la fuente de verdad: los scripts SQL de la Fase 3 deben corresponderse 1:1 con esta documentación, y cualquier desvío debe justificarse explícitamente.
Las redes sociales son una fuente primaria de noticias e información susceptible de ser manipulada. Los social bots actúan como "ejércitos coordinados" capaces de amplificar desinformación, propaganda y falsas tendencias Metodológico [A9]. La compra y venta de seguidores en volumen es un mercado sombra que infla métricas para hacer parecer influyentes a cuentas e influencers, y puede ser redirigido a fines de desinformación Contexto [B3].
Los bots son a su vez un habilitador técnico de campañas de manipulación de la opinión pública (troll farms y redes de cuentas falsas) Contexto [B1], y la manipulación de la conversación digital importa en términos democráticos porque las plataformas son hoy el entorno clave donde ocurren las prácticas de desinformación Contexto [B2].
Desde lo empírico, según la bibliografía analizada, entre el 9% y el 15% de las cuentas activas de Twitter son bots [A2]. Esta cifra proviene de estimaciones de 2017 (hace más de 9 años), por lo que debe leerse como referencia histórica orientativa, no como valor actual. Es nuestro benchmark de comparación: si la cuenta auditada queda por encima o por debajo de ese rango, contrastamos contra lo que era esperable en la plataforma en aquel periodo.
"Our estimates suggest that between 9% and 15% of active Twitter accounts are bots." (estimación de 2017, referencia histórica)
Siguiendo el marco conceptual de Gorwa & Guilbeault [A7], no tratamos el resultado como binario ("bot o no"). Distinguimos tipos de cuenta, porque "bot" no es una categoría única y los tipos tienen señales distintas. La multiclasificación (no binaria) también es defendida por Zago et al. [A9].
| Categoría | Definición | Señales dominantes |
|---|---|---|
| Bot activo | Cuenta automatizada con actividad anómala (spam, amplificación) | posts/día extremos; actividad "incesante" [A1][A4] |
| Fantasma | Cuenta sin vida ni interacción (inactividad crónica) | 0 posts y/o 0 followers persistentes en cuentas viejas |
| Lote comprado | Cuenta perteneciente a una camada coordinada (account farm) | cohorte de fecha de creación + coherencia interna [A3][A6] |
| Sospechoso | Acumula señales débiles combinadas sin un tipo definido | score ponderado supera umbral |
| Limpia | Sin señales relevantes | score bajo |
Está tipología modera la lectura del resultado: no todo "bot" es malicioso (hay bots legítimos de difusión de noticias) y los cyborgs (cuenta con intervención humana parcial) escapan a cualquier detector basado en features [A1][A7]. Por eso además del % global, reportamos el desglose por categoría.
Las features derivadas de nuestros 5 campos se agrupan en las categorías consolidamente reconocidas por la literatura: user related (username, edad de cuenta), friendship (seguidores), shared content (posts) y time-related [A9]. La literatura converge en que la metadata de usuario es de lo más predictivo [A1][A2].
julianday('now') - julianday(account_created_at).statuses_count / días_antiguedad: feature top confirmada [A8]."bots usually have less followers and more followees" [A4]. Requiere friends_count (no en el esquema base). Se marca como feature ausente que mejoraría el sistema si se añadiera (ver Limitaciones).
Los IDs tipo snowflake codifican el momento de creación. IDs consecutivos o muy cercanos entre cuentas del mismo usuario indican registro en ráfaga, señal de lote comprado más fuerte que la fecha declarada [A3][A6].
| Señal | Paper(s) |
|---|---|
| Antigüedad / fecha de creación | Ferrara 2016 [A1]; Varol 2017 [A2]; Bessi 2016 [A4] |
| Cohorte / lote (agrupación temporal de creación) | Cresci 2017 [A3]; USENIX 2013 [A6]; RTbust 2019 [A5]; SLR 2023 [A8] |
| Volumen de posts / posts por día | Bessi 2016 [A4]; SLR 2023 [A8] |
| Longitud y dígitos del username | Ferrara 2016 [A1]; Bessi 2016 [A4]; USENIX 2013 [A6]; SLR 2023 [A8] |
| Ratio followers/followees | Bessi 2016 [A4]; Varol 2017 [A2]; SLR 2023 [A8] |
| Segmentación por tipo | Gorwa & Guilbeault 2018 [A7]; Zago 2019 [A9] |
| Validación manual (human-in-the-loop) | Zago 2019 [A9] |
Los bots modernos pueden imitar el comportamiento humano de forma que ningún umbral simple es suficiente [A9], y ningún feature aislado identifica un bot [A8]. Por ello usamos un score acumulativo ponderado. Siguiendo a Cresci [A3], las señales de comportamiento colectivo / coordinación (cohortes, lotes) tienen el peso más alto, porque son las más robustas contra bots sofisticados; los rasgos de perfil individual son señales más débiles.
| Señal | Peso | Justificación |
|---|---|---|
| Cohorte anómala coherente | 3.0 | Comportamiento colectivo [A3][A6] |
| IDs en rango consecutivo (lote) | 3.0 | Registro en ráfaga [A3][A6] |
| 0 posts + cuenta > 1 año | 2.5 | Fantasma crónico confirmado por tiempo |
| posts/día > 50 | 2.0 | Capacidad de posteo "sobrehumana" [A1][A4] |
| < 90 días + (followers > 1000 o 0 posts) | 1.5 | Nuevo sin trayectoria [A1][A4] |
| 0 posts O 0 followers (una sola señal) | 1.0 | Débil (usuarios reales lurkean) |
| ≥4 dígitos en username | 0.75 | Rasgo de perfil, ruidoso [A4][A6] |
| username > 15 chars o prefijo compartido | 0.75 | Ídem [A1][A4] |
| Banda | Rango | Interpretación |
|---|---|---|
| Baja / limpia | < 1.5 | Sin señales relevantes |
| Dudoso | 1.5 – 2.9 | Señales débiles |
| Alto riesgo | ≥ 3.0 | Probable bot/fantasma/lote |
| Muy probable | ≥ 5.0 | Múltiples señales fuertes |
Importante: estos pesos son priors justificados por la literatura, no valores finales. Se calibran en la Fase 3 mediante validación manual (ver sección 7), iterando de v1 a v2, v3… Se mantiene un registro versionado de pesos para reproducibilidad.
Esta es la señal más robusta y prioritaria del sistema, porque se basa en comportamiento colectivo, no en features individuales fáciles de imitar [A3].
"a large enough group of spambots will still leave traces of automation, since they do have a common goal"
date(account_created_at).strftime('%Y-%W', account_created_at) (vendedores reposan stock).conteo > mediana_global + 3 × IQR (con sensibilidad alternativa usando P95/P99). Con millones de filas se usan percentiles robustos.
La cohorte solo se marca como anómala si además cumple coherencia interna: ≥50% con 0 posts, o ≥3 prefijos de username compartidos dentro del día. Esto distingue un "lote comprado" de un "día viral real" con mucha gente creándose cuentas.
Densidad de gaps entre IDs en rangos consecutivos / muy cercanos = registro en ráfaga → evidencia de lote más fuerte que la fecha declarada [A3][A6].
El score necesita calibración sobre datos reales y verificación por ojos humanos, en línea con el enfoque de aprendizaje activo con humano-en-el-bucle [A9].
ORDER BY RANDOM() LIMIT n por estrato, exportada a CSV para revisión.Principio: se reporta un rango calibrable, no un número falso de precisión, porque los datos disponibles y los métodos no garantizan un número exacto.
bio, profile_image, last_status_at ni friends_count → no aplicamos default-profile ni ratio followers/followees (dos features fuertes en la literatura [A2][A4]).A continuación, la bibliografía analizada, organizada por rol. Las marcas [An] corresponden a los documentos presentes en la carpeta Bibliografía.