Metaphors and models

( previous, home )

Read the research study by Thibodeau and Boroditsky published in PLoS 1 and the associated newspaper article Metaphors can change our opinions in ways we don’t realize by S. Rathje. While reading these articles, keep in mind our own studies this semester, and see if you can find a way to apply it to these readings.

Quiz - the impact of metaphors for crime

Modelling crime metaphors

The results of Thibodeau and Boroditsky and other researchers suggest that metaphors are powerful communications tools, providing a compact way of communicating a significantly more complex phenomena. However, the specific meanings of metaphors can be elusive. We all have some visceral feel of what it means for a predator to be lurking in the dark waiting to pounce on us, and how it feels during flu season, but it takes a fair amount of work to unpack those feelings and translate them into a specific and tangible way. Let \(N\) be the count regular city residents, \(V\) be the count of crime victims.

Predator-crime model

For the predator metaphor, we let \(P\) be the count of criminals who prey upon the city.

\[\begin{align} \dot{N} &= -c P N, \\ \dot{V} &= c P N, \\ \dot{P} &= \eta - \gamma P. \end{align}\]

The effective interventions will reduce opportunities for crime (reduce \(c\)), reduce the number of predators by slowing immigration (reduce \(\eta\)), or accelerating incarceration (increase \(\gamma\)).

Disease-crime model

For the disease metaphor, let \(I\) be the city residents infected with a need to commit crimes.

\[\begin{align} \dot{N} &= -\beta I N - a N + r I, \\ \dot{V} &= \beta I N, \\ \dot{I} &= a N - r I . \end{align}\]

The effective interventions will reduce opportunities for crime (reduce \(\beta\)), reduce the number of criminals by improving well-being and reducing the motivations for criminal activity (reduce \(a\), increasing \(r\)) .

These models do capture some of the differences implicit in the predator/disease metaphors used to describe disease

Which metaphor is correct? We all have different personal experiences that give us reasons to see the world through one or the other of these metaphors. And each metaphor leads to different ideas and conclusions. But crime is a real phenomena. We have to talk about it and confront it.

The simple data we have on the rates of crimes does not help us distinguish between these two models. Both can be made to fit the crime rates equally well.

How do we decide which frame is the right one for analyzing the problem? When we only can talk in terms of these metaphors, this is a hard question. But once we have our models of these metaphors, we actually now also have a more powerful language for discussing crime. We do not have to pick one or the other metaphor. We can build a single model that incorporates the important aspects of both metaphors. Within a single model, we can now drill down and seek out data that will quantify the rates and impacts of different components. We can go a step further and try to model the costs and effectivenesses of different components, as well.

Not only that. The model gives us a new frame in which we can imagine the impacts of ideas that we hadn’t considered before like the potential benefits of social safty nets, the secondary effects of incarceration, and the potential for recidivism.

Other implicit metaphors

Can you think of any media or experiences that you have liked or disliked that pose implicit metaphors for thinking about the world?

How do you discuss something without a metaphor for it?

metaphors and math models

Semi-mathematical model of World view:

Group-grid dicotomy
Group-grid dicotomy

Social mobility models:

[Show code]
#!/usr/bin/python

from matplotlib.pyplot import *
from numpy import array
from random import sample
import time

"""
Incomplete
"""

m = 4
Tmax = 400

def main():

    # creation
    hist = array([0]*Tmax)
    pool = array([0]*Tmax)
    counts = [ ]

    # initialization
    for i in range(m):
        counts.extend( [i]*(m-1) )
        hist[i] = (m-1)
    pool[m-1] = m

    x = array(list(range(1,Tmax+1)))
    fig = figure(figsize=(18,6))
    subplot(1,3,1)
    width = .7
    xw = x-width*.5
    bar_ob = bar(xw, hist, width, color='r')
    ylim(0,Tmax/4)
    xlim(0,Tmax)
    title('Num friends per actor')

    subplot(1,3,2)
    bar_ob2 = bar(xw, pool, width, color='g')
    ylim(0,Tmax/4)
    xlim(0,Tmax/3)
    title('Num actors of degree')

    subplot(1,3,3)
    loglog(xw,1e2/xw**3,'k-')
    loglog(xw,1e3/xw**3,'k-')
    loglog(xw,1e4/xw**3,'k-')
    ll = loglog(xw,pool,'o')
    title('loglog degree plot')
    xlim(1,1e3)
    ylim(1,1e2)

    show(block=False)
    
    for t in range(m,Tmax):
        friends = []
        for i in range(m):
            newfriend = sample(counts,1)[0]
            while newfriend in friends:
                newfriend = sample(counts,1)[0]
            friends.append(newfriend)
        counts.extend(friends)
        for i in friends:
            hist[i] += 1
            pool[hist[i]] += 1
            pool[hist[i]-1] -= 1
        counts.extend([t]*m)
        hist[t] = m
        pool[m] += 1

        for rect, h in zip(bar_ob, hist):
            rect.set_height(h)

        for rect, h in zip(bar_ob2, pool):
            rect.set_height(h)
        ll[0].set_data(xw,pool)

        fig.canvas.draw()
        time.sleep(0.1)

main()
[Show code]
#import matplotlib
#matplotlib.use('gtkagg')
#matplotlib.use('gtk')
#matplotlib.use('wx')
from numpy import *
from numpy.random import rand, randint
import matplotlib.pyplot as plt
import matplotlib.animation as animation

import time


plot = plt.semilogy
plot = plt.plot

beta = 0.08
n = 40
x = array(list(range(n)))+1
y = ones(n)
y = y + 1e-7*rand(n) # avoids warning about collapsed y limits # 2018-04
def update():
    """
    Randomly pick two players.  These
    players randomly exchange $v dollars
    """
    i, j = randint(0,n), randint(0,n)
    if i == j:
        return
    #v = beta*min(y[i],y[j])
    v = min(y[i],y[j],beta)
    i, j = (i,j) if rand() < 0.5 else (j,i)
    y[i], y[j] = y[i] + v, y[j] - v


def genData(w=0):
    while w < 2000:
        w+=1
        for t in range(n):
            update()
        z = y.copy()
        z.sort()
        z = flipud(z)

        yield w, y, z

def updater(data):
    t, y, z = data
    g1.set_data(x,y)
    g2.set_data(x,z)
    g3.set_data(x,z)
    #plt.draw()
    #plt.savefig('v2frame%03d.png'%w)
    #time.sleep(.01)

fig = plt.figure(1, figsize=(12,6))
plt.subplot(1,3,1)
g1 = plot(x,y,'go').pop()
plt.ylim(1e-5,20)
plt.xlim(0,n)
plt.subplot(1,3,2)
g2 = plot(x,y,'ro-').pop()
plt.xlim(0,n)
plt.ylim(1e-5,20)
plt.subplot(1,3,3)
g3 = plt.loglog(x,y,'ro-').pop()
plt.xlim(1,n)
plt.ylim(1e-5,20)
ani = animation.FuncAnimation(fig, updater, genData, interval=10)
plt.show()

Models as lenses

( previous, home )