In [2]:
%matplotlib inline
import sys
import os.path
sys.path.append(os.path.join(os.pardir,os.pardir))
import disaggregator.GreenButtonDatasetAdapter as gbda
import matplotlib.pyplot as plt
import pymc
In [12]:
xml_path = '../../../xml_data.xml'
with open(xml_path,'r') as f:
xml_string = f.read()
trace = gbda.get_trace_from_xml(xml_string)
In [13]:
plt.plot(trace.series)
plt.show()
hist = plt.hist(trace.series.astype(float),bins=150)
In [14]:
a,a,a = plt.hist(trace.series.astype(float),bins=150)
plt.yscale('log')
In [15]:
a,a,a = plt.hist(trace.series.diff().abs().fillna(0).astype(float),bins=150)
plt.yscale('log')
In [28]:
data = trace.series.astype(float).values[:100]/1000
print data
In [41]:
n_states = 3
mean_lower_bounds = [0,0,0]
mean_upper_bounds = [1,1,1]
mean_bounds = zip(mean_lower_bounds,mean_upper_bounds)
beta_lower_bounds = [0,0,0]
beta_upper_bounds = [1,1,1]
beta_bounds = zip(beta_lower_bounds,beta_upper_bounds)
prob_priors = [.9,.5,.1]
alpha_params = [pymc.Uniform('mean_param_{}'.format(i),lower=lower, upper=upper) for i,(lower,upper) in enumerate(mean_bounds)]
beta_params = [pymc.Uniform('std_param_{}'.format(i),lower=lower, upper=upper) for i,(lower,upper) in enumerate(beta_bounds)]
appliance_ab = zip(alpha_params,beta_params)
appliances = [pymc.Gamma('appliance_params_{}'.format(i),alpha=alpha,beta=beta) for i,(alpha,beta) in enumerate(appliance_ab)]
prob_params = [pymc.Bernoulli('prob_param_{}'.format(i),p=p) for i,p in enumerate(prob_priors)]
@pymc.stochastic
def actual_output(appliances=appliances,probs=prob_params,value=data,observed=True):
out = 0
for appliance,prob in zip(appliances,probs):
if prob:
out = out + appliance
print out
return out
@pymc.stochastic
def pred_output(appliances=appliances,probs=prob_params,value=.2):
out = 0
for appliance,prob in zip(appliances,probs):
if prob:
out = out + appliance
return out
M = pymc.MCMC(pymc.Model([pred_output,actual_output]))
In [1]:
M.sample(1000,500,10)
print
In [40]:
pymc.Matplot.plot(M)
In [ ]: