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)
(x,y为配对观测值)
(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')