Differences between revisions 2 and 3
Revision 2 as of 2010-04-02 15:28:15
Size: 1552
Comment:
Revision 3 as of 2010-04-02 15:34:30
Size: 2772
Comment:
Deletions are marked like this. Additions are marked like this.
Line 58: Line 58:


== Hidden Markov Model: The Occasionally Dishonest Casino ==

by Marshall Hampton
based on the classic example in "Biological Sequence Analysis" by Durbin et al.
To get the dice picture you need to download this {{worksheet copy|dishonest_casino.sws}}
{{{
m = hmm.DiscreteHiddenMarkovModel([[0.8,0.2],[0.1,0.9]], [[1/10,1/10,1/10,1/10,1/10,1/2],[1/6,1/6,1/6,1/6,1/6,1/6]], [.2,.8],emission_symbols=[1,2,3,4,5,6])
@interact
def dishonest_casino(auto_update=False):
    test = list(m.generate_sequence(80))
    a = os.system('cp '+DATA+'dice_sm.png ./dice.png')
    vit_test = list(m.viterbi(test[0])[0])
    html('<h3>The Occasionally Dishonest Casino</h3>')
    html('<img src="'+DATA+'dice_sm.png">')
    html('Emissions:'+str(test[0]).replace(',','').replace(' ','')[1:-1])
    vit_str = str(vit_test).replace(',','').replace(' ','')
    vit_str = vit_str.replace('1','F').replace('0','<font color="#FF0000">L</font>')[1:-1]
    html('Viterbi: '+vit_str)
    actual_str = str(list(test[1])).replace(',','').replace(' ','')
    actual_str = actual_str.replace('1','F').replace('0','<font color="#FF0000">L</font>')[1:-1]
    html('Actual: '+ actual_str)
}}}
{{attachment:hmm_casino.png}}

Sage Interactions - Statistics and Probability

goto interact main page

A Random Walk

by William Stein

html('<h1>A Random Walk</h1>')
vv = []; nn = 0
@interact
def foo(pts = checkbox(True, "Show points"), 
        refresh = checkbox(False, "New random walk every time"),
        steps = (50,(10..500))):
    # We cache the walk in the global variable vv, so that
    # checking or unchecking the points checkbox doesn't change
    # the random walk. 
    html("<h2>%s steps</h2>"%steps)
    global vv
    if refresh or len(vv) == 0:
        s = 0; v = [(0,0)]
        for i in range(steps): 
             s += random() - 0.5
             v.append((i, s)) 
        vv = v
    elif len(vv) != steps:
        # Add or subtract some points
        s = vv[-1][1]; j = len(vv)
        for i in range(steps - len(vv)):
            s += random() - 0.5
            vv.append((i+j,s))
        v = vv[:steps]
    else:
        v = vv
    L = line(v, rgbcolor='#4a8de2')
    if pts: L += points(v, pointsize=10, rgbcolor='red')
    show(L, xmin=0, figsize=[8,3])

randomwalk.png

3D Random Walk

@interact
def rwalk3d(n=(50,1000), frame=True):
    pnt = [0,0,0]
    v = [copy(pnt)]
    for i in range(n):
        pnt[0] += random()-0.5
        pnt[1] += random()-0.5
        pnt[2] += random()-0.5
        v.append(copy(pnt))
    show(line3d(v,color='black'),aspect_ratio=[1,1,1],frame=frame)

randomwalk3d.png

Hidden Markov Model: The Occasionally Dishonest Casino

by Marshall Hampton based on the classic example in "Biological Sequence Analysis" by Durbin et al. To get the dice picture you need to download this dishonest_casino.sws

m = hmm.DiscreteHiddenMarkovModel([[0.8,0.2],[0.1,0.9]], [[1/10,1/10,1/10,1/10,1/10,1/2],[1/6,1/6,1/6,1/6,1/6,1/6]], [.2,.8],emission_symbols=[1,2,3,4,5,6])
@interact
def dishonest_casino(auto_update=False):
    test = list(m.generate_sequence(80))
    a = os.system('cp '+DATA+'dice_sm.png ./dice.png')
    vit_test = list(m.viterbi(test[0])[0])
    html('<h3>The Occasionally Dishonest Casino</h3>')
    html('<img src="'+DATA+'dice_sm.png">')
    html('Emissions:'+str(test[0]).replace(',','').replace(' ','')[1:-1])
    vit_str = str(vit_test).replace(',','').replace(' ','')
    vit_str = vit_str.replace('1','F').replace('0','<font color="#FF0000">L</font>')[1:-1]
    html('Viterbi:  '+vit_str)
    actual_str = str(list(test[1])).replace(',','').replace(' ','')
    actual_str = actual_str.replace('1','F').replace('0','<font color="#FF0000">L</font>')[1:-1]
    html('Actual:   '+ actual_str)

hmm_casino.png

interact/stats (last edited 2020-06-01 18:40:49 by kcrisman)