I ran into below error
Traceback (most recent call last):
File “C:\Users\chigozie.boniface_in\anaconda3\envs\downgrade\lib\site-packages\pymc3\parallel_sampling.py”, line 137, in run
self._start_loop()
File “C:\Users\chigozie.boniface_in\anaconda3\envs\downgrade\lib\site-packages\pymc3\parallel_sampling.py”, line 191, in _start_loop
point, stats = self._compute_point()
File “C:\Users\chigozie.boniface_in\anaconda3\envs\downgrade\lib\site-packages\pymc3\parallel_sampling.py”, line 216, in _compute_point
point, stats = self._step_method.step(self._point)
File “C:\Users\chigozie.boniface_in\anaconda3\envs\downgrade\lib\site-packages\pymc3\step_methods\arraystep.py”, line 276, in step
apoint, stats = self.astep(array)
File “C:\Users\chigozie.boniface_in\anaconda3\envs\downgrade\lib\site-packages\pymc3\step_methods\hmc\base_hmc.py”, line 147, in astep
self.potential.raise_ok(self._logp_dlogp_func._ordering.vmap)
File “C:\Users\chigozie.boniface_in\anaconda3\envs\downgrade\lib\site-packages\pymc3\step_methods\hmc\quadpotential.py”, line 272, in raise_ok
raise ValueError("\n".join(errmsg))
ValueError: Mass matrix contains zeros on the diagonal
The derivative of RV base_log__
.ravel()[0] is zero.
The derivative of RV sat_paid_search_s_log__
.ravel()[0] is zero.
The derivative of RV coef_paid_search_s_log__
.ravel()[0] is zero.
The derivative of RV car_radio_s_logodds__
.ravel()[0] is zero.
The derivative of RV sat_radio_s_log__
.ravel()[0] is zero.
The derivative of RV coef_radio_s_log__
.ravel()[0] is zero.
The derivative of RV car_tv_s_logodds__
.ravel()[0] is zero.
The derivative of RV sat_tv_s_log__
.ravel()[0] is zero.
The derivative of RV coef_tv_s_log__
.ravel()[0] is zero.
“”"
while running
with pm.Model() as mmm:
channel_contributions = []
for channel in X.columns:
coef = pm.Exponential(f'coef_{channel}', lam=0.0001) # regression coefficient
sat = pm.Exponential(f'sat_{channel}', lam=1) # saturation strength
car = pm.Beta(f'car_{channel}', alpha=2, beta=2) # carryover strength
channel_data = X[channel].values
channel_contribution = pm.Deterministic(f'contribution_{channel}',
coef*saturate(carryover(channel_data, car), sat))
channel_contributions.append(channel_contribution)
base = pm.Exponential('base', lam=0.0001) # baseline
noise = pm.Exponential('noise', lam=0.0001) # noise
sales = pm.Normal('revenue', mu=sum(channel_contributions) + base, sigma=noise, observed=y.values)
trace = pm.sample(return_inferencedata=True, tune=3000)
Kingly assist. I have gone through every suggestion regarding this error but couldn’t solve it.