題:
朱莉婭有希望加入統計界嗎?
Christopher Aden
2012-04-02 03:56:09 UTC
view on stackexchange narkive permalink

我最近閱讀了R-Bloggers的一篇帖子,該帖子與John Myles White的此博客帖子相關,涉及一種稱為 Julia的新語言。 Julia利用即時編譯器的優勢,該編譯器可提供極佳的快速運行時間,並將其置於與C / C ++相同的速度量級(相同的 order ,但速度不一樣)。此外,它使用我們開始使用傳統語言進行編程的人們所熟悉的正統循環機制,而不是R的apply語句和向量運算。

R絲毫不會消失,即使來自Julia的如此出色的時機也是如此。它在行業中具有廣泛的支持,並且可以執行幾乎所有操作的眾多出色軟件包。

我的興趣本質上是貝葉斯(Bayesian),通常不可能進行矢量化。當然,串行任務必須使用循環來完成,並且每次迭代都需要大量的計算。在執行這些串行循環任務時,R可能會非常慢,並且C / ++並不是編寫程序的第一步。 Julia似乎是用C / ++編寫的一種很好的選擇,但是它還處於起步階段,並且缺少許多我喜歡R的功能。只有獲得足夠的支持,將Julia作為計算統計工作台來學習才有意義。來自統計界的人,人們開始為此編寫有用的軟件包。

我的問題如下:

  1. Julia需要具有哪些功能才能使R成為統計事實語言?

  2. 學習朱莉婭(Julia)來執行繁重的計算任務,而不是學習像C / ++這樣的低級語言,有什麼優缺點?

  3. ol>
朱莉婭(Julia)比Incanter(http://incanter.org/)和其他類似項目更好嗎?
重新構造程序(例如循環):聽起來像是倒退了一大步。從單CPU和小型CPU平台到大規模並行平台,我們正處於風雲突變的時刻。隨著這種發展發生在未來十年左右的時間裡,與程序代碼相比,輕鬆,自動可並行化的編碼功能風格將獲得巨大的優勢。當然,在選擇統計平台時還需要考慮許多其他因素,但是作為長期策略,這一點值得牢記。
-1
克里斯托弗(Christopher),一個好的方法是以一種旨在徵求原因和證據的方式來構架問題。例如,不要嘗試“朱莉婭(Julia)有必要的誘惑力……”,而應嘗試類似“朱莉婭(Julia)”的哪些元素可能會使其獲得吸引力以及為什麼?而不是“值得學習”,而是問“為什麼朱莉婭現在值得學習?它的潛在優勢是什麼?”您可以通過指定您可能感興趣的* Julia *的用途來進一步完善該問題,例如軟件開發,解決一次性問題,生物統計學,數據挖掘等。
@Whuber:我感謝您的建議並已實施。謝謝!
克里斯托弗,做得好! (該問題的+1)。現在,我認為@naught可以為*不*成為CW做一個很好的例子,但我仍然同意chl的看法,即可能會出現多個好的答案-這已經非常明顯了, -因此更喜歡保持該線程的CW狀態。
@whuber:的問題似乎已經發生了很大變化。我現在對CW沒有很好的理由了:)
我對CW給我低質量答案的擔心是沒有根據的。我對到目前為止收到的回复非常滿意。
新設計面臨的最大障礙是舊設計以某種方式(或多或少有效地)維持了其最初意圖之外的另一種適應。朱莉婭(Julia)的最大競爭對手不是R。它更多是關於Hp計算對base-R的適應。在這裡,我想到了諸如“ compiler”軟件包之類的字節碼倡議。編譯器起步很慢,但最終它將趕上Javascript在非矢量化操作方面的速度,並在朱莉婭擁有多達R的代碼倉庫之前這樣做。結果可能會使R遠離優雅。 ...
@whuber,您能為我提供有關»“易於並自動並行化的編碼功能樣式”的更多信息嗎?作為在CUDA和MPI上苦苦掙扎的人,這聽起來很有趣!
@trolle3000很好,實用的參考書包括有關R的書籍(例如其創始人之一John Chambers撰寫的許多書籍)和* Mathematica *(支持多種編程範例,但支持函數式編程並在許多版本中提供自動並行化)通過“ Parallel *”命令以及最近的CUDA支持)。例如,請參閱http://mathematica.stackexchange.com/questions/1883。
@trolle3000:自動並行化是某些語言中的一項不錯的功能。例如,Matlab在統計工具箱中具有許多並行的功能。儘管許多並行化不會像CUDA那樣困難(明確),但仍需要付出一些努力。參見:http://cran.r-project.org/web/packages/doMC/index.html和http://docs.julialang.org/en/latest/manual/parallel-computing/
@ChristopherAden, @whuber;並行化不僅自動地擺脫了“某些語言” ...!例如,MATLAB的parfor命令將僅並行化一個已經令人尷尬的並行問題,就像C語言中的#omp pragma parfor一樣。我真正的問題是,函數編程在並行化方面的固有優勢是什麼?
顯然是“ #pragma omp parallel for”
@trolle3000我認為沒有人聲稱並行化是如此自動化。但是,當(如果)編寫了程序的功能版本時,您已經進行了許多並行化工作,這就是為什麼* Mathematica *之類的應用程序通常可以非常有效地自動化並行化的原因。相反,如果您以程序方式對算法進行編碼,則通常很難並行化它。
令我驚訝的是,當前有關“函數式編程”的討論似乎省略了諸如Haskell,Clojure和Scala之類的*真正的函數式語言。還要注意,命令性語言並發性不一定比FP差(例如Go)。
Julia剛推出了一個很棒的MCMC新包裝!你們應該檢查一下:) https://github.com/brian-j-smith/Mamba.jl
“開始使用傳統語言進行編程的我們所熟悉的正統循環機制,而不是R的apply語句和向量運算。”-我對這句話有疑問。您可能是指那些開始從事命令式編程的程序員。反正什麼是“傳統編程語言”?R的apply語句符合非常傳統的功能語言範例,並且類似於ML中的通用編程風格。兩種方法都至少有40年的歷史了。我在1990年代中期首次看到C ++ STL。“應用”與IT一樣具有傳統意義
-1
謝謝,@Colin。我相信您誤解了我的評論:我不認為我說過或暗示矢量化對於代碼“快速”是必需的。向量化有助於提高可伸縮性和極高的速度,因此向量化是將要應用於大問題的代碼的重要考慮因素。有趣的是,您聲稱Julia對未明確以矢量化形式編寫的代碼進行矢量化。如果是這樣,我們當然可以期望Julia中實現的許多算法都是快速且可擴展的。
-1
@Colin謝謝。正是在我理解您的評論的意義上,我不希望解釋器或編譯器會識別所有矢量化機會。
有人想補充說明一下“ apply”與“ foreach”有什麼區別,但主要是語法。
21 答案:
Fomite
2012-04-02 12:02:44 UTC
view on stackexchange narkive permalink

我認為關鍵在於是否開始為Julia開發庫。看到玩具示例(即使它們是複雜的玩具)也很好,這很好,證明茱莉亞在任務R不好的情況下將R吹了水。為什麼我認識的許多使用R的人都使用R。他們之所以使用R,是因為幾乎在陽光下進行任何統計任務時,都有人為其編寫了R代碼。 R既是一種編程語言,又是一種統計軟件包-目前,Julia只是前者。 )仍然難以使用可用的統計工具包。

您是否實際查看了基準代碼(或多個基準)以了解R方法編寫得不好?我試圖自己找到它,看看各種語言是如何使用的...
-1
基準代碼是“糟糕的”。對於R實例,速度可能提高2000倍。請參閱http://stackoverflow.com/questions/9968578/speeding-up-julias-poorly-writer-r-examples,尤其是註釋。
沒錯,@gsk。例如,“ pisum”(位於https://github.com/JuliaLang/julia/blob/master/test/perf/perf.R)需要7.76秒,而使用慣用R進行簡單重寫(`replicate(500,sum(( 1 /(10000:1))^ 2))[500]`)耗時0.137秒,是加速速度的50倍以上。
完全是@whuber。並且編譯可能會給您帶來另外的“ x”或“ x”。
R起飛的原因之一是它與S-PLUS的兼容性。人們能夠使用很多舊代碼。舊的頻繁使用的代碼具有較少的錯誤。對於像Julia這樣與舊代碼不兼容的新事物,您需要一個“殺手級應用”情況:這足以證明轉移到新平台上的所有麻煩。它類似於Google的新語言Go-不錯的嘗試,但是我為什麼要學習它?
朱莉婭擁有RCall和PyCall來調用Python和R庫,而無需大驚小怪。實際上,它是如此強大,以至於人們為人們習慣使用的許多常見庫編寫了包裝器,因此整個R核心庫都通過Rmath.jl(在Julia早期是標準RNG)包裝起來使用,並且許多人使用使用matplotlib的PyPlot。有`ccall`函數,因此您可以調用C,對於Fortran也是如此。包裹也為這些包裹。因此,Julia通過簡化幾乎所有語言庫的使用來解決了庫問題!
Harlan
2012-04-03 19:05:29 UTC
view on stackexchange narkive permalink

我同意很多其他意見。 “希望”?當然。我認為Julia多年來從R和Python / NumPy / Pandas以及其他系統所做的對與錯中學到了很多東西。如果我比以前更聰明,並且想寫一種新的編程語言作為將來的統計開發環境的基礎,那麼它看起來很像Julia。

這就是說,事後才可能回答這個問題還需要5年。到目前為止,Julia缺少統計編程系統的以下關鍵方面,該系統可能與R競爭日常用戶:

(列表隨時間更新...)

  • 可選排序的因子類型
  • 大多數統計檢驗和統計模型
  • 有素編程/可再現分析支持
  • R類即便是Matlab類的繪圖

要與R,Julia和附加統計信息包競爭,也需要足夠乾淨和完整,以使聰明的非程序員能夠做到,例如社會科學專業的研究生,可以合理地使用它。要達到目標,需要進行大量的工作。

Update:

Julia現在支持缺少數據/ NA的DataFrame,模塊/命名空間,公式類型和 model.matrix 基礎結構,繪圖(排序),數據庫支持(但尚未提供給DataFrames)以及通過關鍵字傳遞參數。現在還提供一個IDE(Julia Studio),Windows支持,一些統計測試以及一些日期/時間支持。

“識字編程/可再現分析支持”->參見[IJulia](https://github.com/JuliaLang/IJulia.jl)。
為iPython / Jupyter筆記本生態系統添加iJulia內核。
Julia Studio正在逐步淘汰,Juno現在是IDE
首次發布此答案後2.5年,“必備”清單上三分之二的項目現已實施。我認為這是最好的證據,您可以找到朱莉婭的真實承諾。
已經過去了5年。@Harlan我們到了嗎?
@stask哈,好問題!繪圖,統計軟件包等都處於良好狀態。最弱的地方實際上是DataFrames本身,它們一直在快速變化以支持類型穩定且快速的丟失數據方法。聽起來這將在接下來的幾週內完成,Julia 0.7(也稱為1.0 Beta)應在未來幾個月內發布。如果您有一段時間沒有使用它,我一定會在0.7版本和DataFrames更新之後重新訪問Julia!
同樣對於統計可重現分析,Weave.jl也值得一看。:)
Yike Lu
2012-06-05 19:28:32 UTC
view on stackexchange narkive permalink

對我來說,數據分析語言的一個非常重要的事情是具有查詢/關係代數功能以及合理的默認值和麵向交互的設計,並且理想情況下,這應該是該語言的內置功能。 IMO,沒有我使用過的FOSS語言能有效地做到這一點,甚至R也沒有。

data.frame交互操作非常笨重-例如,它在調用時打印整個數據結構,\ $語法很難以編程方式使用,查詢需要冗餘的自引用(即 DF [DF $ x < 10] ),連接和聚合都很麻煩。 Data.table解決了大多數此類煩惱,但由於它不是核心實現的一部分,因此大多數R代碼都沒有利用其功能。

python中的熊貓也遭受相同的錯誤。

>

這些問題看似挑剔,但這些錯誤會累積起來,最終總會耗費大量時間,最終很明顯。

我相信Julia能否成功進行數據分析在這種環境下,必須致力於在用戶友好的表數據類型上實現SQL類型運算符(不佔用SQL語法)。

+1-一個有趣的觀點,經過深思熟慮地解釋了。歡迎來到我們的社區!
為了細緻入微,大型Pandas DataFrame在調用時實際上並不會打印出所有內容,就像R中那樣。它們切換到顯示列標題以及計數null / non-null值。另外,雖然我同意語法不是理想的選擇,但范圍問題使我們難以消除對理解式過濾的自引用。它比較複雜,但是如果DataFrame在運行時沒有您期望的額外列,那麼它也可以抵抗名稱空間衝突。
user88
2012-04-02 18:14:13 UTC
view on stackexchange narkive permalink

我可以按照Dirk和EpiGrad所說的簽字;然而,還有另一件事使R在其利基市場中成為獨特的語言-面向數據的類型系統。

R是專門為處理數據而設計的,這就是為什麼它以向量為中心並且具有諸如data.frame,因子,NA和屬性之類的東西。另一方面,Julia的類型具有數值性能

這可能看起來是無害的,但是任何嘗試使用MATLAB進行統計的人都知道它確實很痛。

p>因此,至少對於我來說,Julia無法提供我無法用幾行C塊修復的任何內容,並且殺死了許多真正有用的表達方式。

(+1)好點。還有一些進一步的想法:Python缺乏類似於data.frame的工具,這讓我很困擾,但是現在[Pandas](http://pandas.pydata.org/)似乎已經解決了這個問題。公式是[statsmodels](https://github.com/statsmodels/statsmodels)的某些計劃擴展中的一部分(嗯,我們知道有時最好避免使用R中的公式接口)。朱莉婭有一個[data.frame提案](http://groups.google.com/group/julia-dev/browse_thread/thread/acefe005647e5ac6)(與Python相比非常快!),(...)
(續)和[Doug Bates](http://dmbates.blogspot.com/)已開始與Julia以及[Shane](http://www.statalgo.com/2012/03/ 24 / statistics-with-julia /),[John Myles White](http://www.johnmyleswhite.com/notebook/2012/03/31/julia-i-love-you/)或[Vince Buffalo]( http://vincebuffalo.org/2012/03/07/thoughts-on-julia.html),這當然反映了統計,機器學習和生物信息學界的興趣。因此,讓我們拭目以待,就像@Dirk所說的那樣。
我認為@mbq也有關於C的觀點。如果我需要與C / C ++數量級相同的速度...我可以將C / C ++與R一起使用。
@EpiGrad,是的,您可以編寫C / C ++並與R進行乾淨的接口。但這是缺點,而不是語言的優點。使用Julia,最終用戶將不需要編寫C來提高速度。
關於Julia的有趣的事情之一是,除硬件級別的位和浮點塊外,所有類型系統都在Julia本身中實現。這意味著您可以為“數據”編寫一個看起來像R的並行類型系統,包括NA支持。
@Harlan這是一個弱項,如果您已經了解Julia和C。我斷言在C上花費的時間<在學習一種新語言上*從頭開始重新實現一切的時間。
@EpiGrad,對。可能有數以百萬計的科學家和分析家知道零C,因此無需學習即可快速完成工作。如果他們需要學習使用一種語言編寫的程序(可能很差),那麼對於一種針對其用例而不是針對系統級開發而設計的語言,有很多話要說。
-1
Wayne
2012-04-03 20:32:35 UTC
view on stackexchange narkive permalink

我可以看到Julia取代了Matlab,這對人類是一項巨大的服務。

要取代R,您需要考慮Neil G,Harlan和其他人提到的所有內容,還有一個我認為無法解決的重要因素:易於安裝應用程序及其庫。

現在,您可以下載適用於Mac,Windows或Linux的R的二進製文件。它具有大量的統計方法開箱即用的功能。如果要下載軟件包,只需簡單的命令或單擊鼠標即可。

我去下載了Julia,這並不簡單。即使下載了二進製文件,也必須安裝gfortran才能獲得正確的庫。我下載了源代碼並嘗試進行 make ,但失敗了,沒有任何真正有用的消息。我有計算機科學的本科和研究生學位,所以如果我願意的話,我可以四處摸索並開始工作。 (我不是。)Joe Statistician會這樣做嗎?如果出於某種原因,您需要從源代碼編譯軟件包,則實際上並沒有什麼困難(只要您在系統上安裝了適當的編譯器等)。您不能忽略此基礎結構,可以通過github進行所有操作,並期望得到廣泛採用。

編輯:我想四處逛逛Julia –看起來很令人興奮。兩個問題:

1)當我嘗試安裝其他程序包時(忘記了它們在Julia中的稱呼),它失敗並顯示了模糊的錯誤。顯然,我的Mac沒有他們所期望的make-like工具。它不僅會失敗,而且還會留下我必須手動刪除的內容,否則其他安裝將會失敗。

2)它們在一行代碼中強制一定的間距。我前面沒有細節,但是它與宏有關,並且在宏和括號之間沒有空格來打開其參數。這種限制確實使我感到煩惱,因為我已經開發了多年的代碼格式和語言,而且實際上在函數/宏名稱和左括號之間留了一個空格。我了解一些代碼格式限制,但是一行中有空格嗎?

朱莉婭的嬰儿期還很長。我不是歷史學家,但我敢打賭,R的干淨二進製文件也沒有在頭幾個月出現。到目前為止,您對發行系統的觀點還很少提及。再說一次,我也打賭CRAN不會和R同時出現。“ CJAN”絕對適合大規模採用。
然後,您可能會對@Christopher,感興趣,您知道R確實是一個獨立開發的程序包克隆(先是S,然後是S-Plus),這在商業上取得了輕微的成功,並且在十年前就在開發中。這為* Julia *(以及其他大多數此類努力)提供了前所未有的重要開端。
@ChristopherAden:我同意朱莉婭還年輕。但是我會堅決不同意“一個“ CJAN”絕對適合大規模採用”:這是絕對必要的。我能想到的唯一沒有像CRAN這樣的基礎設施的工具是高度專業化的,例如JAGS。但是Julia和R一樣是通用的。
開源語言將取代MATLAB的那一天將是工程界最好的一天。
“我可以看到Julia取代了Matlab,這將是對人類的巨大服務。”我完全同意。
Dirk Eddelbuettel
2012-04-02 05:04:45 UTC
view on stackexchange narkive permalink

朱莉婭語言很新;它在聚光燈下的時間可以用幾週來度量(即使它的顯影時間當然可以用數年來度量)。現在,這些星期是非常激動人心的幾週-例如,在斯坦福大學最近的演講“這才剛剛開始”-但您在更廣泛的基礎架構和軟件包支持方面的要求將花費更長的時間實現。

因此,我將繼續使用R,並且要注意其他替代方法的開發。去年,有很多人對Clojure進行抗議。今年朱莉婭(Julia)是新的統治者。我們看看它是否粘住。

感謝您的見解。我認為現在說朱莉婭可能還為時過早。您可能有一些偏見,但是您認為RCpp在此期間是有效的替代方法,還是需要太多的編程知識才能使之值得解決?
由於我在Rcpp上看到的東西,茱莉亞給我留下了更深刻的印象-像MCMC一樣,簡單循環的效果分別提高了約50、60、70倍,而像斐波那契這樣的“退化”示例的效果則提高了數百倍rcpp搞定了!但是我也知道,使用Rcpp,我仍然可以訪問3700 CRAN軟件包(以及無數C ++庫),而Julia現在幾乎沒有任何東西。也就是說,朱莉婭的承諾是巨大的。但是也許既有“當時”又有“現在”。時間會證明一切。
並且不要忘記Incanter,它應該成為基於Clojure的統計環境。朱莉婭有什麼優勢?
@Wayne,讓我們不要在這裡弄混水。為此打開一個新問題(也許要求在多種語言之間進行比較)
@naught011:我只是在回應Dirk的觀點,即Clojure是當月的風味,然後是Incanter,現在是Julia。我認為Julia或Incanter(或Clojure)沒有機會成為廣義的統計平台。
朱莉婭不能與“魔咒”或clojure之類的東西相比。 Julia是一個真正的新範例,基於將JIT編譯為機器代碼!這是一個完全不同的遊戲。
@DirkEddelbuettel:是否卡住了?如果您是首席開發人員R開發人員,在進行了將近3年的“粘性”檢查之後,現在應該能夠比我們做更有根據的猜測!
我不知道,但是我很高興地更新了R方面:到目前為止,CRAN上已有6400多個軟件包,現在有350多個使用Rcpp的軟件包。仍然對我有用。朱莉婭(Julia)鄉親們看起來很活躍,很快樂-做出選擇是一件好事。沒有一種語言可以解決所有問題:[抱歉,Python](https://thescienceweb.wordpress.com/2015/03/19/all-other-languages-tired-of-pythons-shit/)。
user1295658
2014-06-22 17:57:46 UTC
view on stackexchange narkive permalink

這裡是布魯斯·泰特(Bruce Tate),《七週之七種語言》的作者。這裡有一些想法。我正在為Julia編寫後續書籍。以下是我玩了幾週後的看法。

有兩個基本作用力在起作用。首先,所有語言都有生命週期。 R將有一天被替換。我們不知道什麼時候。新語言的發展非常困難。當一種新語言發展起來時,通常可以解決一些壓倒性的痛點。

這兩件事是相關的。對我來說,我們開始看到圍繞R之類的語言正在形成一個主題。它不夠快,而且比所需的要難。那些可以在一定性能範圍內生活並留在已建立的庫中的人很好。那些不需要更多的人,他們開始尋找更多。

問題是,計算機體系結構正在發生變化,並且要利用它們,必須以某種方式構造語言及其結構。 Julia對並發的看法很有趣。它為這種語言優化了正確的選擇:透明分發和進程之間數據的有效移動。當我將Julia用於典型任務,映射和轉換等時,我只是在調用函數。我不必擔心管道問題。

對我來說,Julia在一個處理器上更快的事實很有趣,但對R而言卻不是太過分。對我而言,有趣的是,隨著處理器越來越依賴多核來提高性能和技術,如果使用正確的語言,那麼計算問題就處於理想的位置,可以發揮最大的優勢。

可以幫助實現此目標的另一個功能確實是宏。目前語言的節奏非常緊張。宏使您可以使用更大,更乾淨的構建塊進行構建。查看庫很有趣,但並不能說明全部情況。您需要查看庫的增長。朱莉婭的軌跡就在這裡。

Clojure對某些人來說很有趣,因為沒有技術語言可以做到R所能做到的,因此有些人希望使用通用語言來填補這一空白。我實際上是個超級粉絲。但是Clojure是一個非常嚴重的大腦扭曲。 Clojure將提供給需要進行技術計算的程序員。它不適合工程師和科學家。有太多東西要學。

所以對我來說,Julia或類似的東西絕對有一天會取代R。這是時間的問題。

並沒有提供模板類型和一流的Lisp派生的宏生態系統的新語言,Julia可以提供。我認為,此功能以及並發功能和速度(在將來的版本中可能會有所改進)使其在競爭其他語言方面具有很強的競爭力。我很少使用R,但經常使用C ++(帶有模板)和Lisp(帶有宏)。Julia可以使用一種清晰的語言來乾淨高效地完成這兩項任務。我堅信朱莉婭將來會成為主要語言。
Neil G
2012-04-03 19:29:09 UTC
view on stackexchange narkive permalink

每當我看到一種新語言時,我都會問自己自己為什麼不能對現有語言進行改進。

Python的一大優勢是

  • 豐富的模塊(不僅是統計信息,還包括繪圖庫,輸出到pdf等)
  • 最終需要長期使用的語言構造(大型項目中需要的面向對象構造;裝飾器,閉包等簡化了開發的工作)
  • 許多教程和龐大的支持社區
  • 如果您有大量數據需要處理並且不介意花幾分錢,就可以訪問mapreduce在集群上運行它。

為了超越R,Julia等,Python可以使用

  • 即時編譯開發受限的Python在單台計算機上為您提供更高的速度(但如果您能承受延遲,則mapreduce仍然更好)
  • 更豐富的統計庫
這可能是正確的,但是對於一個非常隨意的用戶,Python的語言設計可能比Matlab或Julia具有更類似於數學語法的東西更難使用。您可以在Julia中說“ y = 3x + 2”,並且可以使用!
@Harlan:“非常隨意的用戶”有多少統計學家?
這很有趣:大約十多年前我第一次看到Python時,我的反應是完全一樣的(為什麼需要這樣做?為什麼不僅僅改善已經存在的東西?為什麼還要學習一整套新的奇異的語法怪癖,類名,方法,程序以及其他所有內容?)。 :-)
@NeilG不像非程序員研究人員,特別是科學領域的統計人員還不是專業的統計學家。 Python對程序員非常有用,但是如果您要做的只是加載您的心理學數據并快速擬合某些模型,那麼非常簡單的類似於數學的語法可能會比Python優雅的基於對象的設計更好。
@ Harlan-我懷疑這些用戶是否需要Julia,因為R非常適合帽子法案。
@NeilG請記住,R成功的部分原因是它不僅被統計學家使用。供*做統計*的人使用。社會科學家,臨床醫生和理科大一的學生絕對是非常隨意的用戶。
@OweJessen根據我的回答,他們實際上傾向於遵循統計學家的意見,因為這意味著已有代碼庫。如果統計人員全部遷移到Julia,除非他們開始與R進行聯合開發,否則用戶將轉移到編寫所需代碼的人員所在的位置。
-1
@OweJessen:好吧,Python和R是開源的,因此可以移植代碼而無需重新發​​明任何東西。一旦您做任何復雜的事情,Python就會具有明顯的優勢,這部分地推動了numpy,pandas,scipy等的發展。
我認為(CrossValidated成員)John D Cook的博客文章特別關注:我寧願使用通用語言編寫數學程序,也不希望嘗試使用數學語言編寫數學和系統問題。如果Julia社區可以牢記這一點,那麼該語言很有可能會普遍用於分析編程(統計信息只是其中的一部分)。參見http://www.johndcook.com/blog/2012/04/02/why-scipy/
Milton Mai
2016-02-14 03:31:02 UTC
view on stackexchange narkive permalink

Julia不會很快接管R。簽出Microsoft R open。

https://mran.revolutionanalytics.com/open/

這是R的增強版本,可自動使用所有您計算機的核心。它是相同的R,相同的語言,相同的軟件包。安裝時,RStudio還將在控制台中使用它。 MRO的速度甚至比Julia還要快。我做了很多重型計算,並且已經使用Julia一年多了。我最近改用R是因為R有更好的支持,而RStudio是很棒的編輯器。 Julia仍處於初期階段,可能很快就無法趕上Python或R。

Josh Hemann
2012-04-04 19:19:56 UTC
view on stackexchange narkive permalink

以下內容可能不應該作為答案,但將其作為對他人響應的評論加以掩蓋是非常重要的……

我沒有聽到太多關於內存消耗的說法,只是速度。 R的整個語義都是按值傳遞的,這可能會很痛苦,而這一直是對該語言的一種批評(這與已經存在的許多優秀軟件包是一個獨立的問題)。良好的內存管理非常重要,具有處理核心外處理的方法(例如numpy的內存映射數組 pytables或Revolution Analytics的 xdf格式)。雖然PyPy的JIT編譯器允許使用一些引人注目的Python基準測試,但內存消耗可能會很高。那麼,有人對Julia和內存使用有經驗嗎?聽起來好像Windows“ alpha”版本上存在內存洩漏,這無疑將得到解決,而我仍在等待訪問Linux機器來自己使用該語言。

是的,但是有一些方法可以在R(引用類,其中之一)中使用傳遞引用。
R並不是嚴格意義上的按值傳遞。懶惰的評估和一些巧妙的優化意味著,除非必須複製,否則通常不會復制數據。
Ari B. Friedman
2012-05-15 18:51:45 UTC
view on stackexchange narkive permalink

由於許多前面提到的原因,我認為Julia不太可能會取代R。 Julia是Matlab的替代者,而不是R的替代者。他們有不同的目標。即使在Julia具有完備的統計數據庫之後,也沒有人會在其中教授Intro to Statistics課程。

但是,作為速度優化的編程語言,它在令人難以置信的領域中沒有C / C ++那樣痛苦。如果將其無縫鏈接到R(採用Rcpp樣式),那麼它將在編寫對速度至關重要的代碼段中大量使用。不幸的是,目前沒有這樣的鏈接:

https://stackoverflow.com/questions/9965747/linking-r-and-julia

但是現在有一個:http://comments.gmane.org/gmane.comp.lang.julia.devel/15153尚未嘗試(至今)。
conjectures
2015-10-12 21:54:43 UTC
view on stackexchange narkive permalink

我是Julia新手,並且具備R能力。到目前為止,我發現Julia有趣的原因是面向性能和兼容性。

GPU工具。我想將CUSPARSE用於統計應用程序。 CRAN結果表示那裡沒有太多東西。 Julia具有可用的綁定,到目前為止似乎可以正常工作。

 使用CUSPARSEN = 1000M = 1000hA = sprand(N,M,.01)hA = hA'* hAdA = CudaSparseMatrixCSR(hA)dC = CUSPARSE.csric02(dA,'O')#不完整的Cholesky分解= CUSPARSE.to_host(dC) 

HPC工具。一個人可以與多個計算節點交互使用集群。

  nnodes = 2ncores = 12#詢問我們控制的節點上的所有內核procs = addprocs(SlurmManager(nnodes * ncores),partition =“ tesla  proc> 

Python兼容性。。可以訪問procs中的工作進程中的工作程序的節點,節點= n個節點。生態系統。例如。找出如何讀取大腦成像數據很簡單:

  import PyCall @ pyimport nibabelfp =“ foo_BOLD.nii.gz” res = nibabel.load(fp)data = res [:get_data ]();  

C兼容性。以下代碼使用C標準庫生成一個隨機整數。

  ccall(( :rand,“ libc”),Int32,()) 

速度。以為我會看到Distributions.jl包是如何針對R的rmrm進行優化的-我認為它是經過優化的。

  julia> F = Normal(3,1)Distributions.Normal(μ= 3.0,σ= 1.0)julia> @elapsed rand(F,1000000)0.03422067  

在R:

  > system.time(rnorm(1000000,mean = 3,sd = 1))用戶系統運行時間為0.262 0.003 0.266  
@NickCox,,因為已經有十幾個答案,我認為突出顯示另一個角度可能很有趣。另外,我不小心發布了一份初稿:)
問題是朱莉婭為什麼會留在統計界,我的答案集中在對hpc + gpu的良好支持上,許多從事計算密集型工作的人可能會覺得很有趣。
Deduction
2019-01-17 22:01:18 UTC
view on stackexchange narkive permalink

Julia 1.0剛剛推出了非常有用的IDE(Juno)。由於Python已經在機器學習中佔據了主導地位,而R繼續在所有其他類型的統計分析中處於主導地位,因此晚了一點。話雖如此,茱莉亞已經在金融和交易算法領域中脫穎而出,因為必須要有快速的開發時間和執行力。我認為,除非出現另一種明顯更好的語言,否則朱莉婭(Julia)的顯赫地位可能看起來像這樣:

(1)開始吃MATLAB的午餐。 MATLAB用戶喜歡MATLAB語法,但幾乎討厭其他所有內容。速度慢,許可證昂貴,處理不是矩陣的複雜數據結構的方式非常有限。我記得有句名言說:“如果Julia取代了MATLAB,那將是對人類的巨大服務”。 MATLAB用戶可以很快地熟練使用Julia,並且對編寫質量比MATLAB所能做的事情要簡單得多的高質量代碼感到印象深刻(快速的結構可以放入數組中并快速迭代嗎?)。不僅如此,研究人員還可以在Julia(一個小團隊的博士生編寫了世界一流的微分方程組)中創建嚴肅的工具箱,而這在MATLAB中是不可能的。

(2)開始接管數值方法和模擬的研究。麻省理工學院正在大力支持朱莉婭,研究界也在傾聽麻省理工學院的聲音。數值模擬和新的數值方法是沒有庫的不確定問題。這就是茱莉亞語言的光芒。如果沒有可用的庫,那麼用Julia編寫快速質量的代碼比其他任何一種語言都容易得多。這將是一種由數學家為數學家編寫的數字/模擬語言(聽起來與R相似嗎?)

(3)機器學習的另一個突破發生了,這給了Julia以優勢。這有點通配符,可能不會發生。 TensorFlow很棒,但是很難破解。 Python已經開始顯示裂縫,並且TensorFlow已開始採用Swift(Julia獲得了榮譽獎)。如果發生另一項機器學習突破,那麼使用Flux.jl之類的Julia程序包將更容易實現和破解。

(4)朱莉婭開始慢慢追上R,這需要一段時間。在MATLAB中進行統計非常痛苦,但是Juila在Distributions.jl方面已經領先於MATLAB。事實是,R工作流可以輕鬆轉換為Julia。 R唯一真正的優點是,統計人員為統計人員編寫了許多軟件包。但是,此過程在Julia中也很容易做到。區別在於,Julia一路走得很快,而且您不必使用另一種語言來提高性能(更“嚴肅”的R包是用C等語言編寫的)。 R的問題是用R編寫的包太慢而無法處理大量數據。唯一的選擇是將軟件包翻譯成另一種語言,從而使R中的開發過程比Julia慢。如果需要翻譯太多R包來處理更大的數據集,R可能會在這些領域開始追趕Julia。

您記得的有關替換Matlab的報價是[來自此線程](https://stats.stackexchange.com/a/25781/9964)。:)
Mervyn thomas
2013-04-15 18:39:48 UTC
view on stackexchange narkive permalink

我對使用不同體系結構實現更快的速度和更容易的並行化的承諾很感興趣。因此,我一定會注意Julia的開發,但是直到它能夠處理廣義線性混合模型,具有良好的通用引導程序包,用於構建設計矩陣的簡單模型語言,等效於ggplot2的能力以及廣泛的應用範圍之後,我才不太可能使用它。來自機器學習算法。

沒有統計學家對工具的選擇抱有原教旨主義的態度。我們將盡一切可能使我們最有效地完成工作。我的猜測是我會堅持使用R幾年了,但是很高興得到驚喜。

嗨默文,歡迎來到Stats.SE!自從我創建此帖子(大約一年前!)以來,Julia在時間上做了一些實質性的改進。道格拉斯·貝茨(Douglas Bates)將他的某些GLM(也許是GLMM?)代碼移植到了朱莉婭(http://dmbates.blogspot.com/2012/04/r-programmer-looks-at-julia.html),Github主頁上已經看到了很多過去一年的更新。到目前為止,我對Julia的看法(自去年以來一直在使用和關閉它)一直是一個不錯的提速工具,我將其用於某些粗略的MCMC,但尚未在我的工具鏈中取代R。迫不及待想讓R變得更快,或者Julia變得更加普及!
Doug尚未移植GLMM。如果有人想為此提供幫助,我相信他會很高興...
George N. White III
2012-04-25 05:13:46 UTC
view on stackexchange narkive permalink

R中NA的豪華並非沒有性能損失。如果Julia支持具有較小性能損失的NA,那麼這對於stats社區的一部分來說就變得很有趣,但是當將已編譯的代碼與R一起使用時,NA也要進行大量額外的工作。

R中的許多軟件包都依賴於用傳統語言(C,Fortran或C ++)編寫的例程。在某些情況下,已編譯的例程是在R之外開發的,後來用作R庫軟件包的基礎。在其他程序中,例程首先在R中實現,然後在發現缺乏性能時將關鍵段翻譯為編譯語言。如果可用於實現等效例程的Julia將會很有吸引力。有機會設計NA的低級支持,從而簡化了將R與編譯代碼一起使用時對NA的處理。

大量的R庫代表著許多用戶的努力。這是可能的,因為R提供了原本無法提供/無法承受的功能。如果茱莉亞(Julia)要被廣泛使用,它需要一群用戶,發現茱莉亞(Julia)比其他替代品要好得多,這值得提供非常基本的東西(例如,圖形,日期類,NA等)。 )(可從現有語言中獲得)。

Preston
2014-03-21 11:49:08 UTC
view on stackexchange narkive permalink

我會很先進,我沒有R的經驗,但是我和很多人一起工作,認為R是統計分析的出色工具。我的背景是數據倉庫,由於Julia的分佈很容易,但是標準的編程模型比較多,所以我認為它可以替代傳統ETL工具的轉換部分,這些工具通常做得很差,大多數無法實現。輕鬆創建標準化轉換,或重新使用已在先前數據集上執行的轉換結果。如果我想構建一個OLAP多維數據集,而該OLAP多維數據集基本上需要從已經計算出的元組中構建更詳細的元組(事實表),那麼對嚴格定義和類型化元組的支持就顯得格外重要,今天的ETL工具沒有“構建基塊”可言。可以提供幫助,該行業過去通過各種方法解決了此問題,但是需要權衡取捨。傳統的編程語言可以通過提供集中定義的轉換來提供幫助,Julia可以簡化更複雜的數據倉庫系統中常見的非標準聚合和分佈。

vasili111
2014-07-04 12:47:42 UTC
view on stackexchange narkive permalink

您也可以同時使用Julia和R。有 Julia-to-R接口。使用此軟件包,只要有需要的庫,您就可以在調用R的同時與Julia一起玩。

VitoshKa
2012-04-06 18:34:21 UTC
view on stackexchange narkive permalink

哦,是的,朱莉婭很快就會超越R。主要原因是“宏”,其中95%的語言是在Julia中實現的,並且其無噪音,簡約的語法。如果您沒有使用Lisp類型的語言的經驗,您可能還不了解它,但是您會很快看到R公式接口將如何成為過時和醜陋的機制,並被類似於CL的專用建模微語言取代循環宏。訪問對象的低級引用也是一個很大的好處。我認為R仍然沒有意識到,向用戶隱藏內部實際上不是使事情複雜化,而是簡化事情。

如我現在所見(R大量使用了R,並且剛剛閱讀了Julia手冊) ,Julia對於R的主要缺點是不支持結構繼承(這是有意的)。朱莉婭的類型系統沒有S4雄心勃勃;它也支持多重調度和多重繼承,但是有一個陷阱-只有一個級別的具體類。另一方面,我很少看到R中的類層次結構超過3個級別。

時間會證明一切,但它會比大多數R用戶想像的要早:)

您對宏提出了一個很好的觀點:幾十年後,人們仍然低估了Lisp到底有多強大。但是,正如您在第1點所暗示的那樣,該語言本質上是Matlab的替代品,而不是R的替代品。我認為您也忽略了這樣一個事實,那就是人們使用的是語言加上庫(包),而Julia甚至沒有那裡需要的1%。
-1
如果julia真正成為了MATLAB的替代者,那麼使用相同的語言進行工程和統計將有巨大的好處!重疊區域(例如時間序列)很大。
2012年:_在5年內,我們可能會看到Julia中的統計資料庫多於現在的R._庫。這沒有發生。語言設計絕不會成為採用或替代語言的標準。否則,C / C ++到現在將被炸毀,Java擺脫了笨拙的苦難,JavaScript在“計算歷史年鑑”上的“完全笨拙地嘗試語言”一文中添加了腳註。las,不。
Jimbo He
2013-05-06 16:51:32 UTC
view on stackexchange narkive permalink

Julia毫無疑問地有可能成為統計學家,讓超級用戶夢想成真,例如SAS,它的強大之處在於用C語言編寫的眾多proc-Julia可以做的就是為您提供帶有源代碼的proc,矩陣作為內置數據類型,通過SAS / iml分配。我毫不懷疑統計人員一旦掌握了這隻小狗的功能,便會蜂擁而至。

歡迎來到Stats.SE,Jimbo。我不同意你的主張。我認為我們已經了解了Julia的能力,但是目前的問題是,針對特定領域的軟件包的數量不及R中的數量。R將繼續在開源統計中佔據統治地位只要研究人員發現使用R Universe中的眾多程序包會有更多好處。至少那是我的看法。
Jamie Lawson
2017-09-19 11:34:18 UTC
view on stackexchange narkive permalink

Julia的第一個目標用例是數值問題。基本上,您可以將這些分析和計算科學領域分為數據科學(數據驅動)和模擬科學(模型驅動)。Julia正在首先處理仿真科學用例。他們還在處理數據科學案例,但速度較慢。R永遠不會對模擬科學非常有用,但是Julia將會在兩年內非常有用。

skan
2016-07-12 04:23:54 UTC
view on stackexchange narkive permalink

它需要能夠將任何功能應用於用戶無法透明地存儲在內存中的大型數據集。
其中至少包括在適合磁盤的數據集上運行混合效果模型,生存模型或MCMC但不在內存上。並儘可能在分佈在多台計算機上的數據集上。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...