Hi everyone,
I have a data set [0,0,0,…1,1,1,1,…1,1,0,…0], and i want to know when it start and when it stop. so i wrote a model as follows:
import matplotlib.pyplot as plt
import numpy as np
from scipy import stats
import seaborn as sns
import arviz as az
import numpy as np
import pymc3 as pm
import os
import theano
import theano.tensor as tt
from theano.compile.ops import as_op
data_x4=np.ones(20)
data_y4_1=np.zeros(5)
data_y4_2=np.ones(10)
data_y4_3=np.zeros(5)
data_x4_pre=np.zeros(20)
data_y4=np.append(data_y4_1,data_y4_2)
data_y4=np.append(data_y4,data_y4_3)
data_x4=theano.shared(data_x4)
data_y4=theano.shared(data_y4)
with pm.Model() as model:
#z = pm.DiscreteUniform('z',lower =0,upper=5,transform=None)
#z=tt.clip(z, 0, 5)
start = pm.Categorical('start', p=np.ones(10)/10)
stop_t = pm.Categorical('stop_t', p=np.ones(10)/10)
stop=pm.Deterministic("stop",stop_t+10)
for i in range(20):
data_x4_pre[i]=0
for i in range(start,stop):
data_x4_pre[i]=1
Y = pm.Normal('Y',mu=data_x4_pre,sigma=1,observed=data_y4)
trace=pm.sample(1000)
and an error come out.
Traceback (most recent call last):
File "<ipython-input-33-e9f25260044b>", line 23, in <module>
for i in range(start,stop):
TypeError: 'FreeRV' object cannot be interpreted as an integer
is there any suggestion? thanks a lot.