Join the conversation

Join the community of Machine Learners and AI enthusiasts.

Sign Up
ImAnouar1 
posted an update 28 days ago
Post
62
🧠 What happens when 1,000 agents interact under confirmation bias, misinformation, and stubborn opinions?

I built SocialDynamics Lab, an interactive Hugging Face Space for experimenting with opinion dynamics across Random, Small-World, and Scale-Free networks.

Change the network, add stubborn agents, inject misinformation, adjust confirmation bias, then watch polarization, consensus, echo chambers, and opinion distributions evolve.

I’m building this into a larger research sandbox for computational social dynamics, including counterfactual experiments and parameter sweeps.

🔗 ImAnouar1/SocialDynamics_Lab

Would love feedback; especially from people working on social computing, MAS, network science, or computational social science.

If you enjoy it, feel free to leave a ❤️ on the Space.

#SocialComputing #MultiAgentSystems #NetworkScience #HuggingFace

Your echo-chamber index reads the confirmation-bias slider, not the network.

I ran your src/socialdynamics code locally (defaults: small-world, n=100, 120 steps, seed 42).

Same final opinion state, rescored at different slider values:
cb=0 -> 0.000, cb=0.25 -> 0.719, cb=0.45 -> 0.765, cb=1.0 -> 0.783.
Nothing moved except the knob.

Two controls:

  • two fully segregated camps (caveman graph, -0.9 vs +0.9, one bridge edge): index 0.000 at cb=0
  • i.i.d. random opinions on the Watts-Strogatz graph, no structure: index 0.576 at cb=0.45

A plain neighbour check (Pearson correlation of opinions across edge endpoints) flips the story. At defaults the index says 0.765 but the neighbour correlation is -0.031. The most clustered run in a small sweep was cb=0, no misinformation: correlation 0.437, index 0.000.

Your README is honest that it measures selective filtering. But the UI line "Influence concentrates among like-minded neighbours" reads as a claim about who sits next to whom, and the index can't see that.

Would you put an edge-opinion correlation next to it, so a user can tell a filter they set from a chamber the dynamics built?

·

Thanks for checking this so carefully, you’re right about the distinction.
I reproduced your tests, and the current "echo-chamber index" is really measuring selective filtering from the confirmation-bias weighting, not whether the network itself has become opinion-assortative. So the label was too broadd.
I’ve now split it into separate diagnostics:

  • Neighbor opinion correlation: whether connected agents actually hold similar opinions
  • Edge disagreement: how different connected agents are
  • Selective filtering: how strongly confirmation bias suppresses influence from dissimilar neighbors.

That way a user can distinguish between a chamber that actually emerges in the network/opinion state and a filtering mechanism that was simply turned up.
I will also change the UI wording so it no longer implies that “like-minded neighbors” are structurally clustered just because the filtering score is high.
Thanks for your time and insight, this was a useful correction.

Checked v1.2 against the same controls. It separates them now.

  • defaults, seed 42: neighbour r -0.031, z -0.66 vs shuffled. Selective exposure 0.765, the number the old index gave.
  • two segregated camps, one bridge: r +0.999, z +64. Selective exposure 0 at cb=0.
  • i.i.d. opinions on Watts-Strogatz: mean r -0.007 over 200 draws, z >= 3 in 2 of 200.
  • rewiring_rate=0 matches v1.1 to 2e-16 across six cb/misinformation settings. Summation order, not a change.

One thing the new verdict catches that the preset name doesn't. "Filtered, Not Segregated", no rewiring, seeds 42-46: r = -0.013, -0.001, -0.048, +0.205, +0.025. Seed 45 goes from +0.017 at t=0 to +0.205 (z +4.1), and your own _regime calls it an echo chamber. The fixed graph can sort a little on its own.

The chamber also needs both levers. With rewiring at 0.10, cb 0.85 gives r +0.96 to +0.99 on all five seeds. At cb 0.45 it gives +0.03 to +0.09, even with ~99 ties rewired, because opinions collapse to sd 0.20 and there are no camps left to sort.

Is "not segregated" meant as a claim about the mechanism, or about every seed's outcome?