ベストアンサー
stataからRに切り替えました。観察結果は次のとおりです。
利点:
- Rはオープンソースであるため、ニッチな問題のために人々が作成した非常に優れた最先端のアルゴリズムやソフトウェアにアクセスできます。
- Rの方が視覚化に優れています。ggplot2をうまく処理できたら、次のことができます。ほぼすべての種類のデータで非常に驚くべきことです。
- カスタムパッケージや関数を作成するのにRが簡単であることがわかりました。
- Rは統計/機械学習コミュニティに近いため、「stataよりも多くのサポート/パッケージを見つけることができます。
- 特にサーバーで作業する場合は、RStudioGuiが大好きです。
- Rはより優れたLaTeXサポートを提供します。
- Rには非常に活発なコミュニティとヘルプリストがあります。これらは、私のすべての質問を驚くほど迅速にサポートしてくれます。
- Rはビッグデータで動作します! RHadoopパッケージを使用すると、R関数を使用してカスタムMapReduceスクリプトを記述できます。ビッグデータを処理する必要があり、Stataしか使用できない場合は、困惑します。
- 「ハッキング」が多くなる傾向があります。ネットワーク分析、カスタムブートストラップなどの複雑な問題については、Rで。バニラ実装から離れるとすぐに、Rのプロシージャでショートカット関数を見つけることがよくありますが、Stataではコードを作成する必要があります。
短所:
- Rはオープンソースであるため、アクティブな開発がない場合は、新しいアルゴリズムにアクセスできるようになるまでしばらく待つ必要があります。
- Stataは計量経済学コミュニティにはるかに近く、Rよりもはるかに多くのアルゴリズム、パッケージ、実装があります。エコノミストの場合、計量経済学パッケージの包括性の欠如に不満を感じるでしょう。
- Stataには優れたGUIがあり、実行するプロシージャをインタラクティブに選択して、ほとんどの詳細を入力できます。これは、これまで使用したことのない機能を使用する場合に最適です。 Rには実際にはこれがありません。GoogleでRIを半分の時間使用しているような気がします。
- StataはR [1]よりも高速です。
- stataモジュールのダウンロードははるかに合理化されたプロセス。CRANのRモジュールの場合、通常は問題はありませんが(Centosマシンを使用しているときに問題が発生しましたが)、CRANにない重要なパッケージがいくつかあります。
- Stataの標準的な視覚化とプロットはRよりもはるかに優れています。
- Stataの標準的なヘルプは優れています。どの関数のヘルプも読んで、自分が何をしているのかを正確に把握できるように感じます。文書化が不十分ないくつかのRパッケージについては、そうは思わないのですが、そうする必要があります。
- Rには、「WTF」構文とパッケージ命名構造があります。ほとんどのオープンソースプロジェクトはそうします。 stata関数(reg、lmなど)の単純さが恋しいです。
[1] http://ekonometrics.blogspot.com/2011/04/speeding-tickets-for-r-and-stata.html
回答
一般的に、副詞を見つけたとき “明らかに」文の中に、私はそれに続くいくつかの不当な声明を見つけます。ここで、Rが「奇妙な構文」を持っているというあなたの主張に同意しません。教育を受けたすべてのプログラマーは、Haskellまたは一部のLispでコーディングすることを好みますが、実際には、これらの言語は決して多くの聴衆に届くことはありません。 Rは内部のLispです(たとえば、実際にはRの言語でコーディングできますが、Pythonではコーディングできません)が、外部の科学言語に十分に近いです。実際、ご存知のように、データ分析用の言語として、Rは実際に最も自然でエレガントな言語です。これを証明したい場合は、PythonとJuliaを取り巻くアクティビティを確認してください:データフレーム(パンダとJliaのdata.frame)、数式(patsy)、plyr(パンダ)の実装。それでも、これらすべての機能は、他の言語にいくらか移植されているように感じます。人々が「奇妙」または「奇抜」と感じるのは、インタラクティブな使用法への譲歩(たとえば、次元の削除)、または言語の機能的遺産の結果です。
Rにはたくさんの機能があることに同意します改善すべき領域がありますが、ほとんどの場合、言語構文ではありません。確かに、その命名規則には一貫性がありません。速度とメモリ管理は既知の問題です。等々。何故ですか?いくつかの理由:
- Rのプライムディレクティブ(作成者のJohn Chambersによる)は、信頼できるソフトウェアを作成することです。 Rは精度と信頼性を重視しています。そのコア統計関数は一流です。基本的なグラフィックシステムでさえ、ヒストグラムのビニング(些細な問題ではありません!)からテキストの配置まで、慎重に検討されています。スピードは決して大きな関心事ではありませんでした、そして当然そうです。速度とメモリ効率が問題である場合、私たちはすべてFORTRANでコーディングしますが、これも簡単で高レベルです。Rベースのソースコードは短いです(400K LOC。比較として、Numpyだけでも同じサイズです)。 、そして非常に読みやすい。あなたが理解し、信頼できるコード。
- SplusとRは、「ビッグデータ」の時代と機械学習の台頭のかなり前の80年代と90年代に考案されました。ただし、R は改善されています。メモリ管理ははるかに優れており、おそらくMATLABよりも優れています。ある程度の方法はありますが、改善できる点もあります(たとえば、内部データ表現)。
- コア開発チームの売上高は最小限であり、 15年前の若いコーダーは現在50代です。さらに、コミュニティへの関与ははるかに少なく、コミットの70%以上を担当するオックスフォードの教授であるBrianRipleyのような絵のような/神話的なキャラクターで構成されています。地球上およびRメーリングリストで最も友好的な人物です。
- RはLLVMをターゲットとする高速JITコンパイラを求めていますが、これらのことは一夜にして起こりません。コンパイラーとインタープリターの設計知識、強力な労働倫理(2、3年で製品をプッシュする)、そして独自のバニティプロジェクトを作成する代わりに既存の言語を再実装する謙虚さを備えた、優れた教育を受けたコーダーのチームが必要です。また、#3を参照してください。