什么是python';s等价于Matlab';这是朗克苏姆?
什么是python';s等价于Matlab';这是朗克苏姆?,python,matlab,scipy,statistical-test,Python,Matlab,Scipy,Statistical Test,scipy.stats.ranksum,wilcoxon,mannwhitneyu都给出了与Matlab的ranksum不同的结果,这取决于您使用的选项。检查以下示例: 1-MATLAB rng('default') % for reproducibility x = unifrnd(0,1,20,1); y = unifrnd(0.25,1.25,20,1); p = ranksum(x,y); p = 0.2503 2-Python (为了保持一致,我没有再次生成数字,但我已将MAT
scipy.stats.ranksum
,wilcoxon
,mannwhitneyu
都给出了与Matlab的ranksum
不同的结果,这取决于您使用的选项。检查以下示例:
1-MATLAB
rng('default') % for reproducibility
x = unifrnd(0,1,20,1);
y = unifrnd(0.25,1.25,20,1);
p = ranksum(x,y);
p =
0.2503
2-Python
(为了保持一致,我没有再次生成数字,但我已将MATLAB中生成的数字移动到Python脚本中)
此结果与以下选项一起使用:
1-对于MATLAB:
p=ranksum(x,y)返回双侧Wilcoxon秩和的p值
测试。ranksum检验了零假设,即x和y中的数据是
来自连续分布的样本,中位数相等,与
另一种选择是,它们不是。测试假设两个样本
他们是独立的。x和y可以具有不同的长度。这个测试是
相当于曼惠特尼U检验
2-对于Python:
计算两个样本的Wilcoxon秩和统计量。这个
Wilcoxon秩和检验检验两组
测量值取自相同的分布。替代方案
假设一个样本中的值更可能更大
而不是其他样本中的值。此测试应用于
比较连续分布的两个样本。事实并非如此
处理x和y方向测量值之间的关系
另一个例子 在这里,我使用相同的数据,具有相同的MATLAB功能,但不同的选项。现在您可以看到,结果与Scipy中的
mannwhitneyu
函数的结果相同
MATLAB
[p,h,stats] = ranksum(x,y,'alpha',0.01,'tail','left','method','exact');
p =
0.1267
Python
m = mannwhitneyu(xx, yy, use_continuity=True)
print m
MannwhitneyuResult(statistic=157.0, pvalue=0.12514839875175593)
一些代码来说明它们的不同之处会很好。具体地说,请在您的帖子中附上一封信。为什么
0.1267!=0.12514839875…
?不同的数字格式?这里我们没有在MATLAB和Python中设置所有相同的选项。我想通过深入细节可以发现差异的原因。@NKN对我来说,第一个是类似的,所以当你提到MATLAB的测试中位数时,我假设Python也是?
m = mannwhitneyu(xx, yy, use_continuity=True)
print m
MannwhitneyuResult(statistic=157.0, pvalue=0.12514839875175593)