【发布时间】:2014-09-06 01:08:54
【问题描述】:
当我尝试在 MATLAB 中计算第 75 个百分位数时,我得到的值与在 NumPy 中不同。
MATLAB:
>> x = [ 11.308 ; 7.2896; 7.548 ; 11.325 ; 5.7822; 9.6343;
7.7117; 7.3341; 10.398 ; 6.9675; 10.607 ; 13.125 ;
7.819 ; 8.649 ; 8.3106; 12.129 ; 12.406 ; 10.935 ;
12.544 ; 8.177 ]
>> prctile(x, 75)
ans =
11.3165
Python + NumPy:
>>> import numpy as np
>>> x = np.array([ 11.308 , 7.2896, 7.548 , 11.325 , 5.7822, 9.6343,
7.7117, 7.3341, 10.398 , 6.9675, 10.607 , 13.125 ,
7.819 , 8.649 , 8.3106, 12.129 , 12.406 , 10.935 ,
12.544 , 8.177 ])
>>> np.percentile(x, 75)
11.312249999999999
我也用 R 检查了答案,我得到了 NumPy 的答案。
R:
> x <- c(11.308 , 7.2896, 7.548 , 11.325 , 5.7822, 9.6343,
+ 7.7117, 7.3341, 10.398 , 6.9675, 10.607 , 13.125 ,
+ 7.819 , 8.649 , 8.3106, 12.129 , 12.406 , 10.935 ,
+ 12.544 , 8.177)
> quantile(x, 0.75)
75%
11.31225
这里发生了什么?有没有办法让 Python 和 R 的行为反映 MATLAB 的?
【问题讨论】:
-
您能告诉我们 MATLAB 使用的公式吗? R 有9 different ways 来计算分位数。似乎 MATLAB 回答了 R 中的第 75 个匹配
quantile(x, 0.75, type=2)和quantile(x, 0.75, type=5)。 -
当然——来自 MATLAB 帮助页面:(我不能在这里评论它,因为它太长了)mathworks.com/help/stats/prctile.html(你可能需要展开底部的“算法”按钮)
标签: python r matlab numpy percentile