mcpField
S
statistical-analysis

statistical-analysis

github.com/pluginagentmarketplaceデータ・データベース752 回インストール43 週間前に更新
リポジトリ

statistical-analysis について

statistical-analysisは、SciPyやstatsmodelsなどのPythonライブラリを使った統計手法のガイドです。一般的な検定、信頼区間、相関、A/Bテストに加え、前提条件の確認やよくある誤りを扱います。

主な機能

  1. 01t検定、カイ二乗検定、ANOVA
  2. 02信頼区間と相関分析
  3. 03有意性を確認するA/Bテスト
  4. 04前提条件の確認とノンパラメトリックな代替手法
  5. 05多重検定と検出力分析の指針

活用シーン

  1. 01群の平均値やカテゴリーデータを比較
  2. 02区間を推定し相関を調べる
  3. 03A/Bテストの結果を評価
  4. 04前提条件を確認し多重比較に対処

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pluginagentmarketplace/custom-plugin-ai-data-scientist --skill statistical-analysis

インストール後、Claude Code で/statistical-analysisを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
ab_test_config.yaml
references/
TEST_SELECTION_GUIDE.md
scripts/
hypothesis_testing.py

詳細

統計分析

統計手法を適用してデータを理解し、結果を検証します。

クイックスタート

from scipy import stats
import numpy as np

# Descriptive statistics
data = np.array([1, 2, 3, 4, 5])
print(f"Mean: {np.mean(data)}")
print(f"Std: {np.std(data)}")

# Hypothesis testing
group1 = [23, 25, 27, 29, 31]
group2 = [20, 22, 24, 26, 28]
t_stat, p_value = stats.ttest_ind(group1, group2)
print(f"P-value: {p_value}")

主な検定

t検定(平均値の比較)
# One-sample: Compare to population mean
stats.ttest_1samp(data, 100)

# Two-sample: Compare two groups
stats.ttest_ind(group1, group2)

# Paired: Before/after comparison
stats.ttest_rel(before, after)
カイ二乗検定(カテゴリーデータ)
from scipy.stats import chi2_contingency

observed = np.array([[10, 20], [15, 25]])
chi2, p_value, dof, expected = chi2_contingency(observed)
ANOVA(複数グループ)
f_stat, p_value = stats.f_oneway(group1, group2, group3)

信頼区間

from scipy import stats

confidence_level = 0.95
mean = np.mean(data)
se = stats.sem(data)
ci = stats.t.interval(confidence_level, len(data)-1, mean, se)

print(f"95% CI: [{ci[0]:.2f}, {ci[1]:.2f}]")

相関

# Pearson (linear)
r, p_value = stats.pearsonr(x, y)

# Spearman (rank-based)
rho, p_value = stats.spearmanr(x, y)

分布

# Normal
x = np.linspace(-3, 3, 100)
pdf = stats.norm.pdf(x, loc=0, scale=1)

# Sampling
samples = np.random.normal(0, 1, 1000)

# Test normality
stat, p_value = stats.shapiro(data)

A/Bテストのフレームワーク

def ab_test(control, treatment, alpha=0.05):
    """
    Run A/B test with statistical significance

    Returns: significant (bool), p_value (float)
    """
    t_stat, p_value = stats.ttest_ind(control, treatment)

    significant = p_value < alpha
    improvement = (np.mean(treatment) - np.mean(control)) / np.mean(control) * 100

    return {
        'significant': significant,
        'p_value': p_value,
        'improvement': f"{improvement:.2f}%"
    }

解釈

P値 < 0.05:帰無仮説を棄却します(統計的に有意です)

P値 >= 0.05:帰無仮説を棄却できません(有意ではありません)

よくある落とし穴

  • 多重検定を補正せずに行う
  • サンプルサイズが小さい
  • 仮定(正規性、独立性)を無視する
  • 相関と因果関係を混同する
  • pハッキング(有意性を探し回る)

トラブルシューティング

よくある問題

問題:t検定を行うにはデータが正規分布していない

# Check normality first
stat, p = stats.shapiro(data)
if p < 0.05:
    # Use non-parametric alternative
    stat, p = stats.mannwhitneyu(group1, group2)  # Instead of ttest_ind

問題:多重比較によって偽陽性が増加する

from statsmodels.stats.multitest import multipletests

# Apply Bonferroni correction
p_values = [0.01, 0.03, 0.04, 0.02, 0.06]
rejected, p_adjusted, _, _ = multipletests(p_values, method='bonferroni')

問題:検出力が不足している研究(サンプルが少なすぎる)

from statsmodels.stats.power import TTestIndPower

# Calculate required sample size
power_analysis = TTestIndPower()
sample_size = power_analysis.solve_power(
    effect_size=0.5,  # Medium effect (Cohen's d)
    power=0.8,        # 80% power
    alpha=0.05        # 5% significance
)
print(f"Required n per group: {sample_size:.0f}")

問題:分散が不均一

# Check with Levene's test
stat, p = stats.levene(group1, group2)
if p < 0.05:
    # Use Welch's t-test (default in scipy)
    t, p = stats.ttest_ind(group1, group2, equal_var=False)

問題:外れ値が結果に影響する

from scipy.stats import zscore

# Detect outliers (|z| > 3)
z_scores = np.abs(zscore(data))
clean_data = data[z_scores < 3]

# Or use robust statistics
median = np.median(data)
mad = np.median(np.abs(data - median))  # Median Absolute Deviation
デバッグ用チェックリスト
  • サンプルサイズが十分か確認する(検出力分析)
  • 正規性の仮定を検定する(Shapiro-Wilk検定)
  • 分散の均一性を検定する(Levene検定)
  • 外れ値を確認する(zスコア、IQR)
  • 必要に応じて多重検定を補正する
  • p値だけでなく、効果量も報告する

コメント