meta_analysis / README.md
Donlagon007's picture
Upload 8 files
a0bc3fc verified

A newer version of the Streamlit SDK is available: 1.56.0

Upgrade
metadata
title: Bayesian Meta-Analysis System
emoji: 🎲
colorFrom: blue
colorTo: indigo
sdk: streamlit
sdk_version: 1.31.0
app_file: app_meta_analysis.py
pinned: false
python_version: '3.11'

🎲 Bayesian Meta-Analysis System

貝氏後設分析系統 - 用於分析寶可夢屬性在多個道館中的對戰表現

📋 系統功能

核心分析

  • 🎲 貝氏階層模型:使用 PyMC 進行完整的貝氏推論
  • 📊 後設分析:整合多個研究單位(道館)的資料
  • 🔍 收斂診斷:R-hat、ESS 等完整診斷指標
  • 🔮 預測分析:預測新研究的效應

視覺化

  1. **模型結構圖 (DAG)**:展示貝氏階層模型的完整結構
  2. DAG 中文對照表:詳細解釋每個節點的統計意義和實際應用
  3. Trace Plot:完整的 MCMC 軌跡(warmup + posterior)
  4. Posterior Plot:後驗分佈圖(d, sigma, delta_new, OR)
  5. Forest Plot:各研究單位的效應比較

AI 助手 🤖

  • 💬 智能對話:使用 Google Gemini 或 Anthropic Claude
  • 📊 結果解釋:深入解釋統計指標和分析結果
  • 🎯 快速問題:8 個預設問題快速獲得答案
  • 🔄 對話記憶:保持上下文連貫性
  • 🎮 策略建議:基於分析結果提供實戰建議

統計報告

  • 整體效應估計(d, OR)
  • 異質性評估(sigma)
  • 預測新研究效果(delta_new)
  • 完整的收斂診斷
  • 可下載的文字報告

🚀 使用方式

1. 安裝依賴

pip install -r requirements.txt

2. 準備資料

資料格式需求:CSV 檔案,每一列代表一個研究單位(道館),包含以下欄位:

{Type}_win_count, {Type}_total_battles

範例:

Fire_win_count,Fire_total_battles,Water_win_count,Water_total_battles,Grass_win_count,Grass_total_battles
122,133,22,145,85,140
85,132,17,135,52,129
...

3. 啟動系統

streamlit run app_meta_analysis.py

4. 使用流程

  1. 設定 AI 助手(可選):在左側輸入 Google Gemini 或 Claude API Key
  2. 上傳 CSV 資料檔
  3. 選擇實驗組和對照組屬性
  4. 設定 MCMC 參數(可使用預設值)
  5. 點擊「開始貝氏分析」
  6. 查看分析結果和視覺化圖表
  7. 使用 AI 助手詢問問題和獲取建議
  8. 下載完整報告

📊 分析方法

貝氏階層模型

本系統使用以下階層模型:

Level 1 (Overall):
  d ~ Normal(0, 1000)           # 整體平均效應
  tau ~ Gamma(0.001, 0.001)     # 精確度
  sigma = 1/sqrt(tau)           # 異質性

Level 2 (Study-specific):
  mu[i] ~ Normal(0, 100)        # 基線
  delta[i] ~ Normal(d, sigma)   # 各研究效應

Level 3 (Likelihood):
  pc[i] = invlogit(mu[i])       # 對照組勝率
  pt[i] = invlogit(mu[i] + delta[i])  # 實驗組勝率
  
  rc[i] ~ Binomial(nc[i], pc[i])  # 對照組觀測
  rt[i] ~ Binomial(nt[i], pt[i])  # 實驗組觀測

Derived:
  OR = exp(d)                   # 勝算比
  delta_new ~ Normal(d, sigma)  # 預測新研究

MCMC 抽樣策略

系統採用分階段抽樣:

  1. Warmup 階段:Burn-in,讓鏈收斂到穩態分佈
  2. Tune 階段:調整 NUTS 採樣器參數
  3. Posterior 階段:正式抽樣,用於推論

完整的 trace 會保留 warmup + posterior,用於診斷。

📈 關鍵指標解讀

d (Log Odds Ratio)

  • 整體平均效應(對數尺度)
  • d > 0:實驗組優勢
  • d < 0:對照組優勢
  • 95% HDI 不包含 0 → 顯著

sigma (Between-study SD)

  • 研究間異質性
  • sigma < 0.3:低異質性
  • 0.3 < sigma < 0.5:中等異質性
  • sigma > 0.5:高異質性

OR (Odds Ratio)

  • 勝算比 = exp(d)
  • OR = 1:無差異
  • OR > 1:實驗組勝算較高
  • OR < 1:對照組勝算較高

delta_new (Predictive Effect)

  • 預測新研究的效應
  • 不確定性比 d 更大(考慮異質性)

🔧 系統架構

app_meta_analysis.py                # Streamlit 主應用
├── meta_analysis_core.py           # 貝氏分析核心引擎
├── meta_analysis_utils.py          # 視覺化與報告工具
└── meta_analysis_llm_assistant.py  # AI 助手模組(Gemini/Claude)

📦 依賴套件

  • Streamlit: Web 介面
  • PyMC: 貝氏建模與 MCMC 抽樣
  • ArviZ: 貝氏推論視覺化
  • Matplotlib: 圖表繪製
  • NumPy/Pandas: 資料處理
  • Graphviz: DAG 圖生成
  • Google Gemini: AI 助手(可選)
  • Anthropic Claude: AI 助手(可選)

⚙️ 進階設定

MCMC 參數調整

  • Warmup 樣本數(預設 1000):增加以改善收斂
  • Posterior 樣本數(預設 2000):增加以提高精確度
  • Tune 樣本數(預設 1000):增加以優化採樣效率
  • 鏈數(預設 1):多鏈可檢測收斂問題

收斂診斷

  • R-hat < 1.1:已收斂
  • ESS > 400:有效樣本數足夠
  • Trace 呈現穩定震盪:視覺檢查

🎮 實際應用

寶可夢對戰分析

  • 比較不同屬性在多個道館的表現
  • 評估屬性優勢的一致性
  • 預測新道館的對戰結果

其他應用場景

  • 醫學研究的臨床試驗後設分析
  • 教育研究的介入效果評估
  • 市場研究的產品比較

📝 注意事項

  1. 資料品質:確保資料完整無誤
  2. 收斂檢查:務必檢查 R-hat 和 Trace Plot
  3. 異質性:高異質性時謹慎解讀整體效應
  4. 樣本數:研究數量太少(<3)時結果不可靠

🤖 AI 助手使用指南

支援的 API

  1. Google Gemini

  2. Anthropic Claude

快速問題功能

系統提供 8 個預設快速問題:

  1. 📊 分析總結
  2. 🎯 解釋 d 和勝算比
  3. 🔍 解釋異質性(sigma)
  4. ❓ 貝氏後設分析概念
  5. 🔮 預測新道館效應
  6. 🆚 貝氏 vs 頻率論比較
  7. ⚔️ 對戰策略建議
  8. 🏛️ 道館間比較分析

對話技巧

  • 可以用中文或英文提問
  • AI 會自動根據問題語言回應
  • 支援追問和深入探討
  • 可以要求舉例說明
  • 對話會保持上下文記憶

實用問法範例

"為什麼 sigma 這麼高?"
"Flying 對 Dark 的優勢在所有道館都一樣嗎?"
"如果我要挑戰新道館,勝率預測是多少?"
"這個 HDI 包含 1 是什麼意思?"
"給我一些實戰建議"

🤝 貢獻與支援

本系統基於原始 Python 腳本改寫,保持所有原始功能。

📄 授權

MIT License


作者: Claude
版本: 1.0.0
更新日期: 2026-01-19