In [2]:
%load_ext autoreload
%autoreload 2
import pandas as pd
from ggplot import *

In [11]:
folder = 'results'
end = ''
# Model
d = 50
tauPhi=2.

# Plot options
pltNested = True
nestedPlot = [[1000,500]]
#nestedPlot = [[1000,50],[667,75],[500,100],[100,500]]

pltST = True
stpfPlot = [[100,1000],[200,500],[400,250]]
#stpfPlot = [[500,400]]

pltNestedMore = False
nestedMorePlot = [[100,500]]

pltNips = False
N_n = 100000
pltBootstrap = False

# Random stuff
Tmin_nn = 100
Tmin_nb = 100
columns = ['t','ESS']
nipscolumns = ['t']
for i in range(d):
    columns.append('E[X'+str(i+1)+']')
    nipscolumns.append('E[X'+str(i+1)+']')
for i in range(d):
    columns.append('E[X'+str(i+1)+'^2]')
    nipscolumns.append('E[X'+str(i+1)+'^2]')
    
# Plot nested
if pltNested:
    nested = []
    nestedNr = len(nestedPlot)
    for i in range(nestedNr):
        N = nestedPlot[i][0]
        M = nestedPlot[i][1]
        filename = folder+'/d'+str(d)+'_N'+str(N)+'_M'+str(M)+'tauPhi'+str(tauPhi)+'_nestedSMC'+end+'.csv'
        nested.append(pd.read_csv(filename, header=None, names=columns))
        Tmin_nn = min(nested[i]['t'].max(),Tmin_nn)
        Tmin_nb = min(nested[i]['t'].max(),Tmin_nb)
        
# Plot nestedMore
if pltNestedMore:
    nestedMore = []
    nestedMoreNr = len(nestedMorePlot)
    for i in range(nestedMoreNr):
        N = nestedMorePlot[i][0]
        M = nestedMorePlot[i][1]
        filename = 'results/d'+str(d)+'_N'+str(N)+'_M'+str(M)+'tauPhi'+str(tauPhi)+'_nestedMore.csv'
        nestedMore.append(pd.read_csv(filename, header=None, names=columns))
        Tmin_nn = min(nestedMore[i]['t'].max(),Tmin_nn)
        Tmin_nb = min(nestedMore[i]['t'].max(),Tmin_nb)
        
# Plot STPF
if pltST:
    stpf = []
    stpfNr = len(stpfPlot)
    for i in range(stpfNr):
        N = stpfPlot[i][0]
        M = stpfPlot[i][1]
        filename = folder+'/d'+str(d)+'_N'+str(N)+'_M'+str(M)+'tauPhi'+str(tauPhi)+'_STPF'+end+'.csv'
        stpf.append(pd.read_csv(filename, header=None, names=columns))
        Tmin_nn = min(stpf[i]['t'].max(),Tmin_nn)
        Tmin_nb = min(stpf[i]['t'].max(),Tmin_nb)
        
# Load Bootstrap PF
if pltBootstrap:
    N_b = 100000
    filename = 'results/d'+str(d)+'_N'+str(N_b)+'tauPhi'+str(tauPhi)+'_bootstrap.csv'
    bootstrap = pd.read_csv(filename, header=None, names=columns)
    Tmin_nb = min(bootstrap['t'].max(),Tmin_nb)

# Load NIPS SMC
if pltNips:
    filename = 'results/d'+str(d)+'_N'+str(N_n)+'tauPhi'+str(tauPhi)+'_nipsSMC.csv'
    nips = pd.read_csv(filename, header=None, names=nipscolumns)
    Tmin_nn = min(Tmin_nn, nips['t'].max())
        
# Load true
filename = 'exact/d'+str(d)+'tauPhi'+str(tauPhi)+'xfilt.txt'
xTrue = loadtxt(filename)
filename = 'exact/d'+str(d)+'tauPhi'+str(tauPhi)+'margPfilt.txt'
PTrue = loadtxt(filename)

Tmin_nn = int(Tmin_nn)
Tmin_nb = int(Tmin_nb)
print Tmin_nn, Tmin_nb


100 100

In [40]:
# ESS
fig, ax = subplots(1, 1)
if pltNested:
    for i in range(nestedNr):
        ax.plot(1+arange(Tmin_nb),nested[i]['ESS'][:Tmin_nb], '-', lw=2, label='Nested SMC (N='+str(nestedPlot[i][0])+', M='+str(nestedPlot[i][1])+'), Mean ESS: '+str(mean(nested[i]['ESS'][1:Tmin_nb])))
        print 'Nested SMC (N='+str(nestedPlot[i][0])+', M='+str(nestedPlot[i][1])+') Mean ESS:', mean(nested[i]['ESS'][1:Tmin_nb])

if pltST:
    for i in range(stpfNr):
        ax.plot(1+arange(Tmin_nb),stpf[i]['ESS'][:Tmin_nb], '-', lw=2, label='SP-TF (N='+str(stpfPlot[i][0])+', M='+str(stpfPlot[i][1])+'), Mean ESS: '+str(mean(stpf[i]['ESS'][1:Tmin_nb])))
        print 'SP-TF (N='+str(stpfPlot[i][0])+', M='+str(stpfPlot[i][1])+') Mean ESS: ', mean(stpf[i]['ESS'][1:Tmin_nb])

if pltNestedMore:
    for i in range(nestedMoreNr):
        ax.plot(1+arange(Tmin_nb),nestedMore[i]['ESS'][:Tmin_nb], '-', lw=2, label='NestedMore SMC (N='+str(nestedMorePlot[i][0])+', M='+str(nestedMorePlot[i][1])+')')
        print 'NestedMore SMC (N='+str(nestedMorePlot[i][0])+', M='+str(nestedMorePlot[i][1])+') Mean ESS:', mean(nestedMore[i]['ESS'][1:Tmin_nb])
        
if pltBootstrap:
    ax.plot(1+arange(Tmin_nb), bootstrap['ESS'][:Tmin_nb], '-', lw=2, label='Bootstrap PF (N='+str(N_b)+')')
    print 'Bootstrap PF (N='+str(stpfPlot[i][0])+') Mean ESS: ', mean(bootstrap['ESS'][1:Tmin_nb])
ax.set_title('ESS')
ax.set_ylabel('ESS')
ax.set_xlabel('t')
ax.set_yscale('log')
#ax.set_ylim(2,500)
ax.legend(bbox_to_anchor=(2.2, .8))


Nested SMC (N=500, M=200) Mean ESS: 101.513306548
SP-TF (N=500, M=400) Mean ESS:  190.177638814
Out[40]:
<matplotlib.legend.Legend at 0x7f3f433b25d0>

In [14]:
fig, ax = subplots(1, 1)
if pltNested:
    for i in range(nestedNr):
        MSE_nested = median((xTrue[:Tmin_nn,:]-nested[i][columns[2:d+2]][:Tmin_nn])**2,axis=1)
        ax.plot(1+arange(Tmin_nn), MSE_nested, '-', lw=2, label='Nested SMC (N='+str(nestedPlot[i][0])+', M='+str(nestedPlot[i][1])+')')

if pltNestedMore:
    for i in range(nestedMoreNr):
        MSE_nestedMore = median((xTrue[:Tmin_nn,:]-nestedMore[i][columns[2:d+2]][:Tmin_nn])**2,axis=1)
        ax.plot(1+arange(Tmin_nn), MSE_nestedMore, '-', lw=2, label='NestedMore SMC (N='+str(nestedMorePlot[i][0])+', M='+str(nestedMorePlot[i][1])+')')

if pltST:
    for i in range(stpfNr):
        MSE_st = median((xTrue[:Tmin_nn,:]-stpf[i][columns[2:d+2]][:Tmin_nn])**2,axis=1)
        ax.plot(1+arange(Tmin_nn), MSE_st, '-', lw=2, label='ST-PF (N='+str(stpfPlot[i][0])+', M='+str(stpfPlot[i][1])+')')
        
if pltNips:
    MSE_nips = mean((xTrue[:Tmin_nn,:]-nips[nipscolumns[1:d+1]][:Tmin_nn])**2,axis=1)
    ax.plot(1+arange(Tmin_nn), MSE_nips, '-', lw=2, label='SMC (N='+str(N_n)+')')

ax.set_title('Median (over i=1:d) MSE of marginal posterior mean')
ax.set_ylabel('MSE')
ax.set_xlabel('t')
ax.set_yscale('log')
legend(bbox_to_anchor=(1.7, .8))
filename = 'plots/d'+str(d)+'_suppMatMSEmean.pdf'
savefig(filename, dpi=1200, bbox_inches="tight");



In [15]:
fig, ax = subplots(1, 1)
if pltNested:
    for i in range(nestedNr):
        var_nested = nested[i][columns[d+2:]][:Tmin_nn].values-nested[i][columns[2:d+2]][:Tmin_nn].values**2
        MSE_nested = median((PTrue[:Tmin_nn,:]-var_nested)**2,axis=1)
        ax.plot(1+arange(Tmin_nn), MSE_nested, '-', lw=2, label='Nested SMC (N='+str(nestedPlot[i][0])+', M='+str(nestedPlot[i][1])+')')

if pltST:
    for i in range(stpfNr):
        var_st = stpf[i][columns[d+2:]][:Tmin_nn].values-stpf[i][columns[2:d+2]][:Tmin_nn].values**2
        MSE_st = median((PTrue[:Tmin_nn,:]-var_st)**2,axis=1)
        ax.plot(1+arange(Tmin_nn), MSE_st, '-', lw=2, label='ST-PF (N='+str(stpfPlot[i][0])+', M='+str(stpfPlot[i][1])+')')
        
if pltNips:
    var_nips = nips[nipscolumns[d+1:]][:Tmin_nn].values - nips[nipscolumns[1:d+1]][:Tmin_nn].values**2
    MSE_nips = mean((PTrue[:Tmin_nn,:] - var_nips)**2,axis=1)
    ax.plot(1+arange(Tmin_nn), MSE_nips, '-', lw=2, label='SMC (N='+str(N_n)+')')
    
ax.set_title('Median (over i=1:d) MSE of marginal posterior variance')
ax.set_ylabel('MSE')
ax.set_xlabel('t')
ax.set_yscale('log')
#ax.set_ylim(0.0001,10)
legend(bbox_to_anchor=(1.7, .8))
filename = 'plots/d'+str(d)+'_suppMatMSEvar.pdf'
savefig(filename, dpi=1200, bbox_inches="tight");



In [66]:
test = zeros((1000000,30,60),dtype=bool)

In [67]:
sys.getsizeof(test)


Out[67]:
80

In [52]:
test[0,0] = 1

In [56]:
float(test[1,0])


Out[56]:
0.0

In [10]:
50000./75


Out[10]:
666.6666666666666

In [436]:



Out[436]:
array([5, 8])

In [435]:



Out[435]:
[1, 2, 3, 4]

In [ ]: