Clojure対R:データ分析の長所と短所


39

近い将来、Rを学習する計画がありました。Clojureについて知った別の質問を読んで。今、私は何をすべきかわかりません。

にとってのRの大きな利点は、私の監督者の1人を含めて、経済学の一部の人がそれを使用していることです(ただし、他の人はRに近づかないでください!)。Clojureの利点の 1つは、Lispベースであり、Emacsの学習を開始し、独自のカスタマイズを作成することに熱心であるためです(そうです、ClojureとElispはLispの異なる方言ですが、 Lispと、したがって私が想像するようなものの両方)。

私はこれが非常に個人的なものであると知っているので、どちらが良いかを尋ねることはできませんが、誰かがClojure x Rの利点(または利点)を、特に実用的な面で私に与えることができますか?たとえば、学習しやすいもの、柔軟性の高いもの、強力なもの、ライブラリ、サポート、ユーザーなどが多いものはどれでしょうか?

私の意図した使用:私の推定の大部分はMatlabを使用して行う必要があるため、統計分析の観点で深すぎるものを探しているのではなく、初期データの操作と視覚化、要約統計、グラフ作成をExcelに置き換えるソフトウェアを探しています。しかし、いくつかの基本的な統計分析または私の推定での最初の試みも。


10
Rを味わうのであれば、MATLABを辞める可能性が非常に高いです(私の場合のように)。

IMO、これはコミュニティWikiである必要があります(言語の「対」タイプの質問はかなり主観的です)。
シェーン

これは間違いなくプログラミング言語に関する質問であり、Stack Overflowで質問する必要があります。
シャーピー

Sharpieに同意します。@Vivi:質問のタイトルを「データ変更の利点と欠点」またはその行に沿ったものに変更して、よりトピックに合うようにする必要があります。
シェーン

5
@ Sharpie、@ Shane IMOはこの点でツールについての質問なので、受け入れられます。

回答:


27

私は両方の言語が大好きだということから始めましょう。どちらにしても間違いはありませんし、データ分析を行うためのC ++やJavaのような言語よりも確かに優れています。

基本的なデータ分析には、Rをお勧めします(特にplyrを使用)。IMO、RはClojureよりも学習しやすいですが、ClojureはLispに基づいており、多数の素晴らしいLispリソース(SICPなど)が利用可能であるため、これは完全には明らかではありません。Clojureにはキーワードは少ないですが、ライブラリをインストールして操作するのははるかに困難です。また、R(またはS)の大部分はSchemeから派生しているため、Lispの知識を使用することでメリットが得られることに留意してください。

一般に:

Rの主な利点は、CRANのコミュニティ(2461以上のパッケージとカウント)です。matlabのような商用アプリケーションでさえ、近い将来これと比較するものはありません。

ClojureにはJVMで実行できるという大きな利点があります。つまり、Javaベースのライブラリをすぐに使用できます。

少し前にClojure / IncanterをRに関連した講演をしので、興味があるかもしれません。この作成に関する私の経験では、Clojureは通常、単純な操作のRよりも低速でした。


11

私は過去6〜7年間ヘビーRユーザーです。言語として、いくつかの設計上の制限があります。それでも、計量経済学とデータ分析の仕事には、心からお勧めします。計量経済学、時系列、消費者選択モデリングなどに関連する多数のパッケージがあり、もちろん優れた視覚化、優れた代数、数値ライブラリなどがあります。データサイズの制限についてはあまり心配しません。Rは(たとえばSASとは異なり) "ビッグデータ"用に設計されていませんが、それを回避する方法があります。パッケージの可用性は、実際に違いを生むものです。

私はClojureの言語仕様を読んだだけで、それは美しくてきれいです。並列化とスケールの問題に自然に対処します。また、基本的なJavaまたはOOPの知識がある場合は、多数の高品質のJavaライブラリを活用できます。

私がClojureで抱えている問題は、最近のワンマン(R.Hickey)操作であるため、1)非常にリスクの高い2)非常に未熟な3)ニッチの採用があることです。愛好家、早期導入者、新しいことを試したいCS / MLの人々に最適です。言語を目的の手段とみなし、他の人とコードを共有できる非常に堅牢なコードを必要とするユーザーにとって、確立された言語はより安全な選択のようです。あなたが誰であるかを知ってください。


+1すばらしい回答。Incanterに興味を持っていた(そしてJavaコーディングを行った)ので、しばらく前に同様の議論がありました。Rは統計作業を迅速に行うために使用する言語であり、Clojureはコンピューター科学者のように考えるために使用する言語であることは明らかでした。明らかに重複していますが、あなたが言うように「あなたが誰であるかを知っている」。
ジョシュヘマン

SASは非常に古く、もともとパンチカードで実行されていたため、その扱いにくい、古風な構文です。その「ビッグデータデザイン」の一部は、お使いの携帯電話よりもメモリが少なく、データを入力するためにパンチカードを使用する「メインフレーム」で実行するように当初設計された単なる不運です。たとえそれがうまく処理されたとしても、ビッグデータ向けに「設計された」とは言いません。
ウェイン14

初めて聞いたとき、2011年にClojureについて同様の懸念がありました。Clojureとそのコミュニティはかなり成熟しており、驚くほど人気が​​あります(結局、オブジェクト指向ではない、機能的なLispです)。ただし、Incanterが多くのパッケージでRに追いつくとは思わない(通常、考えられるなら、すでに行われている)。JRI Java-Rインターフェースに基づいたClojureライブラリーRincanterがありますが、これがどれほど簡単かはわかりません。
火星14

5

更新(2014年8月):以下の@gappyのコメントにあるように、Rバージョン3.0.0以降では制限が高くなり、Rはより大きなデータセットを処理できることを意味します。

ここにデータポイントがあります。Rには「ビッグデータの上限」があり、巨大なデータセットを使用する予定があるかどうかを知るのに役立ちます。

Clojure / Incanterに同じ制限が適用されるのか、Rを上回るのか、実際にはもっと悪いのかはわかりません。特にClojureの遅延機能のパワーを利用する場合、JVMはおそらく大きなデータセットを処理できると思います。


1
Rも遅延評価されます。

3
@mbq:あなたのコメントは不快です。Rは関数定義内の変数を遅延評価しますが、「遅延」は通常の動作ではありません。関数のdelayAssign()は、変数の代入で遅延するようにインタープリターに指示するために存在しますが、インタープリターは、評価が必要かどうかにかかわらず、データ構造がその変数を指すと評価を行います。さらに、Rの商用企業であるRevolution Analyticsは、イテレータオブジェクトを作成して、「ビッグデータ」分析でRを使用するマーケティングをサポートする必要がありました。
ジョシュヘマン

この答えは更新されるべきだと思います。R 3.0.0以来、Rはないではない、もう2 ^ 31-1要素の制限があります。制限は、配列の各次元で2 ^ 63-1(私は信じる)および2 ^ 31-1ではありません。これにより、メモリ内の大きなオブジェクトに適しています。
ギャッピー14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.