MatlabとPythonの中で、どの言語が統計分析に適していますか?


17

MatlabとPythonの中で、どの言語が一般的な統計データ分析に適していますか?アクセシビリティ以外のそれぞれの長所と短所は何ですか?


2
これは、コミュニティWiki、IMOである必要があります。
シェーン

Rも見られなかった理由を説明してくれませんか?
ダークエデルブッテル

@DirK:私はRについてほとんど聞いていません。さらに、Pythonのようなプログラミング言語を学びたかったのですが、Rもpython、IMOに近いとは思いません。それがあなたの質問に答えることを願っています。

2
こことStackOverflowで、統計分析とプログラミングのために人々が推奨することに関して少し調べてみてください。私たちの多くは、Rに真の代替手段はないと感じています。しかし、美しさと同様に、これは見る人の目にあるので、幸運です。
ダークエデルブッテル

地球統計学(私は博士号を取得しました)に関して、Rは非常によく装備されていると思います(gstat、geoRなどを参照)。少なくとも私は、Pythonでの地球統計学的手法のそのような完全なカバレッジを知りません。そして、なぜRは「Pythonの近くにどこにもない」のですか?両方を使用しましたが、ジオスタットでは、Rが明らかに優れていると感じています。
ポールヒエムストラ

回答:


29

過去10年以上にわたる頑固なMatlabユーザーとして、Pythonを学ぶことをお勧めします。言語に十分に習熟したら、学習している言語で作業すると、十分な生産性が得られないように見え、デフォルトの最適な言語を使用するようになります。少なくとも、多くの言語に平等に習熟することをお勧めします(Rもお勧めします)。

Matlabの好きなところ:

  • 私はそれに堪能です。
  • これは、ある共通語数値アナリストの間で。
  • プロファイリングツールは非常に優れています。これが、オクターブの代わりにMatlabを使用する唯一の理由です。
  • オクターブのフリーウェアクローンがあります。これは、リファレンス実装によく準拠しています。

Matlabについて好きではないこと:

  • サードパーティ(無料またはその他)のパッケージとスクリプトを管理するための優れたシステムはありません。Mathworksは「中央ファイル交換」を制御し、アドオンパッケージのインストールは非常に不格好で、Rの優れたシステムとはまったく異なります。さらに、Mathworksは、フリーウェアパッケージと競合するツールボックスの販売で利益を得ているため、この状況を改善するインセンティブがありません。
  • Matlabでの並列計算のライセンスはめちゃくちゃ高価です。
  • 多くのツールボックス関数や一部の組み込み関数を含むmコードの多くは、効率や使いやすさを犠牲にして、明らかに正しく設計されています。この最も顕著な例は、Matlabのmedian関数です。この関数は、データの種類実行し、中間値を取ります。70年代以来、これは間違ったアルゴリズムでした。
  • Matlabでは、グラフをファイルに保存するのはせいぜい危険です。
  • Mathworksは引き続き機能を追加しますが、過去5年間(オクターブの代わりにMatlabの使用を開始したとき)にユーザーエクスペリエンスが向上していることはわかりません。これは、私が彼らのターゲット顧客ではなく、パワーユーザーの状況を悪化させることで市場シェアを拡大​​しようとしていることを示しています。
  • Matlabでオブジェクト指向プログラミングを行うには2つの方法がありますが、それはせいぜい混乱しているだけです。古いスタイルを使用した従来のコードはしばらく持続します。
  • Matlab UIはJavaで書かれており、メモリ管理に関する不快なアイデアがあります。

+1、良い点。これについて:「メモリ管理に関する不快なアイデア」..興味深い、詳しく説明できますか?
アルス

1
私の記憶はどこかに行きます。Matlabの使用以外でのJavaでの私の経験は、それが原因である可能性が高いことを示しており、実行-nojvmすると役立つようです
...-shabbychef

MATLABの奇妙な組み込みコードの私のお気に入りの例はシャッフルです。シャッフルは、新しく作成されたランダムベクトルを並べ替えることによって返される順序でデータを並べ替えます。

1
@mbq:shuffleツールボックス内にある可能性がありますが、標準のmatlabではありません。randpermランダムベクトルのソートインデックスを返すビルトインよりも悪化することはほとんどありません。繰り返しますが、これはおそらく間違ったアルゴリズムです(stats.SEでKnuth-Fisher-Yatesシャッフルについて学んだところです)..
shabbychef

1
@mbq:他の良い部分については、randpermそれがの播種によって影響されることでrandn、おそらくだろう、クヌース・フィッシャーイエーツのmex'edバージョンのに対し、おそらく「内部」関数randnシードにアクセスすることはできません、とシャッフルの純粋な.M版遅すぎる。
みすぼらしいシェフ

11

プログラミングが統計を満たしている3つの領域(私の頭の一番上)に分けましょう:データ処理、数値ルーチン(最適化など)、統計ライブラリ(モデリングなど)。

最初の最大の違いは、Pythonが汎用プログラミング言語であることです。Matlabは、あなたの世界がFortran数値配列とほぼ同型である限り素晴らしいです。データの変更や関連する問題の処理を開始すると、PythonはMatlabよりも優れています。たとえば、グレッグウィルソンの著書「データクランチング:Java、Pythonなどを使用して日常の問題を解決する」を参照してください。

第二に、Matlabは数値処理で本当に輝いています。多くの研究コミュニティがそれを使用しており、たとえば圧縮センシングの論文に関連するアルゴリズムを探している場合、Matlabで実装を見つける可能性がはるかに高くなります。一方、Matlabは科学計算のPHPの一種であり、太陽の下であらゆるものに機能を持たせるよう努めています。あなたがプログラミング言語のオタクであれば、結果として生じる美学とアーキテクチャは気が遠くなりますが、功利主義的な用語では、それは仕事をやり遂げます。Numpy / Scipyの台頭により、これの多くはあまり重要ではなくなりました。Pythonで利用可能な最適化お​​よび機械学習ライブラリを見つける可能性が高いです。Cとのインターフェースはどちらの言語でも簡単です。

モデリングなどの統計ライブラリの可用性については、Rのようなものと比較すると、両方ともやや不足しています(両方とも統計作業を行う人の80%のニーズを満たすと思いますが)。 :統計ワークベンチとしてのPython。Matlab側については、統計ツールボックスがあることは知っていますが、空欄をもっと知識のある人に入力させます(Matlabでの私の経験は、統計に関係のない数値作業に限定されます)。


Matlabの統計ツールボックスはとても楽しいです。Rに似たようなものがあります。たとえば、さまざまな関数近似(回帰)をすばやく試すことができますか?
アレックスR.

6

また、10年以上、Matlabの熱心なユーザーでもあります。それらの年の多くの間、私は自分の仕事のために作成したツールボックスを超えて働く理由がありませんでした。ツールボックス用に多くの関数が作成されましたが、多くの場合、迅速な分析のためのアルゴリズムを作成する必要がありました。これらのアルゴリズムは行列演算を使用することが多いため、Matlabは私の仕事の理想的な候補者でした。Matlabのコードのツールボックスに加えて、私のグループの他のメンバーは、言語間で明確な相互運用性があったため、Javaで広範囲に働きました。長年、Matlabに完全に満足していましたが、約3年前、Matlabからゆっくり移行を開始することを決めました。私の移動の理由は次のとおりです。

  • 私はオンラインとオフラインのコンピューティングシステムを使用していますが、ライセンスシステムは常に頭痛の種でした。Matlabが最も必要になったときに、ライセンスの有効期限が切れたり、突然問題が発生したりすることが常に発生していたようです。これは常に頭痛の種でした。また、コードを共有する必要があり、相手が同じツールボックスのライセンスを持っていなかった場合、これは頭痛の種となりました。 無料ではありません
  • 私はしばしばプレゼンテーションを作成する必要があります。Matlabは、図を作成するための広範なツールを提供しますが、これはアルゴリズム設計に非常に強力になりますが、プレゼンテーションに挿入して見栄えが良くなるように図を保存することは簡単な作業ではありません。すべてのゴミを削除し、フォントを修正し、行をクリーンアップするために、AdobeイラストレーターにEPSファイルを挿入する必要がしばしばありました。ただし、ファイル交換(export_fig.m)でこれを支援するツールがいくつかあります。
  • 私はしばしば他からMatlabコードを入手します。これが起こるとき、私はほとんどいつもそれを書き直します:それらのAPIは私のデータと互換性がなく、彼らのコードは意味をなさない、遅い、それが必要なものを出力しない、...基本的にMatlabで開発する人々はソフトウェアエンジニアではなく、Matlabはいかなる種類の設計原則も推奨しません。
  • 私はパワーユーザーです。私は端末が好きです。私はGUIが嫌いです。そして、彼らが「窓」スタイルのリボンを追加したとき、私はそれをもう少し嫌った。基本的に、GUIとひどいメモリ管理に対する彼らの微調整が私の最後のボタンを押し、私は去ることに決めました。-nodesktopほとんどの場合、このオプションを使用することは適切ですが、問題があります。
  • 機能設計(OOまたは機能設計を使用)の多くの可能性がありますが、正しいと感じるものはなく、ほとんどはアドホックです。Matlabで優れた機能を設計しても満足しません
  • コミュニティは大きいですが、良いコードを共有して見つけるのは簡単ではありません。ファイル交換はそれほど素晴らしいものではありません。

これは、Matlabに対する私の多くの不満のほんの一部です。輝かしい属性の1つです。簡単で、コードをすばやく(非常に簡単に)作成するのは非常に簡単です。私はそれを残しました、そして私の探求はClojure-> JavaScript-> Python <-> Juliaに私を導きました。ええ、私はあちこちにいました。

  • Clojure:美しい関数型言語。Clojureを使用する理由は、Javaをスクリプト化する能力でした。「大きな」コードベースの多くはJavaにあるため、これは非常に理にかなっています。当時、多くの科学的処理は容易に利用できず、視覚化もそれほど多くありませんでした。しかし、これは変化していると思います。
  • Javascript:http://julialang.org/でベンチマークを見た後、D3の視覚化機能に間違いなく興味があったので、JavaScriptを試すことにしました。JavaScriptは驚くほど高速です。しかし、本当に自分を嫌いにしたいのであれば、JavaScriptを学んでください。
  • Python:Pythonには素晴らしいコミュニティがあり、多くの素晴らしいプロジェクトが進行しています。IPython Notebookは、多くの理由で驚くべきものです(そのうちの1つは、PowerPointへの単純な図のコピー/貼り付けです)。NumPy / SciPy / Scikit-Learn / Pandasのようなプロジェクトは、Pythonを本当に楽しく使いやすいものにしました。複数のコアまたはクラスターで非常に簡単に使用できます。私はスイッチに本当に満足しています。
  • ジュリア:ジュリアはすごい。特にMatlabユーザーの場合。まだ初期段階なので、多くの変更が行われています。Pythonの主な欠点の1つは、Matlabが持つすべての組み込み機能を備えていないことです。確かにNumPy / SciPyはその機能をもたらしますが、組み込みではなく、純粋なpythonオブジェクトかnumpyオブジェクトかを決定する必要があります。Juliaには基本的に、PythonがMatlabから提供されることを望むすべてのものがあります。待ちますが、これは将来的にMatlabユーザーにとって最良のオプションです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.