Update README.md

This commit is contained in:
PSBigBig × MiniPS 2026-02-13 12:17:39 +08:00 committed by GitHub
parent 483618fd34
commit b656e0178c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -14,10 +14,10 @@ Use: When a user asks about TU Q108 polarization experiments or wants
# TU Q108 MVP: toy political polarization
_Status: work in progress. This page records early MVP designs and will be refined as the TU Q108 program matures._
_Status: Experiment A implemented and reproducible. Experiment B planned._
> This page sketches small opinion dynamics experiments for TU Q108.
> The aim is to make polarization tension visible in simple, inspectable models.
> This page contains the first effective layer MVPs for TU Q108.
> The goal is to make polarization tension visible in small, fully inspectable models.
**Navigation**
@ -30,11 +30,11 @@ _Status: work in progress. This page records early MVP designs and will be refin
TU Q108 looks at political polarization.
Instead of real media ecosystems we work with:
Instead of full media ecosystems, we use:
- opinion dynamics on simple graphs,
- modeled exposure to messages,
- and basic update rules.
- and basic update rules that can be inspected line by line.
The MVP experiments define observables that track:
@ -42,96 +42,308 @@ The MVP experiments define observables that track:
- distance between groups,
- and mismatch with declared goals like "pluralistic but not polarized".
Experiment A is implemented and runnable.
Experiment B is a planned extension for information filter design.
---
## 1. Experiment A: bounded confidence opinion dynamics
## 1. Experiment A: bounded confidence on different networks
### 1.1 Research question
### 1.1 Question
In a bounded confidence model, can we define a scalar observable T_polar that
Can a single bounded confidence model, with the same people and the same update rule, behave very differently **only** because of network structure?
- is small when opinions remain unimodal or gently clustered,
- grows when bimodal or highly separated clusters form.
In other words:
### 1.2 Setup
- if we fix the initial opinions and the bounded confidence rule,
- and only change the social graph,
- can a scalar observable T_polar clearly separate:
- a world that de-polarizes into a shared center, from
- a world that stays locked in two opposing camps.
### 1.2 Model setup
Experiment A uses a deliberately simple toy world.
**Agents**
- N = 200 agents.
- Each agent holds a scalar opinion x in the range [-1, 1].
**Initial opinions (two mild camps)**
- Population is split into two labels: group 0 and group 1.
- Group 0 starts near -0.25 (normal noise, then clipped).
- Group 1 starts near +0.25 (same noise, same clipping).
- So the world begins with a mild left / right split, not full extremes.
**Networks**
We build two social graphs over the same agents:
1. `well_mixed`
- ErdosRenyi random graph with edge probability about 0.20.
- Edges ignore the group labels.
- Intuition: everyone mixes reasonably freely.
2. `two_communities`
- Stochastic block model with two communities.
- High internal linking probability (p_in ≈ 0.40).
- Very low crosscommunity probability (p_out ≈ 0.01).
- Intuition: two tightly knit echo chambers with few bridges.
Every other setting is identical between the two worlds.
**Bounded confidence dynamics**
Time is discrete, t = 0, 1, …, T.
- At each step, for each agent i:
1. Pick a random neighbor j on the graph (if any).
2. If the opinion distance |x_j x_i| is less than or equal to epsilon:
- move x_i towards x_j by a factor mu.
- Update is asynchronous: agents are visited in random order.
- Parameters in this MVP:
- T_steps = 120 time steps,
- mu = 0.5 (halfway step towards the neighbor),
- epsilons explored: 0.15, 0.25, 0.35, 0.60.
**Polarization observable T_polar**
We partition agents into three groups, using a fixed center threshold:
- left group: opinion < -center_thresh,
- center group: absolute opinion <= center_thresh,
- right group: opinion > center_thresh,
where center_thresh = 0.15 in this MVP.
From this partition we compute:
- p_L: fraction of agents in the left group,
- p_C: fraction of agents in the center,
- p_R: fraction of agents in the right group,
- mu_L: mean opinion in the left group (if non-empty),
- mu_R: mean opinion in the right group (if non-empty),
- gap = absolute difference between mu_R and mu_L.
The scalar polarization tension T_polar is then constructed as
- T_raw = (p_L + p_R) * gap * (1 p_C),
- T_polar is T_raw capped into the range [0, 1].
Interpretation:
- T_polar is large when
- many agents sit in the extremes (large p_L + p_R),
- the two camps are far apart (large gap),
- the center is small (small p_C).
- T_polar is close to zero when
- most agents sit near the center,
- any remaining extremes carry little mass or little separation.
For diagnostics we also store:
- p_center_final = p_C,
- p_extreme_final = p_L + p_R.
### 1.3 Colab notebook (one-click run)
The Experiment A notebook is a single cell script, fully offline, designed for a one-click run.
[![Run Q108_A in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/onestardao/WFGY/blob/main/TensionUniverse/Experiments/Q108_MVP/Q108_A.ipynb)
The notebook will:
- Place agents on a social network.
- Assign each agent an initial opinion on a one dimensional scale.
- Use a bounded confidence rule:
1. Build both networks (`well_mixed` and `two_communities`).
2. Initialize opinions with the same two-camp configuration.
3. Run bounded confidence dynamics for each epsilon and each network.
4. Compute T_polar, p_center_final, and p_extreme_final for every run.
5. Save all raw results to:
- agents only update toward neighbors whose opinions are within a threshold.
- `Q108_A_results.csv`
- Run dynamics for many timesteps under different thresholds and network structures.
6. Generate two PNG figures:
For each run compute:
- `Q108_A_polarization_vs_epsilon.png`
- `Q108_A_opinion_distributions_examples.png`
- the distribution of opinions,
- a polarization index based on cluster separation and within cluster variance,
- a simple T_polar that increases with cluster separation and weight in extremes.
No API key is required. All randomness is seeded for reproducibility.
### 1.3 Expected pattern
### 1.4 Results
We expect:
#### 1.4.1 Summary table
- low T_polar when confidence bounds are wide and mixing is strong,
- higher T_polar when narrow confidence and clustered connectivity drive separation.
The table below shows the aggregated statistics (mean over runs) for each network and epsilon.
T_polar_final_mean is the mean final T_polar. p_center_mean and p_extreme_mean are mean center and extreme fractions.
Plots of trajectories and T_polar values will be added once implemented.
| network_type | epsilon | T_polar_final_mean | p_center_mean | p_extreme_mean |
|----------------|---------|--------------------|---------------|----------------|
| two_communities | 0.15 | 0.4712 | 0.037 | 0.963 |
| two_communities | 0.25 | 0.5122 | 0.003 | 0.997 |
| two_communities | 0.35 | 0.5016 | 0.000 | 1.000 |
| two_communities | 0.60 | 0.0000 | 1.000 | 0.000 |
| well_mixed | 0.15 | 0.4786 | 0.051 | 0.949 |
| well_mixed | 0.25 | 0.4895 | 0.040 | 0.960 |
| well_mixed | 0.35 | 0.0508 | 0.895 | 0.105 |
| well_mixed | 0.60 | 0.0000 | 1.000 | 0.000 |
### 1.4 How to reproduce
Key observations:
After `Q108_A.ipynb` is available:
- At epsilon 0.15 and 0.25, both networks stay in a strongly polarized regime.
1. Open the notebook.
2. Inspect the opinion update rules and polarization index definition.
3. Run simulations with different parameters.
4. Compare T_polar across runs.
- T_polar around 0.470.51.
- Almost everyone in the extremes, with p_extreme near 0.951.00.
- At epsilon 0.35, the networks diverge dramatically:
- `well_mixed`
- T_polar drops to about 0.05.
- Around 89.5 percent of agents return to the center (p_center ≈ 0.895).
- Only about 10.5 percent remain in the extremes.
- `two_communities`
- T_polar remains near 0.50.
- Center is essentially empty (p_center ≈ 0).
- All agents stay in extremes (p_extreme = 1.0).
- At epsilon 0.60, both networks fully de-polarize:
- T_polar returns to 0.
- Everyone sits in the center.
This means that at epsilon 0.35 we have:
- same agents,
- same initial two-camp opinions,
- same bounded confidence rule,
- same epsilon value,
but the final tension differs by an order of magnitude solely because of network structure.
#### 1.4.2 T_polar as a function of epsilon
The figure below plots T_polar_final_mean versus epsilon for both networks.
![Q108_A · Polarization vs epsilon](./Q108_A_polarization_vs_epsilon.png)
Reading the figure:
- For both networks, small epsilons around 0.150.25 keep the world in a high-tension state.
- As epsilon grows, the `well_mixed` network de-polarizes first.
- T_polar collapses at epsilon 0.35.
- The `two_communities` network remains locked in a strongly polarized state until epsilon is extremely large.
- Only when epsilon reaches 0.60 does it finally collapse into the center.
In the language of Tension Universe:
- epsilon is a control knob,
- network modularity decides how far that knob actually moves the world.
#### 1.4.3 Opinion distributions at the critical point
The second figure shows final opinion histograms at epsilon 0.35 for both networks.
![Q108_A · Example final opinion distributions](./Q108_A_opinion_distributions_examples.png)
Interpretation:
- `well_mixed, epsilon = 0.35`
- Almost everyone has moved into a sharp central peak near 0.
- The histogram is a single narrow spike, matching p_center ≈ 0.895 and T_polar ≈ 0.05.
- `two_communities, epsilon = 0.35`
- The population remains split into two distinct peaks near -0.25 and +0.25.
- The center is empty, matching p_center ≈ 0 and T_polar ≈ 0.50.
This figure visualizes the "same rules, different graph" story:
- In a well mixed world, slightly expanding tolerance leads to a shared center.
- In a modular world, the same tolerance leaves everyone locked in two opposing camps.
### 1.5 Interpretation and limitations
**What Experiment A shows**
- A single bounded confidence model, with a fixed set of agents and initial opinions, can produce very different polarization patterns purely by changing network structure.
- T_polar acts as an effective layer observable that:
- distinguishes between high-tension and low-tension regimes, and
- makes the effect of epsilon and modularity directly comparable.
At epsilon 0.35:
- well_mixed: low tension, center-heavy world,
- two_communities: high tension, fully polarized world.
This gives TU Q108 a concrete, runnable example of "same world description at the micro level, different effective universe at the tension level".
**Limitations and next knobs**
- The current experiment focuses on mild initial separation (±0.25). More extreme starting points could explore even higher tension regimes.
- Only two network families are used here. Additional topologies (lattices, hubs, random geometric graphs) would extend the coverage.
- T_polar uses one center threshold (0.15). Other thresholds or multi-peak metrics could refine the observable for more complex landscapes.
- Time series of T_polar are logged only for illustrative runs. A full time-resolved analysis is left for future iterations.
---
## 2. Experiment B: information filter design tension
## 2. Experiment B: information filter design tension (planned)
### 2.1 Research question
Experiment B is not yet implemented. It will reuse the same base model and T_polar, but focus on **information filters** as interventions.
Can we treat different information filter designs as interventions and define a tension observable T_filter that captures when a design meant to reduce polarization actually increases it.
### 2.1 Question
### 2.2 Setup
Given a social graph and initial opinions, can we treat content feed designs as separate "world builders" and define a tension observable T_filter that captures when a design meant to reduce polarization actually increases it?
Using the same base model, the notebook will:
The intent is to represent:
- Implement content feed filters, such as:
- diversity-boosting feeds,
- similarity-boosting feeds,
- random or noise-injecting feeds,
- diversity boosting,
- similarity boosting,
- random mixing.
and compare how they move T_polar over time relative to a neutral baseline.
- Run simulations under each filter design.
- Track changes in T_polar over time.
### 2.2 Planned setup
Define T_filter as:
Using the same kind of networks and opinion initialization as Experiment A, the planned notebook `Q108_B.ipynb` will:
- the difference between T_polar under a given filter and under a neutral baseline,
- weighted by the stated goal of the filter (for example "reduce polarization").
- introduce feed filters that bias which neighbors or messages an agent sees,
- run the same bounded confidence dynamics under each filter,
- track T_polar(t) over time.
### 2.3 Expected pattern
A candidate T_filter would be:
We expect:
- T_filter = T_polar(filter) T_polar(neutral),
- filters designed to mix opinions to have lower T_filter when they succeed,
- cases where miscalibrated filters increase T_polar to have higher T_filter, exposing design tension.
optionally weighted by the stated design goal ("reduce polarization", "increase diversity", and so on).
### 2.4 How to reproduce
High positive T_filter would indicate a design that secretly amplifies tension despite its stated goal.
Once `Q108_B.ipynb` exists:
### 2.3 Status
- open and inspect the filter implementations,
- run the simulation and compare T_filter across filter types.
- Notebook not yet implemented.
- This section is a placeholder for future work once Q108_B is promoted to MVP.
---
## 3. How this MVP fits into Tension Universe
## 3. How TU Q108 fits into Tension Universe
TU Q108 treats political polarization as a tension between:
@ -139,14 +351,15 @@ TU Q108 treats political polarization as a tension between:
- network structure and media filters,
- declared goals for pluralism.
This MVP offers:
Experiment A provides:
- a bounded confidence experiment with T_polar,
- a filter design experiment with T_filter.
- a minimal but fully runnable world,
- a scalar tension observable (T_polar),
- and a clean contrast between "well mixed" and "modular" universes.
Both are toy but capture the basic tension geometry.
Experiment B will extend this by treating filter design itself as a source of tension.
For context:
For broader context:
- [Experiments index](../README.md)
- [Event Horizon (WFGY 3.0)](../../EventHorizon/README.md)