# Using Laplace as likelihood distribution

I am working with with some dataset and thought of using Laplace as likelihood distribution. So, I designed a model that takes the mu parameter as piror using normal distribution and b parameter as prior using exponential distribution. When I ran the code I get error with unexpected keyword argument ‘mu’. Why is that? I checked the documentation and the parameters are mu and b.

Can you post the relevant code snippet or error traceback?
I checked the source code of `Laplace` and it has a mu parameter as described in the docstring.

Here is the code:

``````def S2_0_Bayesian_Interface(data):
########################################################################################################################
with pm.Model() as model_0:
# Prior Distributions for unknown model parameters:
b_0 = pm.HalfNormal('b_0', sd=5)
mu_0 = pm.Normal('mu_0', mu=0, sd=5)

# Observed data is from a Likelihood distributions (Likelihood (sampling distribution) of observations):
observed_data_0 = Laplace('observed_data_0', mu=mu_0, b=b_0, observed=data)

# Printing the result of log_likelihood:
# print('log_likelihood result:', model_0)

# draw 5000 posterior samples
trace_0 = pm.sample(draws=1000, tune=1000, chains=3, cores=1, progressbar=True)

# Obtaining Posterior Predictive Sampling:
post_pred_0 = pm.sample_posterior_predictive(trace_0, samples=1000)
print(post_pred_0['observed_data_0'].shape)
print('\nSummary: ')
print(pm.stats.summary(data=trace_0))
print(pm.stats.summary(data=post_pred_0))
########################################################################################################################
return trace_0, post_pred_0
``````

but when I ran the code, it says that it does not have observed parameter

I can’t reproduce any problem from your code snippet. This runs completely fine for me (`pymc3==3.11.4`).

``````import pymc3 as pm
import numpy as np

data = np.random.normal(size=3)

with pm.Model() as model_0:
# Prior Distributions for unknown model parameters:
b_0 = pm.HalfNormal('b_0', sd=5)
mu_0 = pm.Normal('mu_0', mu=0, sd=5)

# Observed data is from a Likelihood distributions (Likelihood (sampling distribution) of observations):
observed_data_0 = pm.Laplace('observed_data_0', mu=mu_0, b=b_0, observed=data)

# Printing the result of log_likelihood:
# print('log_likelihood result:', model_0)

# draw 5000 posterior samples
trace_0 = pm.sample(draws=1000, tune=1000, chains=3, cores=1, progressbar=True)

# Obtaining Posterior Predictive Sampling:
post_pred_0 = pm.sample_posterior_predictive(trace_0, samples=1000)
print(post_pred_0['observed_data_0'].shape)
print('\nSummary: ')
print(pm.stats.summary(data=trace_0))
print(pm.stats.summary(data=post_pred_0))
``````

well, the package version I’m using is 3.11.2 and when I replaced my version of code to include your way, I keep on getting following errors:

``````TypeError: Laplace() got an unexpected keyword argument 'mu'
``````

If I removed `mu=` and `b=` and kept `observed=` then I get

``````TypeError: Laplace() got an unexpected keyword argument 'observed'
``````

Then try to update to latest release.
On Github you can search the tickets for Laplace. Maybe this was a bug that got fixed?

An check your import - you’re writing `Laplace` not `pm.Laplace`. From the code you posted we can’t rule out that this isn’t even the PyMC Laplace class.

thank you for the help. I managed to get it to work. it turns out I had to just update the package.