User:Lucasvb/An upgrade to the spatial model of voters

From electowiki

An upgrade to the spatial model of voters

In the following article, I'll explain a possible alternate spatial model of voting, which is an upgrade of the typical geometric model and contains it as a special case.

I believe this model encapsulates many important aspects that have been missing from most analyses so far. But remember, it's still just a model.

An operational way to define opinions on issues

Imagine you have a political issue you want to quiz people about. In order to make it as specific as possible, you can frame it as an unambiguous "about X, Y" kind of statement.

Now suppose you go around and ask people their opinion regarding many such issues, under those specific framings, and that people answered you honestly and accurately to the best of their knowledge. (We can't really expect more than that, as we can't read people's minds.)

At the very least, we would like to know whether they agree or disagree with the statement. But we could also ask how strongly they feel about that position, how certain they are of it, and how important they feel it is to hold that position.

One way to convert this into a numerical scale is by considering the following parameters:

  • Belief: we create a scale from "completely disagree" (-1) to "completely agree" (+1).
  • Importance: we create a scale from "completely indifferent" (0%) to "very important" (100%).

We can group these values into an opinion, notated by (belief|importance), for every issue in our quiz. Everyone answering this quiz gets assigned an opinion on every one of these issues.

This is a good model because it is:

  1. Operational: you could in principle go around asking these questions for any number of issues.
  2. Absolute: in principle, the questions can be as specific as required to avoid ambiguity, and there is no relative center.
  3. Bounded: the belief has well-defined extremes because of the framing.

This kind of model has been used extensively in political polls for decades. The popular website I Side With uses a very similar model.

Of course, there's the question of how can we treat similar answers as compatible. It is possible to formally justify this, but that's a much deeper discussion. Since this is just a justification of a mathematical model for simulations, we don't really need to worry about it too much.


Let's call the collection of opinions a person holds their stance. For example, the following would be a 5-issue stance:

[ (+0.5|80%), (-1.0|100%), (0.0|50%), (-0.5|50%), (+0.8|70%) ]

So a person who completely disagrees on an issue, and deems it very important, would get a (-1|100%) opinion for that issue. A person who is uncertain either way, but still thinks it is an important issue that needs to be discussed would be a (0|100%) opinion. This would be a true "centrist" on that issue.

On the other hand, a person who says they are completely indifferent about an issue doesn't really care either way, so their opinion would be a (N/A,0%), that is, we should completely disregard the belief (agree or disagree) value of their opinion.

But what if someone says they think an issue is only 50% important? It's reasonable to think we should consider their belief to be 50% as relevant to their perspective on this issue, in some fashion. However, that doesn't mean their "completely agree" (+1) should be treated as a "moderately agree" (+1/2), because this would carry a different meaning.

How can we account for this in a way that allows us to compare different opinions? We need to come up with a measure of agreement/disagreement that takes both values into account.

Opinions as distributions

Let's imagine Alice and Bob are comparing their beliefs in a few issues.

On the first issue, suppose Alice holds the opinion (+1|100%) and Bob (-1|100%). You'd expect these two to be fiercely opposite to one another, and that they would have as much disagreement as possible. This makes sense, as both hold extremely opposite beliefs, and both deem it as very important. Under this model, it makes sense to call this situation "maximum disagreement".

On the second issue, suppose both Alice and Bob hold the same opinion, say, (-0.5|50%). Both belief and importance values are the same. We would expect this to count as "maximum agreement". Any other type of opinion difference should fall somewhere in the middle.

How can we quantify this?

Here's one way we can consider this situation mathematically which, at least to me, makes a lot of sense.

Imagine everyone has a fixed amount of "opinion units" on every issue, and they must use it to form the shape of an opinion on an issue.

We'll visualize each opinion unit as a little block, which we may place it along a belief axis. On one side of the axis we have the "-1" (completely disagree) and the other "+1" (completely agree) beliefs.

A unit of opinion can be placed along the (bounded) belief axis.

A person's opinion will then be represented by a "pile" of these opinion units. An opinion deemed important will be a tall and narrow pile, whereas a less important opinion will be a wide and short pile. In effect, we will turn each opinion into a distribution. This is shown in the examples below.

A (-1.0|100%) opinion distribution, symbolizing an important extreme opinion.
A (-0.5|100%) opinion distribution, symbolizing an important moderate opinion.
A (+0.5|50%) opinion distribution, symbolizing a slightly important moderate opinion.

An undecided but important opinion would be a tall pile at the center of the axis, as shown below.

A (0.0|100%) opinion distribution, symbolizing undecidedness. This is what a true "centrist" belief looks like.

This is very different from an indifferent person, who doesn't care either way. In that case, the opinion is an uniform pile all across the axis. The person's opinion isn't "anywhere".

A (N/A|0%) opinion distribution, symbolizing indifference.

Note: In principle the opinion does not have to be symmetric or single-peaked, but those opinions would be more complicated to understand and our model doesn't need to be too complex.

A more complex opinion distribution could be represented by a skewed distribution. This is a person who strongly believes in something, but still has many caveats to their belief.

So we will assume all opinions are simple, single-peaked, symmetric distributions, for our own sake.

Comparing opinions

Now that we have our model for opinions, we can look into comparing them.

Remember how we started with the idea of "opinion units" people can place around their belief axis? Let's build upon that idea.

Suppose Alice is trying to talk to Bob about an issue where they share different opinions. In this model, what she is trying to do is turn Bob's opinion into her own.

This would look like Alice trying to morph Bob's opinion distribution into her own opinion distribution, piece by piece. This is illustrated below.

By making a convincing argument, Alice can piece-by-piece change Bob's opinion into her own.

In the above example, Alice is trying to convince Bob that he should somewhat agree with this particular issue, and that he should consider it less of a priority. For example, this could be something like the government allowing gay marriage, and Alice is trying to convince Bob that this is only about civil unions and not religious weddings ("it's mostly a tax thing!"), and that there are more important issues to worry about, like the budget.

Measuring distance

How difficult is this task for Alice?

We would expect that if both opinions are already similar, not a lot of convincing is required. We would also expect that the further apart the "opinion units" need to be relocated, the more difficult it is to change someone's opinion.

In mathematics and engineering, this is a well-studied problem of optimal transport, and it has found uses everywhere, from artificial intelligence to traffic management.

The intuitive notion of how "difficult" it is to convince someone to believe something else, piece by piece, is captured by the earth-mover's distance (EMD) between two distributions. It is, intuitively, the least amount of effort you would need to rearrange one pile of dirt into another pile of dirt.

If you replace "dirt" with "opinion unit", you'll immediately arrive at our idea here.

With this notion of distance between distributions and this model of opinions, we can now compare two opinions in a reasonable way. To see that this is reasonable, note that:

  • The earth-mover's distance is always positive, and is only zero if both distributions are exactly the same.
  • The earth-mover's distance between (-1|100%) and (+1|100%) is maximal for our model: you need to move all the opinion from one extreme to the other. This is very hard to achieve!
  • The earth-mover's distance between two equal distributions is zero. There is no work (convincing) necessary!
  • The distance between every other pair of distributions is somewhere in the middle, and the farthest the change in belief, the more distant the distributions are.
  • The distance is symmetric and unbiased. It takes the same amount of effort to change one distribution into the other, and vice versa.
Note on terminology: The name "importance" is mostly motivated by how the width of the distribution results in more willingness to compromise/make sacrifices, and determines a certain "zone of comfort" for the voter. Perhaps "importance" here should be instead interpreted as "certainty", which makes more sense given a "width of belief". Importance could then be included as a third parameter, maybe a scaling factor for each axis, changing the EMD by a factor. But it seems weird to say someone "completely agrees" but is 50% certain of it. Regardless of what we call it, the "width of the distribution" seems like a good approach.

Comparing stances

So now we can compare individual opinions, we can begin to look into comparing entire stances. Remember that a stance is a collection of opinions on multiple issues, so it is analogous to the notion of a point seen as a "list of coordinates".

In the typical spatial model of elections, voters are perfect points in an opinion space. The Euclidean distance between two voters and in a space with issues is given by:

That is, we compare the separation on each issue ().

In our model, however, voters are multiple distributions of opinion in this space. We would replace the above with the earth-mover's distance:

where is the earth-mover's distance between the distributions and .

Note that different issues are never compared with one another here. Only opinions on the same issue count towards each term.

It should be clear that that if the distributions are infinitely sharp (i.e. Dirac deltas), the earth-mover's distance is simply the distance between those two sharp peaks. In this way, we recover the old traditional spatial model from our model.

Why the Euclidean distance anyway?

We could have considered other distances (or "metrics") in the same way, but why single out the Euclidean one? Why not use

Well, if you think about it, in the space of political opinions we naturally correlate a few issues. Terms like "fiscally conservative" or "socially liberal" are common, and can be thought of as an "ideological direction" in the space of opinions that point towards multiple issues at the same time. (I like to call them "ideals".)

This notion of "direction" is well-modeled mathematically by the notion of an "angle" in this space. This, in turn, mathematically requires a notion of inner products, which requires the Euclidean metric.

Benefits & remarks

One major benefit of this approach is that we now have a direct way to embed mutual importance into our model of voters, as well as a notion of "fuzziness" to the opinions. The width of the distribution can be used as a proxy for a voter's willingness to compromise or make sacrifices on an issue.

A low-importance opinion is a wider distribution, which means it has a smaller distance to other opinions than a sharp one. So a voter with a low-importance on an issue effectively sees that axis as "compressed", that is, distances are shorter along that axis. On the other hand, if a voter has a high importance on an issue they will perceive differences more aggressively, making them see that axis as "stretched", that is, the distances are perceived as larger.

In this way, each voter has their own perception of how important each issue is, and this is accounted for when computing the distance between different stances. This model of distance also naturally captures the correlations between multiple issues due to this scaling, and the effect of voters and candidates giving different, incompatible importance to issues. (A simple scaling factor wouldn't capture this, as it would be agnostic to the target voter/candidate, so there would be no degree of correlation due to opinion compatibility. But a scaling factor on top of the distributions would add an even greater degree of flexibility.)

With the Euclidean distance, and how we embedded the different priorities voters have on multiple issues in our model, we now have a unified model which can naturally deal with voters having strong ideals, degrees of compromising, etc. We could even model the dynamics of voters by using the notion of "effort to move around opinion units".

Note that there's still a distance between someone who is indifferent and anyone with a more defined opinion. This makes sense, as it takes effort to convince someone to care. In polarizing situations, the indifferent voter and the undecided voter (the centrist) have similar but not equal roles. The indifferent voter is on average 25-30% closer than a resolute centrist to any random opinion, so it is generally more neutral as a baseline.

The earth-mover's distance obeys many nice properties which preserve important features we want in this space of opinions, like a notion of partial orders which is required to rank compatibility across an issue in a consistent way, compatible with the overall geometric structure in multiple issues.


In practice, it's up to us to determine how sharply-peaked the distributions can get.

The earth-mover's distance is simple and efficient to compute in a discrete 1D case, where the distribution is defined in a number of bins. This makes it readily available in many software packages.

Under this setup, the sharpest distribution is 1 bin wide. So as a first approximation, it is helpful to model the distribution as a simple trapezoidal distribution, instead of a normal distribution.

In my simulations, I've defined an integer parameter L, the resolution of one side of the belief axis. In order to make 0 a valid belief, it is best to use an odd number of bins, so the total number of bins is given by W = 2*L+1.

The following Python code generates the trapezoid distribution for a given opinion, with belief from -1 to +1, and importance from 0 to 1.

import numpy as np
from scipy.stats import wasserstein_distance

L = 5 # bin resolution (number of degrees of agreement/disagreement)
W = 2*L+1 # total number of bins, an odd number so we have a clean zero
_space = np.linspace(-1,1,W) # array with positions of the bins

# Earth-mover's distance (or Wasserstein distance) between two opinion distributions
def EMD(dist1,dist2):
    return wasserstein_distance(_space,_space,dist1,dist2)

# Generates an opinion distribution as a truncated & bounded trapezoidal distribution
#   belief: from -1 to +1
#   importance: from 0 to 1
def opinion(belief, importance):
    w = (1 - importance)*(W-1) + 1
    v = (w+1)/2 - L*abs(np.linspace(-1,1,W) - belief*importance)
    v[v < 0] = 0
    v[v > 1] = 1
    v /= sum(v)
    return v

# Visualize distribution with text blocks
def diststr(op):
    return "".join(["_▁▂▃▄▅▆▇█"[int(r/max(op)*7)] for r in op]) # we go up to 7 because the full block looks bad piled up

# Show some distributions generated
for w in range(1,W+1):
    c = 1 - (w-1)/(W-1)
    for x in range(-L,L+1):
        op = opinion(x/L,c)
        print("(%+0.03f|%0.03f)" % (x/L,c), diststr(op))

# Print a few distances
for i in range(10):
    b1, b2 = np.random.rand()*2-1, np.random.rand()*2-1
    i1, i2 = np.random.rand(), np.random.rand()
    o1 = opinion(b1, i1)
    o2 = opinion(b2, i2)
          "(%+0.03f|%0.03f)" % (b1,i1), diststr(o1),
          diststr(o2), "(%+0.03f|%0.03f)" % (b2,i2),
          "= %0.04f" % EMD(o1,o2))