在Matlab和Python中,哪种语言最适合常规统计数据分析?除了可访问性之外,每种方法都有哪些优缺点?
在Matlab和Python中,哪种语言最适合常规统计数据分析?除了可访问性之外,每种方法都有哪些优缺点?
Answers:
作为过去10多年的Matlab忠实用户,我建议您学习Python。一旦您掌握了某种语言的技能,当您在学习某种语言时,就好像您的生产力不够高,您将退而求用默认的最佳语言。至少,我建议您尝试精通多种语言(我也建议使用R)。
我喜欢Matlab:
我不喜欢Matlab的地方:
median
函数,该函数执行某种数据,然后取中间值。自70年代以来,这一直是错误的算法。-nojvm
似乎对您有帮助...
shuffle
可能在工具箱中,而不是Matlab。几乎不比内置函数差,randperm
后者返回随机向量的排序索引。同样,这可能是错误的算法(我刚刚在stats.SE上了解到Knuth-Fisher-Yates洗牌)..
randperm
是它受的播种的影响randn
,而混合版本的Knuth-Fisher-Yates可能无法“内部”访问randn种子,而纯.m版本的shuffle可能会太慢了。
让我们将其分为三个区域(在我的脑海中):编程遇到统计数据:数据处理,数值例程(优化等)和统计库(建模等)。
首先,最大的不同是Python是通用编程语言。只要您的世界与fortran数值数组大致同构,Matlab就是伟大的。一旦开始处理数据处理和相关问题,Python就会超越Matlab。例如,请参阅Greg Wilson的书:数据处理:使用Java,Python等解决日常问题。
在第二个方面,Matlab确实在数值运算方面大放异彩。很多研究机构都使用它,如果你正在寻找的发言权,与在压缩感知纸一些算法,你是远更容易找到在Matlab中的实现。另一方面,Matlab就像是科学计算的PHP一样,它努力为阳光下的所有事物提供功能。如果您是编程语言的极客,那么最终的美学和体系结构将令人发疯,但是从功利主义的角度来说,它可以完成工作。随着Numpy / Scipy的兴起,其中许多变得不那么相关了,您很可能会找到适用于Python的优化和机器学习库。无论哪种语言,与C的接口都一样容易。
关于用于建模等方面的统计库的可用性,与R之类的东西相比,两者都有些缺乏。(尽管我怀疑两者都可以满足80%从事统计工作的人员的需求。)对于Python方面,请参见此问题。 :Python作为统计工作台。在Matlab方面,我知道有一个统计工具箱,但是我会让更多的知识渊博的人填补空白(我在Matlab上的经验仅限于与统计无关的数值工作)。
我也是Matlab的狂热用户已有10多年了。在这些年中的许多年里,我没有理由超出为工作创建的工具箱的范围。尽管为工具箱创建了许多功能,但我经常需要创建用于快速周转分析的算法。由于这些算法经常利用矩阵数学,因此Matlab是我工作的理想人选。除了我的Matlab代码工具箱外,由于语言之间的互操作性很明显,因此我小组中的其他人也广泛使用Java。多年来,我对Matlab感到完全满意,但是大约3年前,我决定开始从Matlab缓慢过渡,并高兴地说我大约一年后才开始使用它。这是我搬家的原因:
-nodesktop
大多数情况下,使用该选项是不错的选择,但这是有问题的。这只是我对Matlab的众多了解中的几个。这是一个闪耀的属性:快速,轻松地编写代码(如果不难看的话)非常容易。我确实离开了它,而我的追求使我经历了Clojure-> JavaScript-> Python <-> Julia;是的,我到处都是。