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. 03评估 A/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)
方差分析(多个组)
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-hacking(搜索显著性)

故障排除

常见问题

问题:用于 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's)
  • 检查异常值(z 分数、IQR)
  • 如有需要,进行多重检验校正
  • 报告效应量,而不仅仅是 p 值

评论

支持 Markdown