未记录事实核验 · 状态:维护中

记录仅说明核验时间与维护状态,不保证适用于所有环境;使用前请留意正文中的版本、适用条件与风险提示。

warning 适用边界与维护说明

本文适合学习五步假设检验流程及按正文顺序开展模拟数据练习,不构成真实教学效果或实施收益的实证证据,也不是可直接用于实际决策的自动选型工具。当前步骤4在等方差分支仍将非合并方差标准误与等方差检验自由度组合,置信区间与检验不一致;步骤5未接收alpha,改变步骤4的显著性水平后仍输出固定的0.05和95%解释。选型树及对比表仅可作初步索引:非正态不自动意味着应使用秩检验,秩检验仍有前提和不同检验目标,配对t检验须考察配对差值,多组比较须区分样本关系及模型前提,列联表独立性检验不能用表中的stats.chisquare()替代。前提检验不显著不能证明前提成立,效应量惯例阈值不能独立决定实际价值。本次仅作全文结构审阅,未运行代码或进行外部事实核验。

🧪 假设检验流程(Hypothesis Testing Process)

abstract 📋 本节概览

🎯 核心概念

note 📖 **什么是假设检验?**

假设检验是统计推断的核心方法,通过样本数据对总体参数的假设进行检验,判断假设是否成立。它是一个规范化的决策过程,帮助我们在不确定性下做出科学的统计决策。

🔑 基本思想

假设检验基于反证法的逻辑:

  1. 假设原假设为真
  2. 观察样本数据在此假设下出现的概率
  3. 如果概率很小,就拒绝原假设

📊 关键术语

  • 原假设(H₀):待检验的假设,通常是"无差异"或"无效果"
  • 备择假设(H₁或Hₐ):与原假设对立的假设
  • 检验统计量:基于样本数据计算的统计量
  • p值:在原假设为真的条件下,观察到当前或更极端结果的概率
  • 显著性水平(α):拒绝原假设的临界概率,通常取0.05

📋 假设检验的完整流程

1️⃣ 建立假设

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
import warnings
warnings.filterwarnings('ignore')

plt.style.use('seaborn-v0_8')
np.random.seed(42)

def step1_establish_hypotheses():
    """步骤1: 建立原假设和备择假设"""
    
    print("=== 步骤1: 建立假设 ===")
    print()
    
    # 示例场景:新药效果检验
    print("📋 研究场景:测试新药是否比现有药物更有效")
    print()
    print("假设设定:")
    print("H₀ (原假设): 新药效果 ≤ 现有药物效果 (μ₁ ≤ μ₂)")
    print("H₁ (备择假设): 新药效果 > 现有药物效果 (μ₁ > μ₂)")
    print()
    
    # 不同类型的假设
    hypothesis_types = {
        "双侧检验": {
            "H0": "μ = μ₀",
            "H1": "μ ≠ μ₀",
            "场景": "检验参数是否等于某个值",
            "例子": "新工艺产品重量是否等于标准重量"
        },
        "右侧检验": {
            "H0": "μ ≤ μ₀",
            "H1": "μ > μ₀", 
            "场景": "检验参数是否大于某个值",
            "例子": "新方法是否提高了效率"
        },
        "左侧检验": {
            "H0": "μ ≥ μ₀",
            "H1": "μ < μ₀",
            "场景": "检验参数是否小于某个值", 
            "例子": "新工艺是否降低了成本"
        }
    }
    
    print("🎯 常见假设类型:")
    for test_type, info in hypothesis_types.items():
        print(f"\n{test_type}:")
        print(f"  H₀: {info['H0']}")
        print(f"  H₁: {info['H1']}")
        print(f"  应用场景: {info['场景']}")
        print(f"  实例: {info['例子']}")

step1_establish_hypotheses()

2️⃣ 选择检验方法和显著性水平

def step2_choose_test_and_alpha():
    """步骤2: 选择检验方法和显著性水平"""
    
    print("=== 步骤2: 选择检验方法和显著性水平 ===")
    print()
    
    # 检验方法选择决策树
    test_selection = {
        "数据类型": {
            "连续数据": {
                "单样本": {
                    "正态分布": "单样本t检验",
                    "非正态分布": "Wilcoxon符号秩检验"
                },
                "两样本": {
                    "独立样本": {
                        "正态+方差齐": "独立样本t检验",
                        "正态+方差不齐": "Welch t检验",
                        "非正态": "Mann-Whitney U检验"
                    },
                    "配对样本": {
                        "正态分布": "配对t检验",
                        "非正态分布": "Wilcoxon配对符号秩检验"
                    }
                },
                "多样本": "方差分析(ANOVA)"
            },
            "分类数据": {
                "单样本": "单样本卡方检验",
                "两样本": "卡方独立性检验",
                "多样本": "卡方检验"
            }
        }
    }
    
    print("🎯 检验方法选择指南:")
    print("1. 确定数据类型(连续/分类)")
    print("2. 确定样本数量(单样本/两样本/多样本)") 
    print("3. 检查分布假设(正态性、方差齐性等)")
    print("4. 选择合适的检验方法")
    print()
    
    # 显著性水平选择
    alpha_levels = {
        0.05: {
            "应用": "最常用的显著性水平",
            "含义": "5%的概率犯第一类错误",
            "适用": "一般科学研究"
        },
        0.01: {
            "应用": "更严格的显著性水平", 
            "含义": "1%的概率犯第一类错误",
            "适用": "医学研究、安全性测试"
        },
        0.10: {
            "应用": "较宽松的显著性水平",
            "含义": "10%的概率犯第一类错误", 
            "适用": "探索性研究、初步筛选"
        }
    }
    
    print("📊 显著性水平(α)选择:")
    for alpha, info in alpha_levels.items():
        print(f"\nα = {alpha}:")
        print(f"  应用场景: {info['应用']}")
        print(f"  统计含义: {info['含义']}")
        print(f"  适用领域: {info['适用']}")

step2_choose_test_and_alpha()

3️⃣ 收集数据和计算检验统计量

def step3_collect_data_and_calculate():
    """步骤3: 收集数据和计算检验统计量"""
    
    print("=== 步骤3: 收集数据和计算检验统计量 ===")
    print()
    
    # 模拟实际研究场景:比较两种教学方法效果
    print("🧪 研究案例:比较传统教学法vs新教学法")
    print()
    
    # 生成模拟数据
    np.random.seed(42)
    traditional_scores = np.random.normal(75, 12, 30)  # 传统方法
    new_method_scores = np.random.normal(80, 10, 32)   # 新方法
    
    print("📊 数据收集:")
    print(f"传统教学法组: n₁ = {len(traditional_scores)}")
    print(f"  均值 = {np.mean(traditional_scores):.2f}")
    print(f"  标准差 = {np.std(traditional_scores, ddof=1):.2f}")
    print()
    print(f"新教学法组: n₂ = {len(new_method_scores)}")  
    print(f"  均值 = {np.mean(new_method_scores):.2f}")
    print(f"  标准差 = {np.std(new_method_scores, ddof=1):.2f}")
    print()
    
    # 假设检验设定
    print("🎯 假设设定:")
    print("H₀: μ₁ = μ₂ (两种方法效果无差异)")
    print("H₁: μ₁ ≠ μ₂ (两种方法效果有差异)")
    print("α = 0.05 (双侧检验)")
    print()
    
    # 前提条件检查
    print("✅ 前提条件检查:")
    
    # 1. 正态性检验
    _, p_norm1 = stats.shapiro(traditional_scores)
    _, p_norm2 = stats.shapiro(new_method_scores)
    print(f"1. 正态性检验 (Shapiro-Wilk):")
    print(f"   传统方法组: p = {p_norm1:.4f}")
    print(f"   新方法组: p = {p_norm2:.4f}")
    print(f"   结论: {'两组均未拒绝正态性原假设,但不能证明总体正态' if min(p_norm1, p_norm2) > 0.05 else '至少一组拒绝正态性原假设,需进一步评估分布特征及检验适用性'}")
    
    # 2. 方差齐性检验
    _, p_var = stats.levene(traditional_scores, new_method_scores)
    print(f"2. 方差齐性检验 (Levene):")
    print(f"   p = {p_var:.4f}")
    print(f"   结论: {'未拒绝方差相等的原假设,但不能证明方差相等' if p_var > 0.05 else '拒绝方差相等的原假设'}")
    print()
    
    # 计算检验统计量
    print("🧮 计算检验统计量:")
    
    # 执行独立样本t检验
    equal_var = p_var > 0.05
    t_stat, p_value = stats.ttest_ind(traditional_scores, new_method_scores, 
                                      equal_var=equal_var)
    
    # 计算自由度
    if equal_var:
        df = len(traditional_scores) + len(new_method_scores) - 2
        print(f"使用等方差t检验")
    else:
        # Welch t检验的自由度计算
        s1_sq = np.var(traditional_scores, ddof=1)
        s2_sq = np.var(new_method_scores, ddof=1)
        n1, n2 = len(traditional_scores), len(new_method_scores)
        
        numerator = (s1_sq/n1 + s2_sq/n2)**2
        denominator = (s1_sq/n1)**2/(n1-1) + (s2_sq/n2)**2/(n2-1)
        df = numerator / denominator
        print(f"使用Welch t检验")
    
    print(f"t统计量 = {t_stat:.4f}")
    print(f"自由度 = {df:.1f}")
    print(f"p值 = {p_value:.4f}")
    
    # 可视化
    plt.figure(figsize=(12, 8))
    
    # 数据分布对比
    plt.subplot(2, 2, 1)
    plt.hist(traditional_scores, alpha=0.6, bins=15, label='传统教学法', color='skyblue')
    plt.hist(new_method_scores, alpha=0.6, bins=15, label='新教学法', color='lightcoral')
    plt.xlabel('考试成绩')
    plt.ylabel('频数')
    plt.title('两组成绩分布对比')
    plt.legend()
    plt.grid(True, alpha=0.3)
    
    # 箱线图对比
    plt.subplot(2, 2, 2)
    plt.boxplot([traditional_scores, new_method_scores], 
                labels=['传统教学法', '新教学法'])
    plt.ylabel('考试成绩')
    plt.title('成绩分布箱线图')
    plt.grid(True, alpha=0.3)
    
    # t分布和临界值
    plt.subplot(2, 2, 3)
    x = np.linspace(-4, 4, 1000)
    y = stats.t.pdf(x, df)
    plt.plot(x, y, 'b-', linewidth=2, label=f't分布 (df={df:.0f})')
    
    # 临界值
    alpha = 0.05
    t_crit = stats.t.ppf(1 - alpha/2, df)
    plt.axvline(t_crit, color='red', linestyle='--', label=f'临界值: ±{t_crit:.3f}')
    plt.axvline(-t_crit, color='red', linestyle='--')
    plt.axvline(t_stat, color='green', linestyle='-', linewidth=3, 
                label=f'观察值: {t_stat:.3f}')
    
    # 显著性区域
    x_sig_right = x[x >= t_crit]
    y_sig_right = stats.t.pdf(x_sig_right, df)
    x_sig_left = x[x <= -t_crit]
    y_sig_left = stats.t.pdf(x_sig_left, df)
    
    plt.fill_between(x_sig_right, 0, y_sig_right, alpha=0.3, color='red')
    plt.fill_between(x_sig_left, 0, y_sig_left, alpha=0.3, color='red')
    
    plt.xlabel('t值')
    plt.ylabel('概率密度')
    plt.title('t检验临界值和观察值')
    plt.legend()
    plt.grid(True, alpha=0.3)
    
    # 效应量计算和解释
    plt.subplot(2, 2, 4)
    
    # Cohen's d 计算
    pooled_std = np.sqrt(((len(traditional_scores)-1) * np.var(traditional_scores, ddof=1) + 
                         (len(new_method_scores)-1) * np.var(new_method_scores, ddof=1)) / 
                        (len(traditional_scores) + len(new_method_scores) - 2))
    cohens_d = (np.mean(new_method_scores) - np.mean(traditional_scores)) / pooled_std
    
    # 效应量可视化
    effect_sizes = ['小效应\n(d=0.2)', '中等效应\n(d=0.5)', '大效应\n(d=0.8)', f'观察效应\n(d={cohens_d:.2f})']
    values = [0.2, 0.5, 0.8, abs(cohens_d)]
    colors = ['lightgray', 'lightgray', 'lightgray', 'orange']
    
    bars = plt.bar(effect_sizes, values, color=colors, alpha=0.7)
    plt.ylabel("Cohen's d")
    plt.title('效应量大小比较')
    plt.axhline(y=0.2, color='gray', linestyle='--', alpha=0.5)
    plt.axhline(y=0.5, color='gray', linestyle='--', alpha=0.5) 
    plt.axhline(y=0.8, color='gray', linestyle='--', alpha=0.5)
    plt.grid(True, alpha=0.3, axis='y')
    
    # 添加数值标签
    for bar, value in zip(bars, values):
        plt.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.02, 
                f'{value:.2f}', ha='center', va='bottom')
    
    plt.tight_layout()
    plt.show()
    
    return traditional_scores, new_method_scores, t_stat, p_value, df, cohens_d

# 执行步骤3
trad_scores, new_scores, t_statistic, p_val, degrees_freedom, effect_size = step3_collect_data_and_calculate()

4️⃣ 做出统计决策

def step4_make_decision(t_stat, p_value, alpha=0.05):
    """步骤4: 基于p值和显著性水平做出统计决策"""
    
    print("=== 步骤4: 统计决策 ===")
    print()
    
    print("🎯 决策准则:")
    print(f"显著性水平 α = {alpha}")
    print(f"计算得到的 p值 = {p_value:.4f}")
    print()
    
    # 决策逻辑
    if p_value < alpha:
        decision = "拒绝原假设"
        conclusion = "有统计学显著差异"
        interpretation = "样本数据提供了足够强的证据,支持两种教学方法效果不同"
    else:
        decision = "不拒绝原假设"
        conclusion = "无统计学显著差异"
        interpretation = "样本数据没有提供足够的证据,无法证明两种教学方法效果不同"
    
    print("📊 统计决策:")
    print(f"决策: {decision}")
    print(f"结论: {conclusion}")
    print(f"解释: {interpretation}")
    print()
    
    # 置信区间
    df = degrees_freedom
    se_diff = np.sqrt(np.var(trad_scores, ddof=1)/len(trad_scores) + 
                      np.var(new_scores, ddof=1)/len(new_scores))
    mean_diff = np.mean(new_scores) - np.mean(trad_scores)
    
    t_crit = stats.t.ppf(1 - alpha/2, df)
    ci_lower = mean_diff - t_crit * se_diff
    ci_upper = mean_diff + t_crit * se_diff
    
    print("🔍 补充信息:")
    print(f"均值差异: {mean_diff:.2f}分")
    print(f"{(1 - alpha) * 100:g}%置信区间: [{ci_lower:.2f}, {ci_upper:.2f}]")
    print(f"效应量 (Cohen's d): {effect_size:.3f}")
    
    # 效应量解释
    if abs(effect_size) < 0.2:
        effect_interpretation = "无效应或极小效应"
    elif abs(effect_size) < 0.5:
        effect_interpretation = "小效应" 
    elif abs(effect_size) < 0.8:
        effect_interpretation = "中等效应"
    else:
        effect_interpretation = "大效应"
    
    print(f"效应量大小: {effect_interpretation}")
    
    return decision, conclusion, mean_diff, (ci_lower, ci_upper)

# 执行统计决策
decision_result, conclusion, diff, ci = step4_make_decision(t_statistic, p_val)

5️⃣ 解释结果和实际意义

def step5_interpret_results(decision, p_value, effect_size, mean_diff, ci):
    """步骤5: 解释统计结果的实际意义"""
    
    print("=== 步骤5: 结果解释和实际意义 ===")
    print()
    
    print("📈 结果解释框架:")
    print("1. 统计显著性 ≠ 实际重要性")
    print("2. 考虑效应量大小")
    print("3. 结合专业知识判断")
    print("4. 考虑研究局限性")
    print()
    
    print("🎯 本模拟示例结果解释(不代表真实教学效果):")
    
    # 统计显著性解释
    if decision == "拒绝原假设":
        print(f"✅ 统计显著性: p = {p_value:.4f} < 0.05,结果具有统计学显著性")
        significance_meaning = "在原假设及检验模型成立时,出现当前或更极端检验统计量的概率低于预设显著性水平;这不是差异由随机误差造成的概率"
    else:
        print(f"❌ 统计显著性: p = {p_value:.4f} ≥ 0.05,结果无统计学显著性")
        significance_meaning = "样本未提供足够证据拒绝原假设,但这不能证明没有差异,也不能确定差异的成因"
    
    print(f"   解释: {significance_meaning}")
    print()
    
    # 效应量解释
    print(f"📏 效应量: Cohen's d = {effect_size:.3f}")
    if abs(effect_size) < 0.2:
        practical_meaning = "按常用惯例,模拟样本的标准化差异极小;实际价值仍需结合原始分数差、区间和领域标准判断"
    elif abs(effect_size) < 0.5:
        practical_meaning = "按常用惯例,模拟样本的标准化差异较小;不能据此直接判定实用价值有限"
    elif abs(effect_size) < 0.8:
        practical_meaning = "按常用惯例,模拟样本的标准化差异中等;不能据此直接判定具有实用价值"
    else:
        practical_meaning = "按常用惯例,模拟样本的标准化差异较大;实际价值仍取决于差异方向、领域标准、成本及风险"
    
    print(f"   解释: {practical_meaning}")
    print()
    
    # 置信区间解释
    print(f"🔍 置信区间: [{ci[0]:.2f}, {ci[1]:.2f}]分")
    if ci[0] > 0:
        ci_meaning = "我们有95%的信心认为新教学法比传统方法效果更好"
    elif ci[1] < 0:
        ci_meaning = "我们有95%的信心认为传统方法比新教学法效果更好"
    else:
        ci_meaning = "置信区间包含0,无法确定哪种方法更好"
    print(f"   解释: {ci_meaning}")
    print()
    
    # 实际应用建议
    print("💡 模拟决策话术示范:以下建议仅演示条件分支,不构成真实教学效果或采用依据;效应量0.3仅为示例阈值:")
    
    if decision == "拒绝原假设" and mean_diff > 0 and abs(effect_size) >= 0.3:
        print("✅ 推荐采用新教学方法:")
        print(f"   - 平均提升效果: {mean_diff:.1f}分")
        print("   - 模拟数据满足本例的显著性、正向差异和示例效应量阈值;不代表真实教学效果或实施收益")
        print("   - 建议进一步大规模验证")
    elif decision == "拒绝原假设":
        print("⚠️ 谨慎考虑是否采用新方法:")
        print("   - 虽然有统计显著性,但差异可能不利于新方法,或未达到本例的示例效应量阈值")
        print("   - 需要权衡实施成本和收益")
    else:
        print("❌ 暂不推荐更换教学方法:")
        print("   - 缺乏足够的统计证据支持改变")
        print("   - 建议增加样本量或改进研究设计")
    
    print()
    print("🚨 注意事项:")
    print("1. 本例使用随机生成的模拟样本,不能将结果推广为真实教学方法的效果证据")
    print("2. 统计显著性不等同于实际重要性")
    print("3. 需要考虑研究的局限性和潜在偏差")
    print("4. 建议进行重复研究验证结果的稳定性")

# 执行结果解释
step5_interpret_results(decision_result, p_val, effect_size, diff, ci)

⚠️ 常见错误和注意事项

def common_mistakes_and_precautions():
    """假设检验的常见错误和注意事项"""
    
    print("=== 假设检验常见错误和注意事项 ===")
    print()
    
    mistakes = {
        "第一类错误 (α错误)": {
            "定义": "原假设为真时,却拒绝了原假设",
            "概率": "等于显著性水平α",
            "后果": "得出错误的阳性结论",
            "控制": "通过设置合适的α水平"
        },
        "第二类错误 (β错误)": {
            "定义": "原假设为假时,却没有拒绝原假设", 
            "概率": "用β表示",
            "后果": "遗漏了真实的差异",
            "控制": "增加样本量,提高统计功效"
        }
    }
    
    print("🚫 统计错误类型:")
    for error_type, info in mistakes.items():
        print(f"\n{error_type}:")
        print(f"  定义: {info['定义']}")
        print(f"  发生概率: {info['概率']}")
        print(f"  导致后果: {info['后果']}")
        print(f"  控制方法: {info['控制']}")
    
    print("\n" + "="*50)
    
    # 常见误区
    common_errors = [
        {
            "误区": "p值表示假设为真的概率",
            "纠正": "p值是在原假设为真的条件下,观察到当前或更极端结果的概率",
            "正确理解": "p值不是假设本身为真的概率"
        },
        {
            "误区": "不显著就说明没有差异",
            "纠正": "不显著只是说明缺乏足够证据,不等于证明无差异",
            "正确理解": "无法证明有差异 ≠ 证明无差异"
        },
        {
            "误区": "显著就意味着差异很大",
            "纠正": "统计显著性与实际重要性不同",
            "正确理解": "需要同时考虑效应量和实际意义"
        },
        {
            "误区": "多重比较不调整α水平",
            "纠正": "进行多次检验会增加第一类错误率",
            "正确理解": "需要使用Bonferroni校正等方法"
        }
    ]
    
    print("⚠️ 常见误区和纠正:")
    for i, error in enumerate(common_errors, 1):
        print(f"\n{i}. 误区: {error['误区']}")
        print(f"   纠正: {error['纠正']}")
        print(f"   正确理解: {error['正确理解']}")
    
    print("\n" + "="*50)
    
    # 最佳实践建议
    best_practices = [
        "事先确定样本量和分析计划",
        "检查假设检验的前提条件",
        "同时报告p值、置信区间和效应量", 
        "结合专业知识解释统计结果",
        "避免数据窥探和多重比较问题",
        "考虑研究的局限性和推广性",
        "进行重复研究验证结果"
    ]
    
    print("✅ 最佳实践建议:")
    for i, practice in enumerate(best_practices, 1):
        print(f"{i}. {practice}")

# 展示常见错误和注意事项
common_mistakes_and_precautions()

💡 实用决策树

def create_hypothesis_testing_decision_tree():
    """创建假设检验决策树"""
    
    print("=== 假设检验决策树 ===")
    print()
    
    decision_tree = """
    📊 假设检验方法选择决策树
    
    1️⃣ 数据类型?
    ├── 连续数据 → 2️⃣
    └── 分类数据 → 🔸 卡方检验类
    
    2️⃣ 样本数量?
    ├── 单样本 → 3️⃣
    ├── 两样本 → 4️⃣  
    └── 多样本 → 🔸 方差分析(ANOVA)
    
    3️⃣ 分布类型?
    ├── 正态分布 → 🔸 单样本t检验
    └── 非正态分布 → 🔸 Wilcoxon符号秩检验
    
    4️⃣ 样本关系?
    ├── 独立样本 → 5️⃣
    └── 配对样本 → 6️⃣
    
    5️⃣ 方差是否相等?
    ├── 方差相等 → 🔸 独立样本t检验
    ├── 方差不等 → 🔸 Welch t检验
    └── 非正态分布 → 🔸 Mann-Whitney U检验
    
    6️⃣ 分布类型?
    ├── 正态分布 → 🔸 配对t检验
    └── 非正态分布 → 🔸 Wilcoxon配对符号秩检验
    """
    
    print(decision_tree)
    
    # 创建检验方法对比表
    test_comparison = pd.DataFrame({
        '检验方法': [
            '单样本t检验',
            '独立样本t检验', 
            '配对样本t检验',
            'Welch t检验',
            '卡方检验',
            'Mann-Whitney U检验',
            'Wilcoxon符号秩检验'
        ],
        '数据类型': [
            '连续', '连续', '连续', '连续', 
            '分类', '连续', '连续'
        ],
        '样本数': [
            '单样本', '两独立样本', '两配对样本', '两独立样本',
            '单/多样本', '两独立样本', '两配对样本'
        ],
        '前提条件': [
            '正态分布',
            '正态分布+方差齐性',
            '正态分布',
            '正态分布',
            '期望频数≥5',
            '无分布要求',
            '无分布要求'
        ],
        'Python函数': [
            'stats.ttest_1samp()',
            'stats.ttest_ind()',
            'stats.ttest_rel()',
            'stats.ttest_ind(equal_var=False)',
            'stats.chisquare()',
            'stats.mannwhitneyu()',
            'stats.wilcoxon()'
        ]
    })
    
    print("\n📋 常用检验方法对比表:")
    print(test_comparison.to_string(index=False))

create_hypothesis_testing_decision_tree()

🔗 相关知识


tip 💡 **学习建议**

  1. 理解逻辑:掌握假设检验的反证法逻辑
  2. 规范流程:严格按照五步流程进行检验
  3. 条件检查:重视前提条件的检验
  4. 结果解释:区分统计显著性和实际重要性
  5. 避免误区:警惕常见的解释错误

#统计学 #假设检验 #推断统计 #统计决策 #p值 #显著性检验