SPM1d MATLAB 如何设置双样本 t 检验的方差参数?
结论
报错提示 roi 参数无效,说明调用中的第三个参数没有被当作预期的方差选项处理。MATLAB 的名称-值参数通常需要将名称和值分开传入,可以先试试:
spm = spm1d.stats.ttest2(var1, var2, 'equal_var', false);
不过,SPM1d 的 MATLAB 版和 Python 版功能并不完全相同。文档说明,MATLAB 版尚未实现 Python 版使用的非球形性校正。因此,即使上述调用成功,也不能据此认定 MATLAB 版执行了 Welch 校正。请查看所安装版本的函数说明,确认它是否支持该选项。SPM1d MATLAB 文档
为什么会报 roi 错误
原调用写成了 equal_var = false:
spm1=spm1d.stats.ttest2(var1 , var2, equal_var = false);
equal_var=False 是 Python 示例中常见的关键字参数写法。MATLAB 调用通常使用 '参数名', 参数值 的形式。如果参数没有按函数支持的方式传入,函数可能会把它当作位置参数处理。错误信息中的验证条件要求 roi 为空,或为逻辑向量或数值向量;传入的参数不符合这一条件。
检查 MATLAB 版接口
SPM1d 提供的 MATLAB 文档比较简略,可以先查看本机安装版本的帮助和示例:
help spm1d.stats.ttest2
which spm1d.stats.ttest2
也可以到已安装的 SPM1d +spm1d/examples 目录中查找双样本 t 检验示例。如果 'equal_var', false 仍然报错,或者本机函数帮助中没有列出这个参数,请以本地版本的说明为准。SPM1d 文档也指出,MATLAB 版的功能没有完全覆盖 Python 版。MATLAB 版文档与支持说明
如果数据是普通标量样本
如果 var1 和 var2 是普通独立样本,而不是用于 SPM1d 的连续场数据,可以考虑使用 MATLAB Statistics and Machine Learning Toolbox 中的 ttest2:
[h, p] = ttest2(var1, var2, 'Vartype', 'unequal');
这个调用用于标量样本的双样本检验,与 SPM1d 对一维连续场进行的检验不同。MathWorks ttest2 文档
备注:内容仅供参考。
