| 1234567891011121314151617181920212223242526272829 |
- import numpy as np
- import pandas as pd
- import pymc as pm
- def record(name,var):
- pm.Deterministic(f'{name}_mu',var)
- def observe(name,var,observed,sigma=1):
- if isinstance(observed,pd.DataFrame):
- if name not in observed.columns:
- raise Exception(f'observed data中未找到{name}')
- observed = observed.loc[:,name].values
- mu = pm.Deterministic(f'{name}_mu',var)
- sigma = pm.HalfNormal(f'{name}_sigma',sigma=sigma)
- pm.Normal(name,mu=mu,sigma=sigma,observed=observed)
- def reorder_posterior(prior:dict,posterior:dict):
- param_posterior_reorder = {'F_air':{}}
- for equp_name in prior.keys():
- param_posterior_reorder.setdefault(equp_name,{})
- for param_name,param_value in posterior.items():
- if '__' in param_name:
- continue
- if param_name == 'F_air_val_rw':
- param_value = param_value[-1]
- if param_name.startswith(equp_name):
- param_name_adj = param_name.replace(f'{equp_name}_','')
- param_posterior_reorder[equp_name][param_name_adj] = param_value
- return param_posterior_reorder
|