从MATLAB调用Python KS测试很简单:
foo = py.scipy.stats.ks_2samp(rand(1,50),rand(1,70));
但是当我以这种方式调用Anderson-Darling k样本测试时,我得到一个错误:
bar = py.scipy.stats.anderson_ksamp(rand(1,50),rand(1,70));
"Python Error: AxisError: axis -1 is out of bounds for array of dimension 0"
这样会导致另一个错误(在这里,我试图设置midrank = false,认为这可能是上一个错误的原因)
bar = py.scipy.stats.anderson_ksamp(rand(1,50),rand(1,70),false);
bar = py.scipy.stats.anderson_ksamp(rand(1,50),rand(1,70),'false');
bar = py.scipy.stats.anderson_ksamp(rand(1,50),rand(1,70),'midrank=false');
"Python Error: TypeError: anderson_ksamp() takes from 1 to 2 positional arguments but 3 were given"
我已阅读https://docs.scipy.org/doc/scipy/reference/stats.html以及有关从Matlab调用Python的旧问题,但较旧的问题不适用于当前的API。
问题1:如何在MATLAB中调用anderson_ksamp?
问题2:如何更改此测试的显着性水平?
答案 0 :(得分:1)
你的功能参数错误。
ks_2samp
expects接收两个变量向量,因此你很擅长。
anderson_ksamp
expects接收系列的向量:
scipy.stats.anderson_ksamp (样本,midrank = True)
样品:1-D array_like序列
数组中的样本数据数组。
因此,您应该创建一个单元格数组,其中每个单元格都是一个样本矢量,并将其作为第一个参数传递,因为您的样本可能具有不同的维度。
如果要测试两个向量来自同一分布,则应使用常规anderson
测试,这与Kolmogorov-Smirnov 2样本测试非常相似。只需连接值并将其作为单个向量发送。
至于显着性级别,您无法更改它们。它们是预定义的并且(至少)计算为10%,5%,2.5%和1%的水平。这对任何实际目的都足够了。