Spaces:
Sleeping
Sleeping
Upload bayesian_core.py
Browse files- 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 |
-
|
| 365 |
-
|
| 366 |
-
|
| 367 |
-
|
| 368 |
-
|
| 369 |
-
|
| 370 |
-
|
| 371 |
-
|
| 372 |
-
|
| 373 |
-
|
| 374 |
-
|
| 375 |
-
f'label="{
|
| 376 |
-
|
| 377 |
-
|
| 378 |
-
|
| 379 |
-
|
| 380 |
-
|
| 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 |
|