Is it useful to set a fraction number here to the mask value?
Robert
rxjwg98 at gmail.com
Thu Nov 30 20:43:23 EST 2017
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)
More information about the Python-list
mailing list