Generators of Profiles#

[1]:
import svvamp

Impartial Culture#

The Spheroid model is an extension of the Impartial Culture to utilities:

[2]:
profile = svvamp.GeneratorProfileSpheroid(n_v=100, n_c=5)()
profile.plot3()
profile.plot4()
../_images/tutorials_tutorial_generators_4_0.png
../_images/tutorials_tutorial_generators_4_1.png

The Cubic Uniform model is another one:

[3]:
profile = svvamp.GeneratorProfileCubicUniform(n_v=5000, n_c=3)()
profile.plot3(normalize=False)
../_images/tutorials_tutorial_generators_6_0.png
[4]:
profile = svvamp.GeneratorProfileCubicUniform(n_v=5000, n_c=4)()
profile.plot4(normalize=False)
../_images/tutorials_tutorial_generators_7_0.png

Neutral Culture with Weak Orders#

The Ladder model is also neutral (it treats all candidates equally) and voters are also independent, like in Impartial Culture, but weak orders are possible.

[5]:
profile = svvamp.GeneratorProfileLadder(n_v=1000, n_c=3, n_rungs=5)()
profile.plot3(normalize=False)
../_images/tutorials_tutorial_generators_10_0.png
[6]:
profile = svvamp.GeneratorProfileLadder(n_v=1000, n_c=4, n_rungs=5)()
profile.plot4(normalize=False)
../_images/tutorials_tutorial_generators_11_0.png

Polarized Cultures#

The Von-Mises Fisher model represents a polarized culture. There are two variants (hypersphere and hypercircle).

[7]:
profile = svvamp.GeneratorProfileVMFHypersphere(
    n_v=100, n_c=5, vmf_concentration=20)()
profile.plot3(indexes=[0, 1, 2])
../_images/tutorials_tutorial_generators_14_0.png

Political spectrum#

In these models, voters and candidates draw independent positions in a Euclidean space (the “political spectrum”). The utility of a voter v for a candidate c is a decreasing function of the distance between their positions. If the dimension of the political spectrum is 1, then the population is necessarily single-peaked (cf The theory of committees and elections, Duncan Black, 1958).

Gaussian Well model:

[8]:
profile = svvamp.GeneratorProfileGaussianWell(
    n_v=1000, n_c=4, sigma=[1], shift=[0])()
profile.plot3()
profile.plot4()
../_images/tutorials_tutorial_generators_18_0.png
../_images/tutorials_tutorial_generators_18_1.png

Euclidean Box model:

[9]:
profile = svvamp.GeneratorProfileEuclideanBox(
    n_v=1000, n_c=4, box_dimensions=[1])()
profile.plot3()
profile.plot4()
../_images/tutorials_tutorial_generators_20_0.png
../_images/tutorials_tutorial_generators_20_1.png