Pular para o conteúdo principal

Motores matemáticos

Os motores concentram toda a estatística do PersonaDB. Eles vivem em persona_db/engines/, não conhecem tabelas SQL e são testados isoladamente — o que permite recalibrar um modelo sem tocar em nenhum gerador.

MotorClasseModelos principais
rng.pySeededRNGPCG64 com forking BLAKE2b; normal truncada, log-normal, Poisson, Beta, Dirichlet
socio.pySocioeconomicEngineCadeia de Markov 6×6 de mobilidade, logit de escolaridade, equação de Mincer, nepotismo
genetics.pyGeneticEnginePunnett ABO/Rh, herança poligênica de olhos e cabelos, mid-parent de Galton, lateralidade logística
health.pyHealthEngineGompertz–Makeham, hazard por doença, risco mental, impacto crônico
family.pyFamilyEngineHazard de nupcialidade, homogamia, fecundidade de Poisson, divórcio logístico
geography.pyGeographyEngine50+ cidades fictícias, segregação por bairro, modelo gravitacional, migração
criminal.pyCriminalEngineRisco logístico de crime, prisão por tipo, dosimetria, reincidência, impactos

Como os motores se relacionam​

As setas de retorno (HealthEngine → SocioeconomicEngine, CriminalEngine → SocioeconomicEngine) não são chamadas circulares: elas acontecem no nível dos geradores, que repassam resultados de um motor como features de outro.

Calibração compartilhada​

Parâmetros usados por mais de um motor ficam em engines/constants.py:

SOCIAL_CLASS_DIST = {"A": 0.03, "B1": 0.07, "B2": 0.15, "C1": 0.22, "C2": 0.25, "D_E": 0.28}
BLOOD_GROUP_PRIORS = {"O": 0.47, "A": 0.41, "B": 0.09, "AB": 0.03}
DISEASE_TRANCHES = {"diabetes": {"min_age": 40, "hazard": 0.007}, …}
RISK_LOGLIT = {"intercept": -3.5, "masculino": 1.8, "idade_15_25": 0.9, …}

:::info Fonte dos números As calibrações são proxies plausíveis para o Brasil (ordens de grandeza de ABEP/IBGE e literatura demográfica), não estimativas oficiais. O objetivo é gerar dados internamente coerentes, não reproduzir estatísticas reais com precisão. O documento persona_db/docs/MATH_MODELS.md traz a formulação original de referência. :::

Testes dos motores​

ArquivoCobertura
tests/unit/test_rng.pydeterminismo, forking, faixas dos amostradores
tests/unit/test_socio.pylinhas da matriz somam 1, prêmio educacional, piso salarial
tests/unit/test_genetics.pyquadrados de Punnett, pais Rh− ⇒ filhos Rh−, olhos azuis recessivos
tests/unit/test_health_criminal_family.pymonotonicidade do hazard, efeito dos fatores de risco
tests/unit/test_genetics_family_geo.pymid-parent, homogamia, pesos geográficos
tests/unit/test_criminal.pysinal dos coeficientes logísticos, dosimetria, reincidência
tests/statistical/test_distributions.pydistribuições agregadas com N grande