【小Tip】Matlab中t检验和秩和检验的P和H位置是相反的

 

Matlab中t检验函数:[h,p,ci,stats] = ttest2(___)

Matlab中秩和检验函数:[p,h,stats] = ranksum(x,y)

可以发现两者h和p的位置刚好相反。

之前写代码理所当然认为假设检验的代码结构应该是类似的,实际并不是这样。

使用代码需要谨慎。

 

以下是Deepseek列举的Matlab中常用假设检验的函数:

1. 参数检验(假定数据服从特定分布,如正态分布)

(1) t检验

  • 单样本t检验:检验单个样本均值是否等于给定值
    [h, p, ci, stats] = ttest(x, mu)
    x:数据向量;mu:假设的均值)

  • 独立双样本t检验:检验两个独立样本均值是否相等
    [h, p, ci, stats] = ttest2(x, y)
    (默认假设方差齐性;添加选项 'Vartype','unequal' 处理方差不齐)

  • 配对样本t检验:检验两个相关样本的均值差
    [h, p, ci, stats] = ttest(x, y)
    xy 为配对观测值)

(2) z检验

  • 单样本z检验:已知总体标准差时,检验样本均值
    [h, p, ci, zval] = ztest(x, mu, sigma)
    sigma:总体标准差)

(3) 方差分析 (ANOVA)

  • 单因素ANOVA:检验多个独立组的均值是否相等
    p = anova1(X, group)
    X:数据向量;group:分组标签)

  • 双因素ANOVA:检验两个因素对观测值的影响
    p = anova2(X, reps)
    reps:每个单元的重复观测次数)

(4) 卡方检验

  • 拟合优度检验:检验样本是否服从特定分布
    [h, p, stats] = chi2gof(x, 'CDF', pd)
    pd:概率分布对象,如 makedist('Normal')

  • 独立性检验:检验列联表中变量的独立性
    [tbl, chi2, p] = crosstab(x1, x2)
    (输出卡方统计量 chi2 和 p值 p


2. 非参数检验(不依赖数据分布假设)

(1) Wilcoxon 检验

  • 符号秩检验(单样本/配对样本):检验中位数是否等于给定值
    [p, h] = signrank(x, m)
    m:假设的中位数;配对时 signrank(x-y, 0)

  • 秩和检验(独立双样本):Mann-Whitney U 检验
    [p, h] = ranksum(x, y)

(2) Kruskal-Wallis 检验

  • 多组独立样本中位数比较
    p = kruskalwallis(X, group)

(3) Friedman 检验

  • 多组相关样本中位数比较
    p = friedman(X, reps)

(4) Kolmogorov-Smirnov 检验

  • 单样本分布检验:检验数据是否服从指定分布
    [h, p] = kstest(x, 'CDF', dist)

  • 双样本同分布检验:检验两样本是否来自同一分布
    [h, p] = kstest2(x, y)


3. 正态性检验

  • Lilliefors 检验(改进的KS检验,适用于正态分布参数未知)
    [h, p] = lillietest(x)

  • Jarque-Bera 检验(基于偏度和峰度)
    [h, p] = jbtest(x)


4. 方差齐性检验

  • Bartlett 检验(假设正态分布)
    p = vartestn(X, group)

  • Levene 检验(对非正态分布稳健)
    p = vartestn(X, group, 'TestType','LeveneAbsolute')

发表回复