Wen1201 commited on
Commit
5f41fef
·
verified ·
1 Parent(s): 52fc51b

Upload bayesian_core.py

Browse files
Files changed (1) hide show
  1. bayesian_core.py +18 -35
bayesian_core.py CHANGED
@@ -355,45 +355,28 @@ class BayesianHierarchicalAnalyzer:
355
  raise ValueError("請先執行分析")
356
 
357
  try:
358
- import re
359
-
360
- # 使用 PyMC 原本的圖
361
  gv = pm.model_to_graphviz(self.model)
362
 
363
- # 獲取欄位資訊 (動態)
364
- control_prefix = getattr(self, 'col_control_win', 'control').replace('_win', '').replace('_battles', '').replace('_total', '')
365
- treatment_prefix = getattr(self, 'col_treatment_win', 'treatment').replace('_win', '').replace('_battles', '').replace('_total', '')
366
- control_win = getattr(self, 'col_control_win', 'control_win')
367
- treatment_win = getattr(self, 'col_treatment_win', 'treatment_win')
368
-
369
- # 替換標籤 (只改文字,不改圖結構)
370
- source = gv.source
371
-
372
- # 替換模型變數的標籤
373
- replacements = {
374
- # PyMC 變數名 -> 顯示名稱
375
- f'label="{f"p_{control_prefix}"}"': f'label="p_{control_prefix}[i]\\n({control_prefix.capitalize()} Win Rate)"',
376
- f'label="{f"p_{treatment_prefix}"}"': f'label="p_{treatment_prefix}[i]\\n({treatment_prefix.capitalize()} Win Rate)"',
377
- f'label="{control_win}_obs"': f'label="{control_win}_obs[i]\\n({control_prefix.capitalize()} Wins)"',
378
- f'label="{treatment_win}_obs"': f'label="{treatment_win}_obs[i]\\n({treatment_prefix.capitalize()} Wins)"',
379
- 'label="d"': f'label="d\\n(Overall Effect\\n{treatment_prefix} vs {control_prefix})"',
380
- 'label="tau"': 'label="tau\\n(Precision)"',
381
- 'label="sigma"': 'label="sigma\\n(Between-Pair SD)"',
382
- 'label="mu"': 'label="mu[i]\\n(Baseline)"',
383
- 'label="delta"': f'label="delta[i]\\n({treatment_prefix.capitalize()} Advantage)"',
384
- 'label="delta_new"': 'label="delta_new\\n(New Pair)"',
385
- 'label="or_speed"': 'label="OR\\n(Odds Ratio)"',
386
- }
387
-
388
- # 執行替換
389
- for old, new in replacements.items():
390
- source = source.replace(old, new)
391
-
392
- # 更新 graphviz 物件
393
- gv.source = source
394
 
395
  return gv
396
-
397
  except Exception as e:
398
  raise Exception(f"無法生成 DAG 圖: {str(e)}")
399
 
 
355
  raise ValueError("請先執行分析")
356
 
357
  try:
 
 
 
358
  gv = pm.model_to_graphviz(self.model)
359
 
360
+ # 嘗試美化標籤 (如果失敗就用原圖)
361
+ try:
362
+ # 獲取欄位前綴
363
+ control_prefix = self.col_control_win.replace('_win', '').replace('_battles', '').replace('_total', '')
364
+ treatment_prefix = self.col_treatment_win.replace('_win', '').replace('_battles', '').replace('_total', '')
365
+
366
+ # 簡單替換標籤
367
+ src = gv.source
368
+ src = src.replace('label="d"', f'label="d\\n({treatment_prefix} vs {control_prefix})"')
369
+ src = src.replace(f'label="p_{control_prefix}"', f'label="p_{control_prefix}[i]"')
370
+ src = src.replace(f'label="p_{treatment_prefix}"', f'label="p_{treatment_prefix}[i]"')
371
+ src = src.replace(f'label="{self.col_control_win}_obs"', f'label="{self.col_control_win}_obs[i]"')
372
+ src = src.replace(f'label="{self.col_treatment_win}_obs"', f'label="{self.col_treatment_win}_obs[i]"')
373
+ src = src.replace('label="mu"', 'label="mu[i]"')
374
+ src = src.replace('label="delta"', 'label="delta[i]"')
375
+ gv.source = src
376
+ except:
377
+ pass
 
 
 
 
 
 
 
 
 
 
 
 
 
378
 
379
  return gv
 
380
  except Exception as e:
381
  raise Exception(f"無法生成 DAG 圖: {str(e)}")
382