/ / Wie man eine einfache Monte - Carlo - Funktion in Pymc - Python, Pymc implementiert

Wie man eine einfache Monte - Carlo - Funktion in Pymc - Python, Pymc implementiert

Ich versuche herauszufinden, wie man eine Monte-Carlo-Funktion in Python implementiert, indem man mit pymc eine Tabelle von Douglas Hubbard in seinem Buch repliziert Wie man etwas misst

Mein Versuch war:

import numpy as np
import pandas as pd
from pymc import DiscreteUniform, Exponential, deterministic, Poisson, Uniform, Normal, Stochastic, MCMC, Model


maintenance_saving_range = DiscreteUniform("maintenance_saving_range", lower=10, upper=21)
labour_saving_range = DiscreteUniform("labour_saving_range", lower=-2, upper=9)
raw_material_range = DiscreteUniform("maintenance_saving_range", lower=3, upper=10)
production_level_range = DiscreteUniform("maintenance_saving_range", lower=15000, upper=35000)



@deterministic(plot=False)
def rate(m = maintenance_saving_range, l = labour_saving_range, r=raw_material_range, p=production_level_range):
return (m + l + r) * p

model = Model([rate, maintenance_saving_range, labour_saving_range, raw_material_range, production_level_range])
mc = MCMC(model)

Leider bekomme ich einen Fehler: ValueError: A tallyable PyMC object called maintenance_saving_range already exists. This will cause problems for some database backends.

Was habe ich falsch gemacht?

Antworten:

1 für die Antwort № 1

Ah, es war ein Fehler beim Kopieren und Einfügen.

Ich hatte drei Distributionen mit dem gleichen Namen aufgerufen.

Hier ist der Code, der funktioniert.

import numpy as np
import pandas as pd
from pymc import DiscreteUniform, Exponential, deterministic, Poisson, Uniform, Normal, Stochastic, MCMC, Model
%matplotlib inline
import matplotlib.pyplot as plt

maintenance_saving_range = DiscreteUniform("maintenance_saving_range", lower=10, upper=21)
labour_saving_range = DiscreteUniform("labour_saving_range", lower=-2, upper=9)
raw_material_range = DiscreteUniform("raw_material_range", lower=3, upper=10)
production_level_range = DiscreteUniform("production_level_range", lower=15000, upper=35000)


@deterministic(plot=False, name="rate")
def rate(m = maintenance_saving_range, l = labour_saving_range, r=raw_material_range, p=production_level_range):
#out = np.empty(10000)
out = (m + l + r) * p
return out
model = Model([rate, maintenance_saving_range, labour_saving_range, raw_material_range])
mc = MCMC(model)
mc.sample(iter=10000)