diff --git a/examples/information/populations/colombia.json b/examples/information/populations/colombia.json new file mode 100644 index 0000000..d6b3c65 --- /dev/null +++ b/examples/information/populations/colombia.json @@ -0,0 +1,249 @@ +{ + "title": "Colombia Population Information", + "description": "A detailed overview of the population demographics, traits, and habits of Colombia.", + "source": "Synthesized from public data sources (DANE, World Bank, CIA, censuses) and a chat with GPT-4o", + "content": { + "Demographics": { + "Country": "Republic of Colombia", + "Population Size": "≈ 52.7 million (2024 est.)", + "Median Age": "≈ 31.5 years", + "Age Distribution": { + "0-14": "24.5%", + "15-24": "≈ 16%", + "25-54": "≈ 35%", + "55-64": "≈ 9%", + "65+": "11.4%" + }, + "Gender Distribution": { + "Male": "≈ 49.3%", + "Female": "≈ 50.7%" + }, + "Ethnic and Racial Composition": { + "Mestizo / Mixed": "≈ 49%", + "White / European descent": "≈ 37%", + "Black / Afro-Colombian": "≈ 10%", + "Indigenous": "≈ 4%", + "Other (Raizal, Palenquero, Rom, etc.)": "≈ 0.5–1%" + }, + "Educational Attainment": { + "Secondary school or higher": "≈ 70-80%", + "Tertiary / University degree or higher": "≈ 20-25%" + }, + "Household Income": { + "Median Income (monthly, approximate)": "COP 2,500,000 (indicative)", + "Distribution": { + "Low income (bottom quintile)": "≈ 20%", + "Lower middle": "≈ 25%", + "Middle": "≈ 25%", + "Upper middle": "≈ 20%", + "High income (top quintile)": "≈ 10%" + } + }, + "Geographic Distribution": { + "Urban": "≈ 77%", + "Rural": "≈ 23%", + "Major City Shares": { + "Bogotá": "≈ 15%", + "Medellín": "≈ 4%", + "Cali": "≈ 4%", + "Barranquilla": "≈ 2.5%", + "Cartagena": "≈ 2%" + } + }, + "Marital Status": { + "Never Married": "≈ 35%", + "Married or in union": "≈ 50%", + "Divorced / Separated": "≈ 8%", + "Widowed": "≈ 7%" + }, + "Employment Status": { + "Labor Force Participation Rate": "≈ 62%", + "Unemployment Rate (2025, urban average)": "≈ 8.8%" + }, + "Vital Statistics": { + "Life Expectancy": { + "Total": "≈ 74.9 years", + "Male": "≈ 71.3 years", + "Female": "≈ 78.7 years" + }, + "Fertility Rate (Total Fertility Rate)": "≈ 1.2 children per woman", + "Infant Mortality Rate": "≈ 11.7 per 1,000 live births" + }, + "Migration": { + "Net Migration Rate": "≈ –6.7 per 1,000 population (net outflow) in recent years", + "Refugee / Migrant Presence": "Significant Venezuelan migrant population (several hundred thousands to millions in recent years)" + } + }, + "Personality Traits": { + "Openness to Experience": { + "High": [ + "Bogotá", + "Medellín" + ], + "Low": [ + "Rural Andean zones", + "Orinoquía / Amazon region" + ] + }, + "Conscientiousness": { + "High": [ + "Coffee-axis departments (Quindío, Risaralda)", + "Bogotá suburbs" + ], + "Low": [ + "Remote rural Amazon zones", + "Frontier / isolated regions" + ] + }, + "Extraversion": { + "High": [ + "Caribbean coast (Cartagena, Barranquilla)", + "Pacific coastal towns" + ], + "Low": [ + "Interior highland rural zones" + ] + }, + "Agreeableness": { + "High": [ + "Cauca", + "Nariño", + "Antioquia rural areas" + ], + "Low": [ + "Highly urbanized zones under heavy social stress" + ] + }, + "Neuroticism": { + "High": [ + "Conflict-affected border departments", + "Urban peripheries with insecurity" + ], + "Low": [ + "Peaceful mid-size towns", + "Small Andean municipalities" + ] + } + }, + "Political Affiliation": { + "No strong party": "≈ 40%", + "Left / Progressive parties": "≈ 30%", + "Right / Conservative parties": "≈ 30%" + }, + "Religion": { + "Christian": { + "Total Christian": "≈ 87%", + "Catholic": "≈ 70.2%", + "Protestant / Evangelical / Other Christian": "≈ 16.8%" + }, + "Unaffiliated / No religion": "≈ 11.1%", + "Other religions (including indigenous beliefs, Islam, etc.)": "≈ 1.9%" + }, + "Occupations": { + "Agriculture, Forestry, Fishing": { + "Employment share": "≈ 13%", + "Annual Wage (indicative)": "COP 15,000,000" + }, + "Industry / Manufacturing": { + "Employment share": "≈ 25%", + "Annual Wage": "COP 25,000,000" + }, + "Construction": { + "Employment share": "≈ 10%", + "Annual Wage": "COP 22,000,000" + }, + "Services (trade, transport, hospitality, retail)": { + "Employment share": "≈ 30%", + "Annual Wage": "COP 20,000,000" + }, + "Professional / Academic / Administrative": { + "Employment share": "≈ 12%", + "Annual Wage": "COP 35,000,000" + }, + "Public sector / Government": { + "Employment share": "≈ 5%", + "Annual Wage": "COP 40,000,000" + } + }, + "Interests and Hobbies": { + "Soccer / Football fandom": "Very high (≈ 70%)", + "Music (especially regional, pop, urban)": "≈ 65%", + "TV / Streaming": "≈ 60%", + "Social Media Use": "≈ 70%", + "Outdoor Activities (hiking, rural trips, beach)": "≈ 40%", + "Reading": "≈ 35%", + "Dance / Cultural events": "≈ 30%", + "Cooking / Traditional cuisine": "≈ 50%" + }, + "Habits": { + "Health and Wellness": { + "Physical Activity": "Moderate (higher in rural areas)", + "Dietary Habits": { + "Frequent eating out": "Moderate in cities", + "Traditional staples (rice, beans, plantains)": "High share" + } + }, + "Financial Habits": { + "Informal savings / “guardaditos”": "Common", + "Microcredit / informal lending": "Widespread in lower income brackets" + }, + "Sleep Patterns": { + "Average sleep duration": "≈ 7 hours", + "Late night media use": "Frequent in urban zones" + }, + "Stress Management": { + "Unhealthy Coping": [ + "Excessive screen time", + "Consumption of processed snacks" + ], + "Healthy Coping": [ + "Walking / informal soccer", + "Family / social gatherings", + "Religious practices" + ] + }, + "Technology Use": { + "Smartphone Penetration": "High (≈ 80-90%)", + "Internet Access (urban)": "High (≥ 80%)", + "Social Media Usage": "Daily frequent" + } + }, + "Public Opinions": { + "Corruption as Major Problem": { + "Viewed as Very Big Problem": "≈ 65%", + "Source": "Latin American surveys / Transparency International" + }, + "Security / Insecurity": { + "Viewed as Very Big Problem": "≈ 60%", + "Source": "Latinobarómetro" + }, + "Unemployment / Economy": { + "Viewed as Very Big Problem": "≈ 55%", + "Source": "Latinobarómetro / national polls" + }, + "Health System / Access": { + "Viewed as Very Big Problem": "≈ 45%", + "Source": "National surveys" + }, + "Pension / Elderly Support": { + "Viewed as Very Big Problem": "≈ 50%", + "Source": "National social surveys" + }, + "Trust in Institutions (Congress, Judiciary, Police)": { + "Low trust": "≈ 50-60%", + "Moderate trust": "≈ 30%", + "High trust": "≈ 10-20%" + }, + "Perception of Democracy": { + "Democracy is functioning well": "≈ 30%", + "Democracy needs reforms": "≈ 50%", + "Democracy is failing": "≈ 20%" + }, + "Support for Social Policies (healthcare, education, redistribution)": { + "Strong support": "≈ 60-70%", + "Moderate support": "≈ 20-30%", + "Opposition": "≈ 10%" + } + } + } +} diff --git a/examples/information/populations/colombia_extra_info.txt b/examples/information/populations/colombia_extra_info.txt new file mode 100644 index 0000000..343835a --- /dev/null +++ b/examples/information/populations/colombia_extra_info.txt @@ -0,0 +1,139 @@ +Demografía básica: +- Población estimada: aproximadamente 52,7 millones (2024). +- Pirámide etaria: 24,5 % entre 0 y 14 años; 64,1 % entre 15 y 64 años; 11,4 % con 65 años o más. +- Esperanza de vida al nacer: ≈ 74,9 años (varones ≈ 71,3, mujeres ≈ 78,7). +- Tasa de fecundidad: ≈ 1,1 hijos por mujer. +- Migración neta: ≈ –6,7 personas por cada 1.000 habitantes. +- Urbanización: ≈ 77 % vive en zonas urbanas, 23 % en rurales. +- Composición étnica: afrocolombianos ≈ 9,3 %, indígenas ≈ 4,3 %, el resto mestizos, blancos u otros. +- Educación: niveles de secundaria y superior presentes, pero persistencia de rezagos educativos en zonas rurales. + +Dimensiones adicionales: + +GeneralAttitude: +1. Extremadamente optimista: percibe que el futuro traerá mejoras profundas en justicia, empleo y bienestar, incluso ante crisis estructurales. +2. Muy positiva: confía en que los esfuerzos colectivos pueden generar progreso sustancial aunque con lentitud. +3. Optimista moderada: reconoce retos importantes, pero espera avances graduales si hay voluntad política y social. +4. Esperanzada cauta: cree que los cambios son posibles, aunque con reservas, busca señales realistas antes de confiar plenamente. +5. Realista equilibrada: asume tanto fortalezas como debilidades del país; apuesta más por lo posible que por ideales extremos. +6. Levemente pesimista: ve que muchas dificultades persistirán, cree que los incrementos serán modestos. +7. Moderadamente negativa: espera que muchas promesas queden sin cumplir, anticipa retrocesos o estancamientos. +8. Pesimista crítica: considera que el país vive una crisis estructural; cree que las reformas superficiales tienen poca efectividad real. +9. Cínico escéptico: desconfía de discursos políticos y de promesas mediáticas; asume que muchos cambios son cosméticos. +10. Desencantado extremo: rechaza casi toda expectativa de mejora; considera que la institucionalidad está profundamente deteriorada. + +EducationLevel: +1. Totalmente analfabeto extremo: no sabe leer ni escribir y su lenguaje expresivo es muy limitado. +2. Oral funcional sin alfabetismo pleno: se expresa verbalmente bien, pero no puede emplear la lectura y escritura más allá de lo elemental. +3. Lectura muy básica: puede interpretar textos simples y realizar cálculos mínimos, pero con muchas restricciones de comprensión. +4. Primaria incompleta: asistió a algunos grados de educación primaria pero no completó el ciclo. +5. Primaria completa: dominó habilidades básicas de lectura, escritura y cálculo, aunque con posibles vacíos. +6. Secundaria incompleta: cursó educación media parcialmente, con conocimientos generales incompletos. +7. Secundaria completa / bachiller: finalizó educación media con conocimientos amplios básicos. +8. Técnico / tecnológico: obtuvo formación superior aplicada en áreas técnicas o tecnológicas. +9. Profesional universitario: posee título universitario de pregrado en alguna disciplina. +10. Investigador / académico avanzado: tiene maestría o doctorado, realiza investigación y domina métodos académicos rigurosos. + +CulinaryTastes: +1. Ultra tradicional rural: conserva recetas ancestrales locales sin fusiones ni experimentos. +2. Tradicional clásico urbano: consume platos nacionales reconocibles en sus versiones más clásicas. +3. Tradicional con leves adaptaciones: admite pequeñas variaciones en ingredientes o presentación sin alterar esencia. +4. Intermedio moderado: alterna entre tradicionales y modernos, buscando equilibrio. +5. Moderno con raíces: revisita platos autóctonos con ingredientes contemporáneos. +6. Moderno cosmopolita: incorpora fusiones internacionales, sabores exóticos e innovación culinaria. +7. Gourmet de autor: exige ingredientes de alta calidad, técnicas sofisticadas y presentaciones artísticas. +8. Extremadamente picante: disfruta platos intensamente sazonados, aun en recetas suaves por naturaleza. +9. Picante moderado: le agrada algo de especia, pero dentro de límites cómodos. +10. Sabor suave / mild lover: evita sabores fuertes y prefiere combinaciones delicadas. +11. Vegetariano / plant-based: basa su dieta mayormente en vegetales, legumbres y alternativas vegetales. +12. Carne-centrado: considera la carne como centro del plato; privilegia consumo frecuente de productos animales. + +ShoppingHabits: +1. Comprador ultra frecuente premium: visita tiendas (físicas o virtuales) muy a menudo, siempre en búsqueda de novedades de alta gama. +2. Comprador frecuente: hace compras regulares, sigue tendencias y cambia productos con cierta frecuencia. +3. Comprador mensual planificado: programa compras mensuales con lista clara y evita gastos impulsivos. +4. Comprador ocasional funcional: compra solo cuando hay necesidad concreta, sin interés en novedades. +5. Comprador impulsivo: adquiere productos por estímulos momentáneos, sin planificación previa. +6. Comprador reflexivo / comparador: investiga, compara precios, espera ofertas antes de decidir. +7. Comprador online habitual: prefiere plataformas digitales para la mayoría de sus compras, busca facilidad y entrega. +8. Comprador online ocasional: recurre al comercio electrónico solo en ciertos rubros específicos. +9. Comprador presencial tradicional: necesita ver, tocar o probar el producto antes de comprarlo en tienda física. +10. Frugal extremo: busca siempre la opción más económica, rechaza lujos innecesarios y prioriza el ahorro. +11. Moderadamente frugal: cuida su gasto, aprovecha ofertas, pero no se priva de bienes que considera valiosos. +12. Equilibrado consciente: balancea entre ahorro y disfrute; compra lo necesario y se da gustos de vez en cuando. +13. Comprador extravagante ocasional: adquiere productos costosos o de marca en ocasiones especiales, pero no siempre. +14. Extravagante recurrente: compra productos de lujo con frecuencia, valora el estatus asociado al consumo. + +HealthConsciousness: +1. Obsesivamente saludable: monitorea cada detalle de su dieta, ejercicio y estilo de vida; evita alimentos procesados de forma rigurosa. +2. Muy consciente: elige opciones saludables, investiga información nutricional y hace ejercicio con regularidad. +3. Consciente moderada: presta atención al bienestar, aunque no vive obsesionada con ello. +4. Neutral: no prioriza su salud ni la descuida del todo; consume lo que está disponible. +5. Indulgente ocasional: permite excesos en momentos especiales, pero trata de compensar después. +6. Indulgente habitual: su dieta frecuentemente incluye alimentos poco saludables; prioriza el placer del sabor. +7. Despreocupado total: no analiza ingredientes ni efectos a la salud; elige por sabor o conveniencia. +8. Orgánico comprometido: busca productos ecológicos, evitan pesticidas y prioriza alimentos poco procesados. +9. Orgánico ocasional: selecciona productos orgánicos si no implican un costo muy alto o complicaciones. +10. Convencional dominante: compra mayormente productos industriales, ve lo orgánico como un lujo o alternativa. + +AttitudeTowardsNewProducts: +1. Explorador audaz: adopta lo nuevo sin temor, le atraen lanzamientos, innovaciones y primeras versiones. +2. Curioso confiado: dispuesto a probar novedades si cuenta con referencias confiables o reseñas positivas. +3. Probador estratégico: pruebas de nuevos productos cuando hay ofertas o recomendaciones confiables. +4. Tímido experimental: acepta innovaciones solo si observa que ya otros las usan o se promocionan fuertemente. +5. Neutral: no busca productos nuevos, pero tampoco los descarta; los adopta si le convienen. +6. Escéptico cauteloso: requiere evidencias claras, comparaciones y seguridad antes de arriesgarse. +7. Conservador reacio: prefiere lo ya probado, evita cambiar productos que funcionan. +8. Rechazo habitual: tiende a no adquirir productos nuevos, considera que muchas innovaciones no valen la pena. +9. Extremo rechazo: resiste con desconfianza todo lo nuevo; no cambia lo conocido aunque haya mejoras teóricas. +10. Adoptador tardío curioso: espera varias versiones del producto, observa su desempeño y luego decide si adoptarlo. + +CulturalInfluences: +1. Completamente local: su identidad cultural se sostiene casi exclusivamente en tradiciones locales, con escasa exposición externa. +2. Local dominante con apertura leve: curtido en su cultura regional, pero con aceptación moderada de influencias foráneas si no amenazan su esencia. +3. Equilibrio local-global: fusiona elementos tradicionales con tendencias globales de modo armonioso. +4. Híbrido cultural activo: vive con naturalidad la conjunción de lo local y lo global en sus expresiones diarias. +5. Global con raíces: adopta tendencias internacionales, pero mantiene símbolos culturales del origen como parte identitaria. +6. Global contemporáneo: se identifica más con expresiones culturales globales que con tradiciones locales explícitas. +7. Tradicional conservador frente a globalización: valora conservar tradiciones frente a las influencias externas que ve uniformizadoras. +8. Culturalmente homogéneo: su entorno cultural es bastante uniforme; pocas diferencias culturales internas visibles. +9. Culturalmente diverso: convive con múltiples corrientes culturales (locales, afro, indígenas, globales) y las asimila. +10. Cosmopolita extremo: su referencia cultural es amplia, global, con poca fijación rígida en tradición local. + +TravelHabits: +1. Viajero internacional muy frecuente: realiza varios viajes al extranjero al año, por ocio o negocio, con familiaridad con rutas internacionales. +2. Viajero internacional ocasional: viaja fuera del país uno o dos veces en periodos largos, eligiendo destinos de buen balance costo-beneficio. +3. Viajero nacional ferviente: recorre departamentos del país con regularidad, escapadas frecuentes dentro del territorio nacional. +4. Viajero nacional ocasional: viaja dentro del país en vacaciones u ocasiones especiales, no con frecuencia alta. +5. Explorador local: se moviliza solo en municipios o departamentos cercanos para fines recreativos; viajes cortos y cercanos. +6. Homebody moderado: sale de su ciudad en contadas ocasiones, prefiere mantenerse cerca de su entorno habitual. +7. Homebody extremo: casi no se desplaza fuera de su lugar habitual; se siente cómodo en su zona inmediata. +8. Aventurero arriesgado: elige destinos poco convencionales, travesías con desafíos logísticos o rutas no usuales. +9. Planificador cauteloso: viaja, pero con itinerarios bien pensados, reservas anticipadas y control documental, evitando riesgos. +10. Neófobo turístico: tiene temor a lo desconocido; prefiere evitar vuelos, nuevos alojamientos o destinos poco seguros. + +CulturalBackground: +1. Muy homogéneo tradicional: su entorno familiar y comunitario culturalmente uniforme, con escasa mezcla étnica visible. +2. Tradicional con leve pluralidad: predomina su cultura local, pero hay algo de contacto con otras tradiciones o herencias culturales. +3. Moderadamente diverso: presencia significativa de influencias indígenas, afro o migrantes en su entorno cultural cercano. +4. Mestizaje activo: mezcla de raíces indígenas, africanas y europeas visible y compartida en su identidad. +5. Entorno multicultural urbano: vive en ciudades con alta diversidad cultural, presencia de migrantes y pluralidad étnica. +6. Fondo cultural globalizado: su exposición cultural diaria incluye influencias internacionales frecuentes. +7. Tradicional pero con apertura cultural: fuerte apego a sus raíces, pero voluntad de incorporar expresiones externas sin perder identidad. +8. Diversidad interna fuerte: en su casa o círculo cercano conviven distintas tradiciones culturales simultáneas. +9. Cosmopolita cultural: se identifica con múltiples fuentes culturales locales e internacionales. +10. Fragmentado cultural extremo: varias referencias culturales sin que una domine claramente; identidad híbrida fluida. + +Lifestyle / modo de vida: +1. Activo extremo: rutina diaria marcada por deporte intenso, traslados constantes y vida social muy dinámica. +2. Activo habitual: mantiene ejercicio regular, movilidad constante y actividades recreativas frecuentes. +3. Moderadamente activo: alterna entre días activos y días de descanso; no practica deporte intensamente siempre. +4. Equilibrado: mezcla días con actividad y días de reposo; evita extremos de agotamiento o inmovilidad. +5. Sedentario con movilidad mínima: se mueve solo lo necesario (trabajo, traslados rutinarios); poca actividad recreativa. +6. Sedentario habitual: la mayoría del tiempo lo pasa en actividades estáticas (leer, ver televisión, trabajar en escritorio). +7. Sedentario extremo: casi no realiza esfuerzos físicos voluntarios; vida predominantemente inmóvil. +8. Urbano cosmopolita: vive en grandes ciudades con ritmo acelerado, oferta cultural, transporte público y densidad urbana. +9. Rural tradicional: habita zonas no urbanas, vinculado a la naturaleza, actividades agrícolas o comunitarias, baja densidad. +10. Minimalista austero: pocas posesiones, consumo moderado, vive con lo esencial y evita la ostentación. +11. Extravagante ostentoso: exhibe bienes, vehículos, viajes y estilos visibles; su vida refleja un alto consumo como parte de su identidad. + diff --git a/examples/tendencia-compra-ecomerce.ipynb b/examples/tendencia-compra-ecomerce.ipynb new file mode 100644 index 0000000..28ca426 --- /dev/null +++ b/examples/tendencia-compra-ecomerce.ipynb @@ -0,0 +1,342 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "## Ejemplo de Tiny-tropue para un ejecicio tendencia de compra usando población Colombia" + ], + "metadata": { + "id": "dY_ZqBGP7quJ" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "rSUP1ehklnZa" + }, + "outputs": [], + "source": [ + "import json\n", + "import sys\n", + "import os\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "sys.path.insert(0, '..')\n", + "\n", + "import tinytroupe\n", + "from tinytroupe import config_manager\n", + "from tinytroupe.agent import TinyPerson\n", + "from tinytroupe.environment import TinyWorld\n", + "from tinytroupe.factory import TinyPersonFactory\n", + "from tinytroupe.validation import TinyPersonValidator\n", + "from tinytroupe import control\n", + "\n", + "from tinytroupe.extraction import ResultsExtractor\n", + "from tinytroupe.profiling import Profiler\n", + "\n", + "from tinytroupe.validation import SimulationExperimentEmpiricalValidator, SimulationExperimentDataset, validate_simulation_experiment_empirically\n", + "\n", + "from google.colab import userdata\n", + "\n", + "os.environ['OPENAI_API_KEY']=userdata.get('openai_api')\n" + ] + }, + { + "cell_type": "code", + "source": [ + "target_nationality = \"Colombia\"\n", + "population_size = 50\n", + "\n", + "with open (\"/content/drive/MyDrive/info_colombia/colombia_extra_info.txt\", \"r\") as f:\n", + " additional_demographic_specification = f.read()" + ], + "metadata": { + "id": "2DDZmQ5r8uSi" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "compute_other_nationalities = True\n", + "\n", + "interviewer_introduction = \"\"\"\n", + "Hola, soy parte de un equipo que estudia cómo las personas toman decisiones de compra en línea.\n", + "Queremos conocerte un poco mejor. ¿Puedes contarnos quién eres, cómo sueles comprar en internet,\n", + "y qué tipo de productos buscas más a menudo? También cuéntanos tus intereses, estilo de vida,\n", + "y si te consideras más práctico o más emocional al momento de comprar.\n", + "\"\"\"\n", + "\n", + "interviewer_main_question = \"\"\"\n", + "Imagina que estás buscando comprar una lavadora. Encuentras dos opciones idénticas:\n", + "\n", + "1. En una tienda poco conocida (más barata), sin garantía clara, sin calificaciones ni respaldo.\n", + "2. En Mercado Libre (más costosa), pero con beneficios como entrega garantizada, pago a cuotas sin interés, devolución fácil, y respaldo de un vendedor con excelente reputación.\n", + "\n", + "¿Cuál elegirías y por qué? Por favor, responde con tu elección (Opción 1 u Opción 2) y explica tus motivos con detalle.\n", + "Queremos entender cómo piensas al tomar decisiones como esta.\n", + "\"\"\"\n", + "\n", + "inner_monologue = \"\"\"\n", + "Voy a pensar con honestidad, como si esta situación me pasara de verdad.\n", + "Consideraré mi presupuesto, mis experiencias pasadas, mis preferencias personales, y la importancia que le doy\n", + "a la seguridad al comprar. No me limitaré a responder de forma neutral: si tengo una opinión clara, la diré.\n", + "También seré coherente con mi estilo de vida, nivel de confianza en las tiendas online, y cómo valoro los beneficios\n", + "extra frente al precio. Pensaré primero… y luego hablaré con sinceridad.\n", + "\"\"\"\n", + "\n", + "\n" + ], + "metadata": { + "id": "dCeLW6t68uQg" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "results_extractor = ResultsExtractor(\n", + " extraction_objective=(\n", + " \"Determinar cuál opción de compra prefiere cada persona: \"\n", + " \"Opción 1 (más barata sin respaldo) u Opción 2 (más costosa con beneficios de Mercado Libre).\"\n", + " ),\n", + " situation=(\n", + " \"El agente fue consultado sobre cuál oferta preferiría al comprar una lavadora: \"\n", + " \"una opción más barata sin respaldo (Opción 1), o una más costosa con beneficios como garantía, entrega, y reputación (Opción 2). \"\n", + " \"El agente debía indicar su elección entre '1' o '2' y justificarla.\"\n", + " ),\n", + " fields=[\"name\", \"response\", \"justification\"],\n", + " fields_hints={\n", + " \"response\": (\n", + " \"Debe ser exactamente '1', '2' o 'N/A' (si no se puede determinar la elección). \"\n", + " \"No aceptes otros formatos como 'uno' o 'dos'.\"\n", + " )\n", + " },\n", + " verbose=True\n", + ")" + ], + "metadata": { + "id": "6XZP7Gxf-RAv" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "# Función de analísis de resultados\n", + "def analizar_resultados_simulacion(df):\n", + " \"\"\"\n", + " Analiza las respuestas simuladas sobre preferencias de compra entre dos opciones:\n", + " Opción 1: Más barata, sin respaldo.\n", + " Opción 2: Más costosa, con beneficios (Mercado Libre).\n", + " \"\"\"\n", + "\n", + " # Asegurar que la columna de respuesta sea string\n", + " df[\"response\"] = df[\"response\"].astype(str)\n", + "\n", + " # Contar respuestas\n", + " counts = df[\"response\"].value_counts()\n", + " total = counts.sum()\n", + "\n", + " porcentaje_opcion1 = counts.get(\"1\", 0) / total\n", + " porcentaje_opcion2 = counts.get(\"2\", 0) / total\n", + " porcentaje_na = counts.get(\"N/A\", 0) / total\n", + "\n", + " # Mostrar análisis\n", + " print(\"📊 Resultados de la Simulación de Preferencia de Compra\")\n", + " print(\"-----------------------------------------------------\")\n", + " print(f\"Total de respuestas válidas: {total}\")\n", + " print(f\"Opción 1 (más barata sin respaldo): {porcentaje_opcion1:.2%}\")\n", + " print(f\"Opción 2 (más costosa con beneficios): {porcentaje_opcion2:.2%}\")\n", + " print(f\"Respuestas no válidas o ambiguas (N/A): {porcentaje_na:.2%}\")\n", + " print()\n", + "\n", + " # Veredicto simple basado en proporción mayoritaria\n", + " if porcentaje_opcion2 > porcentaje_opcion1:\n", + " print(\"✅ Veredicto: La mayoría de personas simuladas prefiere la oferta con respaldo (Mercado Libre).\")\n", + " elif porcentaje_opcion1 > porcentaje_opcion2:\n", + " print(\"⚠️ Veredicto: La mayoría de personas simuladas prefiere la opción más barata sin respaldo.\")\n", + " else:\n", + " print(\"🤔 Veredicto: Las preferencias están divididas o no hay diferencia clara.\")" + ], + "metadata": { + "id": "AygUosdp-Q9Q" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "factory = TinyPersonFactory.create_factory_from_demography(\"/content/drive/MyDrive/info_colombia/colombia.json\",\n", + " population_size=population_size,\n", + " additional_demographic_specification=additional_demographic_specification)\n" + ], + "metadata": { + "id": "3-j8epnrmFzQ" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Contrucción de audiencia\n" + ], + "metadata": { + "id": "U9qwYImp_MuB" + } + }, + { + "cell_type": "code", + "source": [ + "people = factory.generate_people(population_size, verbose=True)\n" + ], + "metadata": { + "id": "-8II1CwE-7dP" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "factory.sampling_dimensions" + ], + "metadata": { + "id": "HN1JPcng-7Zd" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "### Estadisticas de la población creada\n", + "profiler = Profiler()\n", + "profiler.profile(people)\n", + "### Para guardar en memria los datos creados de la población\n", + "control.checkpoint()\n", + "\n", + "# Ambiente para la audiencia sin discusiones entre ellos:\n", + "\n", + "audiencia = TinyWorld(f\"Target audience ({target_nationality})\", people, broadcast_if_no_target=False)\n", + "\n" + ], + "metadata": { + "id": "vcF-F9CB-7VC" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Desarrollo del experimento" + ], + "metadata": { + "id": "eV8hm559AIPG" + } + }, + { + "cell_type": "code", + "source": [ + "audiencia.broadcast(interviewer_introduction)\n", + "audiencia.broadcast(interviewer_main_question)\n", + "audiencia.broadcast_thought(inner_monologue)" + ], + "metadata": { + "id": "-ocsY9mwAHr4" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "## Generación de las disertaciones\n", + "audiencia.run(2)\n", + "\n", + "## Control de memoria\n", + "control.checkpoint()\n", + "\n" + ], + "metadata": { + "id": "rH7apg7rmFvF" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Resultados" + ], + "metadata": { + "id": "VIDavE26Awq7" + } + }, + { + "cell_type": "code", + "source": [ + "results = results_extractor.extract_results_from_agents(people)\n", + "\n", + "filtered_results = [item for item in results if isinstance(item, dict)]\n", + "## Concersion de los resultados\n", + "df = pd.DataFrame(filtered_results)\n", + "df[\"response\"].value_counts()" + ], + "metadata": { + "id": "f9CYaB51Azwr" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Graficas de los rultados" + ], + "metadata": { + "id": "jaRj55kSBXCU" + } + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "p-XCFPFWBV3M" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "rrCIuCitBVxX" + }, + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file