On Thursday, November 30, 2017 at 6:17:05 PM UTC-5, Robert wrote: > Hi, > > I am new to Python. Now I follow a thread on mask array usage on line: > > > https://stackoverflow.com/questions/31563970/fitting-a-binomial-distribution-with-pymc-raises-zeroprobability-error-for-certa > > > I understand the problem, but I don't understand the answer follow the link. > > Because the 'mask' array is composed of integer, if it is assigned a fraction > number as suggested a 1.5, it will be formatted to an integer 1. > > > observed_values = sp.random.binomial(n = 10.0, p = 0.1, size = 100) > ... > mask = sp.zeros_like(observed_values) > > > Are you clear the answer's meaning? > > > "You can give it a non-integer value in order to avoid the problem that you > cite. > For example, if you fill with, say, 1.5 that should work." > > > > > Thanks in advance
Excuse me for the top post. Now I find the more specific question from the below link: https://pymc-devs.github.io/pymc/tutorial.html At almost the bottom part of the web page, when I run the script "masked_values = masked_array(disasters_array, mask=disasters_array==-999)" has an error: ... masked_values = masked_array(disasters_array, mask=disasters_array==-999) Traceback (most recent call last): File "<stdin>", line 7, in <module> NameError: name 'masked_array' is not defined I use Python 2.7 on Ubuntu 16.04, 64-bit. Is there an error in the pymc tutorial web page? Can you tell me what is wrong? Thanks, =========================== # Switchpoint switch = DiscreteUniform('switch', lower=0, upper=110) # Early mean early_mean = Exponential('early_mean', beta=1) # Late mean late_mean = Exponential('late_mean', beta=1) @deterministic(plot=False) def rate(s=switch, e=early_mean, l=late_mean): """Allocate appropriate mean to time series""" out = np.empty(len(disasters_array)) # Early mean prior to switchpoint out[:s] = e # Late mean following switchpoint out[s:] = l return out # The inefficient way, using the Impute function: # D = Impute('D', Poisson, disasters_array, mu=r) # # The efficient way, using masked arrays: # Generate masked array. Where the mask is true, # the value is taken as missing. masked_values = masked_array(disasters_array, mask=disasters_array==-999) # Pass masked array to data stochastic, and it does the right thing disasters = Poisson('disasters', mu=rate, value=masked_values, observed=True) -- https://mail.python.org/mailman/listinfo/python-list