使用选项从Matlab2017调用Python

2024-04-25 21:30:25 发布

您现在位置:Python中文网/ 问答频道 /正文

从MATLAB调用pythonks测试很简单:

foo = py.scipy.stats.ks_2samp(rand(1,50),rand(1,70));

但当我用这种方法调用Anderson-Darling k-sample测试时,我得到一个错误:

^{pr2}$

这样会导致另一个错误(这里,我试图设置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\u ksamp?
问题2:如何更改此测试的显著性级别?在


Tags: 方法pyfalsefoostats错误barscipy
1条回答
网友
1楼 · 发布于 2024-04-25 21:30:25

你把函数参数弄错了。在

ks_2sampexpects接收两个变量向量,所以你做得很好。在

anderson_ksampexpects接收向量序列:

scipy.stats.anderson_ksamp (samples, midrank=True)

samples : sequence of 1-D array_like

Array of sample data in arrays.

因此,您应该创建一个单元格数组,其中每个单元格都是一个样本向量,并将其作为第一个参数传递,因为您的样本可能具有不同的维度。在

如果你想测试两个向量来自同一个分布,你应该使用规则的anderson测试,这与Kolmogorov-Smirnov 2样本测试非常相似。只需连接这些值并将其作为单个向量发送。在

至于显著性水平,你不能改变它们。它们被预先定义和计算(至少)为10%、5%、2.5%和1%的水平。这对任何实际目的都足够了。在

相关问题 更多 >