Ich habe Beobachtungen von mehreren optischen Emissionslinien, und ich habe ein Modell, das mehrere (Fluss) Verhältnisse dieser Linien, basierend auf zwei Parametern, q
und z
, die ich will schließen.pymc: Inferring Parameter basierend auf Funktionen von Observablen
Ich habe @pymc.deterministic
Objekte erstellt, die Werte von q
und z
nehmen (von denen jeder hat uninformativ priors über einige physikalisch interessanten Region), und sie in ein Verhältnis „vorhergesagt“. Es gibt etwa 7-Verhältnisse, und sie haben die Form:
@pymc.deterministic(observed=True, value=NII_SII)
def NII_SII_th(q=q, z=z):
return NII_SII_g(np.array([q, z]))
I auch die Verhältnisse aus Beobachtungen abgeleitet definieren kann, wie beispielsweise
@pymc.deterministic
def NII_SII(NII_6584=NII_6584, SII_6717=SII_6717,
rcf_NII_6584=rcf_NII_6584, rcf_SII_6717=rcf_SII_6717):
return np.log10(
(rcf_NII_6584*NII_6584)/\
(rcf_SII_6717*SII_6717))
wo zum Beispiel NII_6584
ist der beobachtete Fluß einer der Linien und rcf_NII_6584
ist die Flusskorrektur für die gleiche Linie. Diese Korrekturen werden, sich durch die Linienwellenlängen (bekannt mit unendlicher Genauigkeit) bestimmt, und durch einen Parameter EBV
, die aus dem beobachteten Flussverhältnis von zwei Linien berechnet werden können, die angeblich ein festes Verhältnis haben r
:
@pymc.deterministic
def EBV(Ha=Ha, Hb=Hb, r=r, R_V=R_V, Ha_l=Ha_l, Hb_l=Hb_l):
kHb = gas_meas.calzetti_k(lams=np.array([Ha_l]), Rv=R_V)
kHa = gas_meas.calzetti_k(lams=np.array([Hb_l]), Rv=R_V)
return 2.5/(kHb - kHa) * np.log10((Ha/Hb)/r)
Ich habe auch eine vorherige auf den Wert von R_V
.
Die Messungen selbst als Normalverteilungen ausgedrückt werden, wie
NII_6584 = pymc.Normal(
'NII_6584', mu=f_row['[NII]6584'],
tau=1./e_row['[NII]6584']**2.,
observed=True, value=f_row['[NII]6584'])
würde Ich mag Schätzungen von R_V
, EBV
, q
und z
bekommen. Allerdings, wenn ich ein pymc
Model
von all diesen machen, wie ich höre, dass Deterministic
Objekte können nicht Werte beobachtet:
TypeError: __init__() got an unexpected keyword argument 'value'
Zuerst bin ich die Art von Deterministic
Objekte Missverständnis? Wenn ja, wie kann ich sonst auf Werte schließen, die nicht direkt beobachtet werden?
Zweitens, konstruiere ich die Beobachtungen richtig? Es erscheint merkwürdig, dass ich den beobachteten Fluss als das Mittelwert- und das Wertargument spezifizieren müsste, aber es ist mir nicht klar, was ich sonst tun soll, außer dass ich auch die Flussmittel und Varianzen modelliere, was unnötig kompliziert erscheint.
Jeder Rat würde geschätzt werden!
Das ist ziemlich nützlich, so dass ich bin zu akzeptieren, da es die einzige versuchte Antwort ist ich habe bekommen. Danke für Ihre Hilfe! – DathosPachy