จูเลียมีความหวังใด ๆ หรือไม่ที่จะติดอยู่ในชุมชนทางสถิติ?


161

ฉันเพิ่งอ่านโพสต์จาก R-บล็อกที่เชื่อมโยงกับการโพสต์บล็อกนี้จากจอห์นไมลส์สีขาวเกี่ยวกับภาษาใหม่ที่เรียกว่าจูเลีย จูเลียใช้ประโยชน์จากคอมไพเลอร์ทันเวลาที่ให้เวลาการรันที่รวดเร็วและทำให้มันมีความเร็วเท่ากันกับ C / C ++ ( ลำดับเดียวกันไม่เร็วเท่ากัน) นอกจากนี้ยังใช้กลไกการวนลูปดั้งเดิมที่พวกเราที่เริ่มเขียนโปรแกรมเกี่ยวกับภาษาดั้งเดิมคุ้นเคยกับแทนที่จะใช้คำสั่ง R และการดำเนินการเวกเตอร์

R จะไม่หายไปด้วยวิธีการใด ๆ แม้จะมีการกำหนดเวลาที่ยอดเยี่ยมเช่นนี้จากจูเลียก็ตาม มีการสนับสนุนอย่างกว้างขวางในอุตสาหกรรมและแพ็คเกจที่ยอดเยี่ยมมากมายที่จะทำอะไรก็ได้

ความสนใจของฉันคือ Bayesian ในธรรมชาติซึ่งมักจะเป็นไปไม่ได้ที่ vectorizing แน่นอนว่างานอนุกรมต้องทำโดยใช้ลูปและเกี่ยวข้องกับการคำนวณหนักในแต่ละการทำซ้ำ R อาจช้ามากในงานวนลูปอนุกรมเหล่านี้และ C / ++ ไม่ใช่การเดินในสวนเพื่อเขียน จูเลียดูเหมือนเป็นทางเลือกที่ยอดเยี่ยมสำหรับการเขียนใน C / ++ แต่มันยังอยู่ในช่วงเริ่มต้นและขาดฟังก์ชั่นมากมายที่ฉันชอบเกี่ยวกับอาร์มันน่าจะเหมาะที่จะเรียนรู้ว่าจูเลียเป็นสถิติทางคอมพิวเตอร์ จากชุมชนสถิติและผู้คนเริ่มเขียนแพ็คเกจที่เป็นประโยชน์สำหรับมัน

คำถามของฉันเป็นไปตาม:

  1. จูเลียจำเป็นต้องมีฟีเจอร์อะไรเพื่อให้มีเสน่ห์ที่ทำให้ R เป็นภาษาของสถิติอย่างแท้จริง?

  2. อะไรคือข้อดีและข้อเสียของการเรียนรู้ Julia ในการทำงานหนักเชิงคำนวณเทียบกับการเรียนรู้ภาษาระดับต่ำเช่น C / ++?


7
Julia นั้นดีกว่า Incanter ( incanter.org ) และโครงการอื่นที่คล้ายคลึงกันอย่างไร
เวย์น

24
สร้างโครงสร้างขั้นตอน (เช่นการวนซ้ำ): ฟังดูเหมือนขั้นตอนใหญ่ไปข้างหลัง เราอยู่ในจุดเปลี่ยนจากแพลตฟอร์มเดี่ยวและซีพียูเล็กไปเป็นแพลตฟอร์มคู่ขนานขนาดใหญ่ เมื่อวิวัฒนาการนี้เกิดขึ้นในอีกสิบปีข้างหน้ารูปแบบการทำงานที่ง่ายและแบบขนานโดยอัตโนมัติของการเข้ารหัสจะได้รับประโยชน์อย่างมากจากรหัสขั้นตอน ข้อพิจารณาอื่น ๆ อีกมากมายเข้ามาแทรกแซงในการเลือกแพลตฟอร์มทางสถิติของหลักสูตร แต่สิ่งนี้คุ้มค่าที่จะคำนึงถึงว่าเป็นกลยุทธ์ระยะยาว
whuber

12
คริสโตเฟอร์แนวทางที่ดีคือวางกรอบคำถามในลักษณะที่ออกแบบมาเพื่อขอเหตุผลและหลักฐาน เช่นแทนที่จะ "จูเลียมีเสน่ห์ที่จำเป็น ... " ลองทำอะไรบางอย่างเช่น "องค์ประกอบของจูเลียอาจทำให้มีโอกาสได้รับแรงฉุดและทำไม"; แทนที่จะเป็น "มันคุ้มค่ากับการเรียนรู้หรือไม่" ถาม "ทำไมจูเลียถึงได้คุ้มค่ากับการเรียนรู้ในตอนนี้? คุณสามารถปรับแต่งคำถามดังกล่าวได้โดยระบุว่าคุณใช้Julia ประเภทใดที่คุณอาจสนใจเช่นการพัฒนาซอฟต์แวร์การแก้ปัญหาแบบครั้งเดียวชีวสถิติการทำเหมืองข้อมูล ฯลฯ
whuber

1
@Wuber: ฉันขอขอบคุณข้อเสนอแนะและได้ดำเนินการตาม ขอขอบคุณ!
Christopher Aden

2
@ trolle3000 ฉันไม่คิดว่าจะมีใครอ้างว่าการทำให้เป็นคู่ขนานนั้นเป็นไปโดยอัตโนมัติ อย่างไรก็ตามเมื่อ (ถ้า) คุณได้เขียนเวอร์ชันที่ใช้งานได้ของโปรแกรมคุณได้ใช้ความพยายามอย่างมากในการขนานมันซึ่งเป็นสาเหตุที่แอปพลิเคชั่นเช่นMathematicaสามารถทำให้การขนานเป็นไปโดยอัตโนมัติได้อย่างมีประสิทธิภาพ หากคุณได้เขียนอัลกอริทึมในลักษณะที่เป็นขั้นตอนแทนที่จะยากที่จะทำให้มันขนานกันมากขึ้น
whuber

คำตอบ:


96

ฉันคิดว่าสิ่งสำคัญคือห้องสมุดจะเริ่มพัฒนาเพื่อจูเลียหรือไม่ มันเป็นเรื่องที่ดีและดีที่จะเห็นตัวอย่างของเล่น (แม้ว่าพวกเขาจะเป็นของเล่นที่มีความซับซ้อน) แสดงให้เห็นว่าจูเลียพัด R ออกจากน้ำในงานที่ R ไม่ดี

แต่ลูปที่ทำไม่ดีและอัลกอริธึมการเขียนโค้ดด้วยมือไม่ใช่สาเหตุที่หลายคนที่ฉันรู้จักที่ใช้ R use R พวกเขาใช้เพราะเกือบทุกงานทางสถิติภายใต้ดวงอาทิตย์มีคนเขียนรหัส R ไว้ R เป็นทั้งภาษาโปรแกรมและแพ็คเกจสถิติ - ปัจจุบัน Julia เป็นเพียงอดีต

ฉันคิดว่ามันเป็นไปได้ที่จะไปถึงที่นั่น แต่มีภาษาที่ได้รับการยอมรับมากขึ้น (Python) ที่ยังคงต่อสู้กับการเป็นชุดเครื่องมือทางสถิติที่ใช้งานได้


คุณเคยดูรหัสมาตรฐาน (หรือมาตรฐาน) เพื่อทราบว่าวิธีการ R นั้นเขียนไม่ดีหรือไม่? ฉันกำลังพยายามที่จะหามันเองเพื่อดูว่าภาษาต่างๆถูกนำมาใช้ ...
จอช Hemann

10
@JoshHemann ฉันได้ดูพอที่จะรู้ว่าทั่วกระดาน R คือ "ช้า - ish" มันไม่จำเป็นต้องสูญเสียทุกครั้งและในบางครั้งก็ทำให้ Python หลุดออกจากน้ำ แต่ในกรณีเหล่านั้นดูเหมือนว่าริบบิ้น "ผู้ชนะ" จะไปที่ Python หรือ R โปรแกรมเมอร์ซึ่งจริงๆแล้วสิ่งที่เขียนไว้ใน C .
Fomite

5
รหัสมาตรฐานแย่มาก การเพิ่มความเร็ว 2000x เป็นไปได้สำหรับตัวอย่าง R ดูstackoverflow.com/questions/9968578/…โดยเฉพาะความคิดเห็น
Ari B. Friedman

12
คุณพูดถูกแล้ว @gsk เช่นpisum(ที่github.com/JuliaLang/julia/blob/master/test/perf/perf.R ) ใช้เวลา 7.76 วินาทีในขณะที่การเขียนซ้ำโดยใช้ idiomatic R ( replicate(500, sum((1 / (10000:1))^2))[500]) ใช้เวลา 0.137 วินาทีมากกว่าการเร่งความเร็วห้าสิบเท่า
whuber

2
เหตุผลหนึ่งที่ R เอาออกไปคือความเข้ากันได้กับ S-PLUS ผู้คนสามารถใช้รหัสเก่าจำนวนมากได้ รหัสเก่าที่ใช้งานหนักมีข้อบกพร่องน้อยลง ด้วยสิ่งใหม่ ๆ เช่น Julia ซึ่งไม่สามารถใช้งานได้กับรหัสเก่าคุณต้องมีสถานการณ์ "แอพนักฆ่า": สิ่งที่แสดงให้เห็นถึงปัญหาทั้งหมดของการย้ายไปยังแพลตฟอร์มใหม่ คล้ายกับภาษาใหม่ของ Google Go - ลองดี แต่ทำไมฉันจะเรียนรู้
Aksakal

56

ฉันเห็นด้วยกับความคิดเห็นอื่น ๆ มากมาย "ความหวัง"? แน่ใจ ฉันคิดว่า Julia ได้เรียนรู้มากมายจากสิ่งที่ R และ Python / NumPy / Pandas และระบบอื่น ๆ ได้ทำถูกและผิดในช่วงหลายปีที่ผ่านมา ถ้าฉันฉลาดกว่าฉันและต้องการเขียนภาษาการเขียนโปรแกรมใหม่ที่จะเป็นสารตั้งต้นสำหรับสภาพแวดล้อมการพัฒนาทางสถิติในอนาคตมันจะดูเหมือนจูเลียมาก

สิ่งนี้กล่าวว่าจะใช้เวลา 5 ปีก่อนที่คำถามนี้อาจตอบได้ในแบบย้อนหลัง ณ ตอนนี้ Julia ยังขาดประเด็นสำคัญต่อไปนี้ของระบบการเขียนโปรแกรมเชิงสถิติที่สามารถแข่งขันกับ R สำหรับผู้ใช้ประจำวัน:

(รายการอัปเดตเมื่อเวลาผ่านไป ... )

  • ตัวเลือกประเภทปัจจัยสั่ง
  • การทดสอบทางสถิติและแบบจำลองทางสถิติส่วนใหญ่
  • สนับสนุนการเขียนโปรแกรม / การวิเคราะห์ที่สามารถอ่านออกเขียนได้จริง
  • คลาส R หรือคลาสพล็อต Matlab

ในการแข่งขันกับแพ็คเกจ R, Julia และโปรแกรมเสริมจะต้องมีความสะอาดเพียงพอและสมบูรณ์เพียงพอที่นักเขียนโปรแกรมที่ไม่ฉลาดเช่นนักเรียนระดับบัณฑิตศึกษาในสาขาสังคมศาสตร์สามารถใช้มันได้อย่างสมเหตุสมผล มีงานมากมายที่ต้องไปที่นั่น บางทีมันอาจจะเกิดขึ้นบางทีมันอาจจะมอดลงหรืออาจเป็นอย่างอื่น (R 3.0?) จะแทนที่มัน

ปรับปรุง:

ตอนนี้ Julia รองรับ DataFrames ที่ไม่มีข้อมูล / NAs, โมดูล / เนมสเปซ, formulaประเภทและmodel.matrixโครงสร้างพื้นฐาน, การพล็อต (sorta), การสนับสนุนฐานข้อมูล (แต่ยังไม่ถึง DataFrames) และการส่งผ่านอาร์กิวเมนต์ด้วยคีย์เวิร์ด ขณะนี้มี IDE (Julia Studio), การสนับสนุน Windows, การทดสอบทางสถิติและการสนับสนุนวันที่ / เวลา


literate programming/reproduce-able analysis support-> ดูIJulia
Piotr Migdal

1
เพิ่มเคอร์เนล iJulia สำหรับระบบนิเวศสมุดบันทึก iPython / Jupyter
thecity2

2
Julia Studio กำลังเลิกใช้แล้วและตอนนี้ Juno ก็เป็น IDE
Antony

3
2.5 ปีหลังจากคำตอบนี้ถูกโพสต์ครั้งแรกรายการที่สองในสามรายการในรายการ "must haves" ได้ถูกนำไปใช้แล้ว ฉันคิดว่านั่นเป็นหลักฐานที่ดีที่สุดที่คุณสามารถพบได้ว่าจูเลียมีสัญญาที่แท้จริง
ส่ง

5 ปีผ่านไปแล้ว พวกเราอยู่ที่นั่นหรือยัง @Harlan?
StasK

35

สำหรับฉันสิ่งหนึ่งที่สำคัญมากสำหรับภาษาการวิเคราะห์ข้อมูลคือการมีฟังก์ชันการสืบค้นพีชคณิตเชิงสัมพันธ์ที่มีค่าเริ่มต้นที่สมเหตุสมผลและการออกแบบเชิงโต้ตอบซึ่งควรเป็นภาษาในตัว IMO ไม่มีภาษา FOSS ที่ฉันใช้ทำสิ่งนี้ได้อย่างมีประสิทธิภาพไม่แม้แต่อาร์

data.frame เป็น clunky มากที่จะทำงานกับการโต้ตอบ - ตัวอย่างเช่นมันพิมพ์โครงสร้างข้อมูลทั้งหมดในการภาวนาไวยากรณ์$เป็นเรื่องยากที่จะทำงานกับโปรแกรมการสอบถามต้องมีการอ้างอิงตนเองซ้ำซ้อน (เช่นDF[DF$x < 10]) เข้าร่วมและการรวมตัวเป็นที่น่าอึดอัดใจ Data.table แก้ปัญหาความรำคาญเหล่านี้ได้ส่วนใหญ่ แต่เนื่องจากมันไม่ได้เป็นส่วนหนึ่งของการใช้งานหลักรหัส R ส่วนใหญ่จึงไม่ใช้ประโยชน์จากระบบ

นุ่นในหลามทนทุกข์จากความผิดพลาดเดียวกัน

กริปเปอร์เหล่านี้อาจดูเหมือนจะเป็นไนติงกี้ แต่ความผิดพลาดเหล่านี้สะสมและในที่สุดก็มีความสำคัญอย่างมากในการรวมเข้าด้วยกันเมื่อพวกเขาต้องเสียเวลามาก

ฉันเชื่อว่า Julia จะประสบความสำเร็จในฐานะที่เป็นสภาพแวดล้อมการวิเคราะห์ข้อมูลต้องใช้ความพยายามในการใช้ตัวดำเนินการชนิด SQL (โดยไม่ต้องมีน้ำหนักกระเป๋าของไวยากรณ์ SQL) กับผู้ใช้ที่เป็นมิตรกับตารางชนิดข้อมูล


1
+ 1 - จุดที่น่าสนใจอธิบายอย่างรอบคอบ ยินดีต้อนรับสู่ชุมชนของเรา!
whuber

4
เพื่อให้เป็นคนจู้จี้จุกจิก DataPrames ของ Pandas ขนาดใหญ่จริง ๆ แล้วไม่ได้พิมพ์เนื้อหาทั้งหมดเมื่อถูกเรียกใช้เนื่องจากเกิดขึ้นใน R พวกเขาสลับไปที่การแสดงส่วนหัวคอลัมน์พร้อมกับจำนวนโมฆะ / ไม่ใช่ค่าโมฆะ นอกจากนี้ในขณะที่ฉันเห็นด้วยกับไวยากรณ์ไม่เหมาะปัญหาการกำหนดขอบเขตทำให้ยากที่จะกำจัดการอ้างอิงตนเองสำหรับการกรองสไตล์ความเข้าใจ มันเป็น wordier แต่ก็ยังทนต่อการชนของ namespace ถ้า DataFrame มีคอลัมน์เพิ่มเติมที่ runtime คุณไม่ได้คาดหวัง
goodside

29

ฉันสามารถลงชื่อภายใต้สิ่งที่ Dirk และ EpiGrad พูด; แต่มีอีกสิ่งหนึ่งที่ทำให้ R เป็นภาษาเฉพาะในช่องของมันนั่นคือระบบการพิมพ์ข้อมูล

R's ได้รับการออกแบบมาโดยเฉพาะสำหรับการจัดการข้อมูลนั่นเป็นสาเหตุที่ทำให้เวกเตอร์เป็นศูนย์กลางและมีสิ่งต่าง ๆ เช่น data.frames, factor, NAs และคุณลักษณะ
ประเภทของ Julia อยู่บนมืออื่น ๆ ที่มุ่งเน้นประสิทธิภาพเชิงตัวเลขดังนั้นเราจึงมีสเกลาร์โหมดการจัดเก็บที่กำหนดไว้อย่างดีสหภาพและโครงสร้าง

สิ่งนี้อาจดูอ่อนโยน แต่ทุกคนที่เคยลองทำสถิติกับ MATLAB รู้ว่ามันเจ็บจริงๆ

อย่างน้อยสำหรับฉันจูเลียก็ไม่สามารถเสนออะไรที่ฉันไม่สามารถแก้ไขได้ด้วยชิ้นส่วน C สองสามบรรทัดและฆ่าความหมายที่มีประโยชน์มากมาย


4
(+1) จุดดี ความคิดเพิ่มเติม: การขาดdata.frameสิ่งอำนวยความสะดวกเหมือนใน Python ทำให้ฉันรำคาญนาน แต่ตอนนี้Pandasดูเหมือนจะแก้ไขปัญหานี้แล้ว สูตรเป็นส่วนหนึ่งของส่วนขยายสถิติของแผนรุ่น (เรารู้ว่าบางครั้งมันจะดีกว่าที่จะหลีกเลี่ยงส่วนต่อประสานสูตรใน R) มีข้อเสนอ data.frameสำหรับ Julia (ค่อนข้างเร็วเมื่อเทียบกับ Python!), (... )
chl

5
ฉันคิดว่า @mbq ยังมีประเด็นเกี่ยวกับ C. หากฉันต้องการความเร็วในลำดับเดียวกันกับ C / C ++ ... ฉันสามารถใช้ C / C ++ กับ R
Fomite

4
@EpiGrad ใช่คุณสามารถเขียน C / C ++ และอินเตอร์เฟสได้อย่างหมดจดกับ R แต่นั่นเป็นจุดอ่อนไม่ใช่จุดแข็งของภาษา ด้วย Julia ผู้ใช้จะไม่ต้องเขียน C เพื่อรับความเร็ว
Harlan

2
@Harlan เป็นเพียงจุดอ่อนถ้าคุณรู้ทั้ง Julia และ C. ฉันจะยืนยันเวลาที่ใช้ใน C <เวลาที่ใช้ในการเรียนรู้ภาษาใหม่และปรับใช้ทุกอย่างใหม่
Fomite

9
@Harlan และจะทื่อคนเหล่านั้นจะไม่ได้เขียนสิ่งที่พวกเขาในจูเลีย R เป็นแพคเกจสถิติไม่ได้เป็นภาษาการเขียนโปรแกรมเป็นกรณีการใช้งานของพวกเขา
Fomite

26

ฉันเห็นว่า Julia มาแทนที่ Matlab ซึ่งจะเป็นบริการที่ยิ่งใหญ่สำหรับมนุษยชาติ

ในการแทนที่ R คุณจะต้องพิจารณาทุกสิ่งที่ Neil G, Harlan และคนอื่น ๆ พูดถึงรวมถึงปัจจัยสำคัญอีกข้อหนึ่งที่ฉันไม่เชื่อว่าได้รับการแก้ไข: ติดตั้งแอปพลิเคชันและไลบรารีได้ง่าย

ตอนนี้คุณสามารถดาวน์โหลดไบนารีของ R สำหรับ Mac, Windows หรือ Linux มันทำงานนอกกรอบด้วยวิธีการทางสถิติที่มีให้เลือกมากมาย หากคุณต้องการดาวน์โหลดแพ็คเกจมันเป็นคำสั่งง่ายๆหรือการคลิกเมาส์ มันใช้งานได้

ฉันไปดาวน์โหลด Julia แล้วมันก็ไม่ง่าย แม้ว่าคุณจะดาวน์โหลดไบนารีคุณจะต้องติดตั้ง gfortran เพื่อรับไลบรารี่ที่เหมาะสม ฉันดาวน์โหลดที่มาและพยายามmakeและมันล้มเหลวโดยไม่มีข้อความที่เป็นประโยชน์จริงๆ ฉันมีระดับปริญญาตรีและสูงกว่าปริญญาตรีสาขาวิทยาศาสตร์คอมพิวเตอร์ดังนั้นฉันจึงสามารถไปรอบ ๆ เพื่อให้มันทำงานได้ถ้าฉันมีความโน้มเอียง (ฉันไม่ได้) โจสถิติจะทำเช่นนั้น?

R ไม่เพียง แต่มีแพ็คเกจให้เลือกมากมาย แต่ยังมีระบบที่ค่อนข้างซับซ้อนซึ่งทำให้ไบนารีของแอปพลิเคชันและแพ็คเกจเกือบทั้งหมดโดยอัตโนมัติ ถ้าด้วยเหตุผลบางอย่างคุณจำเป็นต้องรวบรวมแพ็กเกจจากแหล่งข้อมูลนั่นไม่ใช่เรื่องยากอีกต่อไป (ตราบใดที่คุณมีคอมไพเลอร์ที่เหมาะสม ฯลฯ ติดตั้งในระบบของคุณ) คุณไม่สามารถเพิกเฉยต่อโครงสร้างพื้นฐานนี้ทำทุกอย่างผ่าน GitHub และคาดว่าจะมีการนำไปใช้อย่างกว้างขวาง

แก้ไข: ฉันต้องการที่จะเล่นกับจูเลีย - มันดูน่าตื่นเต้น ปัญหาสองประการ:

1) เมื่อฉันพยายามติดตั้งแพคเกจเพิ่มเติม (ลืมสิ่งที่พวกเขาเรียกว่าใน Julia) มันล้มเหลวด้วยข้อผิดพลาดที่คลุมเครือ เห็นได้ชัดว่า Mac ของฉันไม่มีเครื่องมือที่ทำให้พวกเขาคาดหวัง ไม่เพียง แต่จะล้มเหลว แต่ยังทำให้สิ่งที่วางอยู่รอบ ๆ นั้นฉันต้องลบด้วยตนเองไม่เช่นนั้นการติดตั้งอื่น ๆ จะล้มเหลว

2) พวกมันบังคับให้เว้นวรรคในบรรทัดของโค้ด ฉันไม่มีรายละเอียดอยู่ข้างหน้าฉัน แต่มันเกี่ยวกับมาโครและไม่มีช่องว่างระหว่างมาโครกับวงเล็บที่เปิดอาร์กิวเมนต์ ข้อ จำกัด แบบนั้นทำให้ฉันเป็นแมลงจริงๆเนื่องจากฉันได้พัฒนารูปแบบรหัสของฉันในหลายปีที่ผ่านมาและภาษาและฉันได้เว้นช่องว่างระหว่างชื่อฟังก์ชัน / แมโครและวงเล็บเปิด ข้อ จำกัด การจัดรูปแบบโค้ดบางอย่างที่ฉันเข้าใจ แต่มีช่องว่างภายในบรรทัด?


5
จูเลียยังคงอยู่ในช่วงวัยเด็ก ฉันไม่ใช่นักประวัติศาสตร์ แต่ฉันพนันได้เลยว่าไบนารีที่สะอาดของ R ไม่ได้ออกมาในช่วงสองสามเดือนแรกเช่นกัน ประเด็นของคุณเกี่ยวกับระบบการกระจายสินค้าคือสิ่งที่ฉันไม่เคยเห็นมาก่อน จากนั้นอีกครั้งฉันก็จะพนันว่า CRAN ไม่งอกในเวลาเดียวกันกับอาร์ "CJAN" น่าจะเหมาะสำหรับการนำไปใช้ในวงกว้าง
Christopher Aden

7
คุณอาจจะสนใจที่จะรู้ว่า @Christopher ว่า R นั้นเป็นโคลนที่พัฒนาขึ้นมาอย่างอิสระของแพ็คเกจ (S แล้ว S-Plus) ที่ประสบความสำเร็จในเชิงพาณิชย์ (ไม่รุนแรง) และอยู่ภายใต้การพัฒนาเมื่อสิบปีก่อน นั่นทำให้มันเป็นจุดเริ่มต้นที่สำคัญที่จูเลีย (และความพยายามเช่นนั้นส่วนใหญ่) ไม่เคยมี
whuber

3
@ChristopherAden: ฉันยอมรับว่า Julia ยังเด็กอยู่ แต่ฉันจะไม่เห็นด้วยอย่างแรงว่า "" CJAN "น่าจะเหมาะสำหรับการนำไปใช้เป็นจำนวนมาก": มันเป็นความจำเป็นอย่างยิ่ง เครื่องมือเดียวที่ฉันนึกได้ว่าไม่มีโครงสร้างพื้นฐานแบบ CRAN นั้นมีความเชี่ยวชาญเป็นพิเศษ - เช่น JAGS แต่จูเลียก็เหมือนกับอาร์มีวัตถุประสงค์ทั่วไป
เวย์น

10
ภาษาโอเพ่นซอร์สวันจะแทนที่ MATLAB จะเป็นวันที่ดีที่สุดในโลกวิศวกรรม
Royi

9
"ฉันเห็นจูเลียแทนที่ Matlab ซึ่งจะเป็นบริการที่ยิ่งใหญ่สำหรับมนุษยชาติ" ฉันไม่เห็นด้วยเพิ่มเติม
davidav

24

ภาษาจูเลียนั้นค่อนข้างใหม่ ถึงเวลาในสปอตไลท์ที่สามารถวัดได้ในหลายสัปดาห์ (แม้ว่าจะสามารถวัดระยะเวลาในการพัฒนาได้เป็นปี) ตอนนี้สัปดาห์ที่ผ่านมาในสปอตไลท์เป็นสัปดาห์ที่น่าตื่นเต้นมาก --- ดูตัวอย่างการพูดคุยครั้งล่าสุดที่ Stanford ที่ "เพิ่งเริ่มต้น" --- แต่สิ่งที่คุณถามในแง่ของโครงสร้างพื้นฐานที่กว้างขึ้นและการสนับสนุนแพ็คเกจจะใช้เวลานานกว่า เป็นตัวเป็นตนขึ้น

ดังนั้นฉันจะใช้ R และคำนึงถึงทางเลือกที่กำลังพัฒนาอยู่ เมื่อปีที่แล้วผู้คนจำนวนมากต่างก็คลั่งไคล้กับ Clojure ปีนี้จูเลียเป็นรสชาติใหม่ที่กำลังมาแรง เราจะดูว่ามันเกาะติดไหม


16
เนื่องจากสิ่งที่ฉันเห็นผ่านทาง Rcpp ทำให้ฉันประทับใจ Julia มากขึ้น --- เพิ่มขึ้น 50, 60, 70 เท่าสำหรับการวนลูปอย่างง่ายเหมือนใน MCMC และอีกหลายร้อยเท่าสำหรับตัวอย่าง "degenerate" เช่น fibonacci นั้นเหมือนกับ Rcpp ได้รับ! แต่ฉันก็รู้ว่าด้วย Rcpp ฉันยังคงสามารถเข้าถึงแพ็คเกจ 3700 CRAN --- และไลบรารี C ++ ที่นับไม่ถ้วน --- ในขณะที่ Julia ตอนนี้แทบไม่มีอะไรเลย ที่กล่าวไว้สัญญาของ Julia นั้นใหญ่มาก แต่อาจจะมี "แล้ว" เช่นเดียวกับ "ตอนนี้" เวลาจะบอกเอง.
Dirk Eddelbuettel

2
และอย่าลืม Incanter ซึ่งควรจะกลายเป็นสภาพแวดล้อมทางสถิติบนพื้นฐานของ Clojure จูเลียเป็นอย่างไรเมื่อเทียบกับสิ่งนั้น?
เวย์น

2
@ เวย์นอย่าโคลนที่นี่เลย เปิดคำถามใหม่สำหรับเรื่องนั้น (อาจเป็นคำถามที่ถามเพื่อเปรียบเทียบระหว่างหลายภาษา)
naught101

2
@ naught011: ฉันเพียงแค่สะท้อนจุดของเดิร์คที่ Clojure เป็นรสชาติของเดือนแล้วตามด้วย Incanter ตอนนี้ Julia ฉันไม่คิดว่า Julia หรือ Incanter (หรือ Clojure) จะมีโอกาสเป็นแพลตฟอร์มสถิติทั่วไป
Wayne

2
ฉันไม่มีความคิด แต่ฉันยินดีอัปเดตด้าน R: ณ วันนี้มีมากกว่า 6400 แพ็คเกจใน CRAN และตอนนี้มีมากกว่า 350 รายการที่ใช้ Rcpp ยังใช้งานได้สำหรับฉัน Julia folks ดูกระตือรือร้นและมีความสุข --- และการมีตัวเลือกก็เป็นเรื่องดี ไม่มีภาษาใดภาษาหนึ่งปัญหาคือ เสียใจ, Python
Dirk Eddelbuettel

19

Bruce Tate ที่นี่ผู้แต่งเจ็ดภาษาในเจ็ดสัปดาห์ นี่คือความคิดบางอย่าง ฉันกำลังทำงานกับจูเลียสำหรับหนังสือติดตามผล ต่อไปนี้เป็นเพียงความเห็นของฉันหลังจากเล่นไปสองสามสัปดาห์

มีกองกำลังพื้นฐานสองอย่างในการเล่น ครั้งแรกทุกภาษามีอายุขัย R จะถูกแทนที่ในบางวัน เราไม่รู้ว่าเมื่อไหร่ ภาษาใหม่มีช่วงเวลาที่ยากลำบากในการพัฒนา เมื่อภาษาใหม่มีวิวัฒนาการมันมักจะแก้จุดปวดที่ท่วมท้น

สองสิ่งนี้เกี่ยวข้องกัน สำหรับฉันเรากำลังเริ่มเห็นชุดรูปแบบที่ล้อมรอบภาษาอย่างอาร์มันไม่เร็วพอและยากกว่าที่มันจะต้องเป็น ผู้ที่สามารถอาศัยอยู่ในซองจดหมายแสดงผลงานบางอย่างและอยู่ในห้องสมุดที่จัดตั้งไว้ได้ก็เป็นเรื่องปกติ ผู้ที่ไม่ต้องการมากขึ้นและพวกเขาเริ่มมองหามากขึ้น

สิ่งนี้คือสถาปัตยกรรมคอมพิวเตอร์มีการเปลี่ยนแปลงและเพื่อให้ได้ประโยชน์จากพวกเขาภาษาและโครงสร้างของมันจะต้องถูกสร้างขึ้นในลักษณะที่แน่นอน การใช้งานพร้อมกันของจูเลียนั้นน่าสนใจ มันปรับสิ่งที่เหมาะสมสำหรับภาษาเช่น: การแจกแจงที่โปร่งใสและการเคลื่อนไหวของข้อมูลระหว่างกระบวนการอย่างมีประสิทธิภาพ เมื่อฉันใช้ Julia สำหรับงานทั่วไปแผนที่และการแปลงและสิ่งที่คล้ายกันฉันแค่เรียกฟังก์ชั่น ฉันไม่ต้องกังวลเรื่องท่อประปา

สำหรับฉันแล้วความจริงที่ว่า Julia นั้นเร็วกว่าในโพรเซสเซอร์ตัวหนึ่งนั้นน่าสนใจ แต่ก็ไม่ได้สร้างความเสียหายให้อาร์มากนักสิ่งที่น่าสนใจสำหรับฉันก็คือเมื่อโปรเซสเซอร์ขึ้นอยู่กับมัลติคอร์มากขึ้นสำหรับประสิทธิภาพ เพื่อใช้ข้อได้เปรียบที่ดีที่สุดให้เป็นภาษาที่เหมาะสม

คุณสมบัติอื่น ๆ ที่จะช่วยให้เกิดขึ้นได้คือมาโคร ก้าวของภาษาเป็นเพียงรุนแรงในขณะนี้ มาโครให้คุณสร้างบล็อคที่ใหญ่และสะอาดกว่า การดูห้องสมุดน่าสนใจ แต่ไม่ได้บอกภาพรวมทั้งหมด คุณต้องดูการเติบโตของห้องสมุด เส้นทางการเคลื่อนที่ของจูเลียอยู่ที่นี่มากทีเดียว

Clojure น่าสนใจสำหรับบางคนเพราะไม่มีภาษาทางเทคนิคที่ทำในสิ่งที่ R สามารถทำได้ดังนั้นบางคนมองไปที่ภาษาที่ใช้โดยทั่วไปเพื่อเติมเต็มช่องว่างนั้น จริงๆแล้วฉันเป็นแฟนตัวยง แต่ Clojure เป็นวิปริตของสมองที่ค่อนข้างร้ายแรง Clojure จะอยู่ที่นั่นสำหรับโปรแกรมเมอร์ที่จำเป็นต้องทำการคำนวณทางเทคนิค มันจะไม่เหมาะสำหรับวิศวกรและนักวิทยาศาสตร์ มีมากเกินไปที่จะเรียนรู้

ดังนั้นสำหรับฉัน Julia หรืออะไรทำนองนี้จะแทนที่ R อย่างแน่นอนในบางวัน มันเป็นเรื่องของเวลา


มีภาษาใหม่ไม่มากนักที่มีทั้งประเภทเทมเพลตและระบบมาโครระดับล่างที่ได้รับมาอย่างกระฉับกระเฉง - จูเลียทำ ความสามารถนี้พร้อมกับคุณสมบัติและความเร็วในการทำงานพร้อมกัน (ซึ่งน่าจะปรับปรุงในรุ่นต่อไป) ให้ความสามารถในการแข่งขันที่แข็งแกร่งเมื่อเทียบกับภาษาอื่นในมุมมองของฉัน ฉันไม่ค่อยใช้ R แต่ใช้ C ++ (w / template) และ Lisp (w / macros) บ่อยๆ จูเลียสามารถทำได้ทั้งภาษาที่สะอาดและมีประสิทธิภาพในภาษาเดียวที่ชัดเจน ฉันเชื่อว่าจูเลียจะเป็นภาษาหลักในอนาคต
AsymLabs

15

ทุกครั้งที่ฉันเห็นภาษาใหม่ฉันถามตัวเองว่าทำไมภาษาที่มีอยู่ไม่สามารถปรับปรุงได้แทน

ข้อดีข้อใหญ่ของไพ ธ อนคือ

  • ชุดโมดูลจำนวนมาก (ไม่ใช่แค่สถิติ แต่รวมถึงการพล็อตไลบรารี่เอาต์พุตไปยัง pdf ฯลฯ )
  • ภาษาที่สร้างขึ้นที่คุณต้องการในระยะยาว (โครงสร้างเชิงวัตถุที่คุณต้องการในโครงการขนาดใหญ่เช่นนักตกแต่ง, การปิด, ฯลฯ ที่ทำให้การพัฒนาง่ายขึ้น)
  • บทเรียนมากมายและชุมชนการสนับสนุนที่มีขนาดใหญ่
  • เข้าถึง mapreduce หากคุณมีข้อมูลจำนวนมากที่ต้องดำเนินการและไม่รังเกียจที่จะจ่ายเงินสักสองสามเพนนีเพื่อเรียกใช้บนคลัสเตอร์

เพื่อที่จะแซง R, Julia เป็นต้น Python สามารถใช้งานได้

  • การพัฒนาการคอมไพล์แบบทันเวลาสำหรับ Python แบบ จำกัด เพื่อให้คุณมีความเร็วมากขึ้นในเครื่องเดียว (แต่ mapreduce ยังดีกว่าถ้าคุณสามารถทนต่อเวลาแฝง)
  • คลังสถิติที่สมบูรณ์ยิ่งขึ้น

3
นี่อาจเป็นเรื่องจริง แต่สำหรับผู้ใช้ที่ไม่เป็นทางการมากการออกแบบภาษาของ Python อาจใช้ยากกว่าเล็กน้อยเช่น Matlab หรือ Julia ซึ่งมีไวยากรณ์เหมือนคณิตศาสตร์มากยิ่งขึ้น คุณสามารถพูดy = 3x+2ในจูเลียและมันใช้งานได้!
ฮาร์ลาน

6
เป็นเรื่องตลก: เมื่อฉันเห็น Python เป็นครั้งแรกเมื่อ 10 ปีก่อนฉันมีปฏิกิริยาแบบเดียวกัน (ทำไมต้องเป็นเช่นนั้นทำไมไม่ลองปรับปรุงสิ่งที่อยู่ข้างนอกทำไมล่ะ? และขั้นตอนและส่วนที่เหลือทั้งหมดหรือไม่) :-)
whuber

2
@ NeilG ไม่ใช่นักสถิติมืออาชีพมากเท่ากับนักวิจัยที่ไม่ใช่โปรแกรมเมอร์โดยเฉพาะวิทยาศาสตร์ Python นั้นยอดเยี่ยมสำหรับโปรแกรมเมอร์ แต่ถ้าคุณต้องการเพียงแค่โหลดข้อมูลจิตวิทยาของคุณและทำให้บางรุ่น (เร็วขึ้น) ไวยากรณ์ที่คล้ายคณิตศาสตร์ง่าย ๆ น่าจะเหมาะกับการออกแบบที่เน้นวัตถุของ Python
Harlan

3
@NeilG โปรดจำไว้ว่าส่วนหนึ่งของความสำเร็จของ R คือมันไม่ได้ถูกใช้โดยนักสถิติเท่านั้น โดยจะใช้โดยคนที่ทำสถิติ และนักสังคมศาสตร์แพทย์และนักศึกษาปริญญาโทวิทยาศาสตร์ปีแรกนั้นเป็นผู้ใช้ที่ไม่เป็นทางการ
Fomite

6
ฉันคิดว่า (สมาชิก CrossValidated) โพสต์บล็อกของ John D Cook เป็นจุด: ฉันค่อนข้างคณิตศาสตร์โปรแกรมในภาษาวัตถุประสงค์ทั่วไปมากกว่าลองรหัสคณิตศาสตร์และปัญหาระบบในภาษาคณิตศาสตร์ หากชุมชน Julia สามารถจำสิ่งนี้ไว้ได้มีความเป็นไปได้สูงที่ภาษาจะใช้สำหรับการเขียนโปรแกรมวิเคราะห์โดยทั่วไป (สถิติเป็นเพียงส่วนหนึ่งของสิ่งนั้น) ดูjohndcook.com/blog/2012/04/02/why-scipy
Josh Hemann

9

จูเลียจะไม่เข้าครอบครอง R ในไม่ช้า ลองเปิด Microsoft R

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

นี่เป็นรุ่นปรับปรุงของ R ซึ่งจะใช้แกนประมวลผลทั้งหมดของคอมพิวเตอร์ของคุณโดยอัตโนมัติ มันเป็น R, ภาษาเดียวกัน, แพ็คเกจเดียวกัน เมื่อคุณติดตั้ง RStudio จะใช้ในคอนโซล ความเร็วของ MRO นั้นเร็วกว่า Julia ฉันใช้งานคอมพิวเตอร์จำนวนมากและใช้ Julia มานานกว่าหนึ่งปี ฉันเปลี่ยนเป็น R เมื่อเร็ว ๆ นี้เพราะ R มีการสนับสนุนที่ดีกว่าและ RStudio เป็นเครื่องมือแก้ไขที่ยอดเยี่ยม จูเลียยังอยู่ในช่วงเริ่มต้นและอาจจะไม่ตาม Python หรือ R ในไม่ช้า


8

ต่อไปนี้อาจไม่เหมาะสมที่จะเป็นคำตอบ แต่มันสำคัญเกินกว่าที่จะถูกฝังไว้เพื่อแสดงความคิดเห็นต่อการตอบสนองของคนอื่น ...

ฉันไม่เคยได้ยินเรื่องที่พูดมากเกี่ยวกับการใช้หน่วยความจำเพียงความเร็ว ความหมายทั้งหมดของ R ที่ถูกส่งผ่านตามตัวอักษรนั้นอาจจะเจ็บปวดและนี่เป็นคำวิจารณ์อย่างหนึ่งของภาษา (ซึ่งเป็นประเด็นแยกต่างหากจากจำนวนแพ็คเกจที่มีอยู่แล้ว) จัดการหน่วยความจำดีเป็นสิ่งสำคัญเช่นจะมีวิธีการจัดการกับการประมวลผลออกจากหลัก (เช่น numpy ของอาร์เรย์หน่วยความจำที่แมปหรือpytablesหรือปฏิวัติ Analytics' รูปแบบ XDF) ในขณะที่คอมไพเลอร์ JIT ของ PyPy อนุญาตให้ใช้มาตรฐาน Python ที่โดดเด่นบางอย่างการใช้หน่วยความจำอาจค่อนข้างสูง ดังนั้นใครบ้างมีประสบการณ์กับ Julia และการใช้หน่วยความจำหรือยัง ดูเหมือนว่ามีการรั่วไหลของหน่วยความจำในรุ่น "alpha" ของ Windows ซึ่งไม่ต้องสงสัยเลยว่าจะได้รับการแก้ไขและฉันยังคงรอการเข้าถึงกล่อง Linux เพื่อเล่นกับภาษาด้วยตัวเอง


เป็นจริง แต่มีวิธีการใช้ Pass-by-Reference ใน R (คลาสอ้างอิงสำหรับหนึ่งรายการ)
Ari B. Friedman

1
และ R ก็ไม่ได้ผ่านการประเมินมูลค่าอย่างเคร่งครัด การประเมินที่ขี้เกียจและการเพิ่มประสิทธิภาพที่ชาญฉลาดหมายความว่าข้อมูลมักจะไม่ถูกคัดลอกเว้นแต่จะต้องเป็นข้อมูล
Ari B. Friedman

8

ฉันคิดว่ามันไม่น่าเป็นไปได้ที่ Julia จะมาแทนที่ R ด้วยเหตุผลหลายประการที่กล่าวถึงก่อนหน้านี้ Julia เป็น Matlab แทนไม่ใช่ R แทนที่ พวกเขามีเป้าหมายที่แตกต่างกัน แม้ว่าจูเลียจะมีห้องสมุดสถิติที่เต็มไปด้วยเนื้อหนัง แต่ก็ไม่มีใครสอนชั้นอินโทรไปสู่สถิติในนั้น

อย่างไรก็ตามพื้นที่ที่น่าเหลือเชื่อคือภาษาการเขียนโปรแกรมที่ปรับความเร็วได้ซึ่งเจ็บปวดน้อยกว่า C / C ++ หากมันเชื่อมโยงกับ R (ต่อเนื่องในรูปแบบของ Rcpp) อย่างต่อเนื่องมันก็จะเห็นการใช้งานมากมายในการเขียนเซ็กเมนต์โค้ดที่มีความสำคัญต่อความเร็ว ขออภัยไม่มีลิงก์ดังกล่าวอยู่ในขณะนี้:

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


แต่ตอนนี้มีหนึ่ง: comments.gmane.org/gmane.comp.lang.julia.devel/15153 ไม่ได้ ลอง (ยัง)
kjetil b halvorsen

8

ฉันเป็นมือใหม่ของจูเลียและเป็นผู้ที่มีความสามารถ เหตุผลที่ทำให้ฉันค้นพบว่าจูเลียน่าสนใจมากในตอนนี้คือประสิทธิภาพและความเข้ากันได้

เครื่องมือ GPU ฉันต้องการใช้ CUSPARSE สำหรับแอปพลิเคชันทางสถิติ ผลการ CRANบ่งชี้ว่ายังมีอะไรไม่มากนัก จูเลียมีการผูกไว้ซึ่งดูเหมือนว่าจะทำงานได้อย่างราบรื่นจนถึงขณะนี้

using CUSPARSE
N = 1000
M = 1000
hA = sprand(N, M, .01)
hA = hA' * hA
dA = CudaSparseMatrixCSR(hA)
dC = CUSPARSE.csric02(dA, 'O') #incomplete Cholesky decomp
hC = CUSPARSE.to_host(dC)

เครื่องมือ HPC หนึ่งสามารถใช้คลัสเตอร์แบบโต้ตอบกับหลายโหนดการคำนวณ

nnodes = 2
ncores = 12    #ask for all cores on the nodes we control
procs = addprocs(SlurmManager(nnodes*ncores), partition="tesla", nodes=nnodes)
for worker in procs
    println(remotecall_fetch(readall, worker, `hostname`))
end

หลามเข้ากันได้ มีการเข้าถึงระบบนิเวศหลาม เช่นตรงไปตรงมาเพื่อหาวิธีอ่านข้อมูลการถ่ายภาพสมอง:

import PyCall
@pyimport nibabel

fp = "foo_BOLD.nii.gz"
res = nibabel.load(fp)
data = res[:get_data]();

ความเข้ากันได้ C ข้อมูลต่อไปนี้สร้างจำนวนเต็มแบบสุ่มโดยใช้ไลบรารีมาตรฐาน C

ccall( (:rand, "libc"), Int32, ())

ความเร็ว. คิดว่าฉันจะเห็นว่าแพ็คเกจ Distributions.jl นั้นเทียบกับ rnorm ของ R ได้อย่างไร - ซึ่งฉันคิดว่ามันเหมาะสมแล้ว

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))
   user  system elapsed 
  0.262   0.003   0.266 

1
@NickCox เนื่องจากมีคำตอบมากกว่าหนึ่งโหลแล้วฉันคิดว่ามันน่าสนใจที่จะเน้นมุมที่เป็นทางเลือก นอกจากนี้ผมโพสต์ร่างตั้งใจ :)
คาดเดา

1
คำถามคือทำไม Julia อาจติดอยู่ในชุมชนทางสถิติคำตอบของฉันอยู่ที่การสนับสนุนที่ดีสำหรับ hpc + gpu ซึ่งคนจำนวนมากที่ทำงานคำนวณอย่างเข้มข้นอาจพบว่าน่าสนใจ
คาดเดา

7

Julia 1.0 เพิ่งออกมาพร้อมกับ IDE (Juno) ที่ใช้งานได้ดีมาก มันออกมาช้าไปจนถึงงานปาร์ตี้เนื่องจาก Python ครองตำแหน่ง Machine Learning ไว้แล้วในขณะที่ R ยังคงครองการวิเคราะห์ทางสถิติทุกประเภท ดังที่กล่าวไปแล้ว Julia กำลังเพิ่มความโดดเด่นในด้านการเงินและอัลกอริธึมการค้าเนื่องจากต้องใช้เวลาในการพัฒนาและการดำเนินการที่รวดเร็ว ในความคิดของฉันยกเว้นว่ามีภาษาอื่นเข้ามาในภาษาที่ดีกว่าชัดเจนการที่จูเลียขึ้นสู่ความโดดเด่นอาจจะมีลักษณะเช่นนี้:

(1) เริ่มกินอาหารกลางวันของ MATLAB ผู้ใช้ MATLAB ชอบไวยากรณ์ของ MATLAB แต่ไม่ชอบสิ่งอื่นใด ความเชื่องช้า, ใบอนุญาตราคาแพง, วิธีที่ จำกัด อย่างมากในการจัดการกับโครงสร้างข้อมูลที่ซับซ้อนที่ไม่ใช่เมทริกซ์ ฉันจำคำพูดเดียวที่มีคำกล่าวไว้ว่า "ถ้า Julia มาแทนที่ MATLAB มันจะเป็นบริการที่ยิ่งใหญ่สำหรับมนุษยชาติ" ผู้ใช้ MATLAB สามารถสร้างความเชี่ยวชาญใน Julia ได้อย่างรวดเร็วและจะประทับใจกับความง่ายในการเขียนโค้ดคุณภาพที่ทำได้มากกว่า MATLAB ที่สามารถทำได้ (Structs ที่เร็วซึ่งคุณสามารถใส่ในอาร์เรย์ ไม่เพียงแค่นี้นักวิจัยสามารถสร้างกล่องเครื่องมือที่จริงจังในจูเลีย (นักเรียนปริญญาเอกกลุ่มเล็ก ๆ เขียนชุดสมการเชิงอนุพันธ์ระดับโลก) ที่จะเป็นไปไม่ได้กับ MATLAB

(2) เริ่มทำการวิจัยในวิธีการเชิงตัวเลขและการจำลอง MIT กำลังขว้างน้ำหนักของตนไว้ข้างหลัง Julia และชุมชนการวิจัยได้ฟัง MIT การจำลองเชิงตัวเลขและวิธีการเชิงตัวเลขใหม่เป็นปัญหาที่กำหนดไม่ดีที่ไม่มีไลบรารี นี่คือที่จูเลียเป็นภาษาส่อง; ถ้าไม่มีไลบรารี่อยู่มันจะง่ายกว่าในการเขียนโค้ดคุณภาพสูงในจูเลียมากกว่าภาษาอื่น ๆ มันจะเป็นภาษาเชิงตัวเลข / การจำลองที่เขียนขึ้นโดยนักคณิตศาสตร์สำหรับนักคณิตศาสตร์ (เสียงคล้ายกับ R หรือยัง)

(3) ความก้าวหน้าในการเรียนรู้ของเครื่องจักรอีกครั้งเกิดขึ้นที่ทำให้จูเลียมีความทันสมัย นี่เป็นสัญลักษณ์แทนที่ซึ่งอาจไม่เกิดขึ้น TensorFlow นั้นยอดเยี่ยม แต่มันยากมากที่จะแฮก Python เริ่มแสดงรอยร้าวและ TensorFlow เริ่มใช้ Swift (โดย Julia ได้รับการกล่าวถึงอย่างมีเกียรติ) หากการเรียนรู้ด้วยเครื่องจักรอื่นเกิดขึ้นมันจะง่ายกว่ามากในการนำไปใช้และแฮ็กในแพ็คเกจ Julia เช่น Flux.jl

(4) จูเลียเริ่มช้าถึง R ซึ่งจะใช้เวลาสักครู่ การทำสถิติใน MATLAB นั้นเจ็บปวด แต่ Juila ก้าวไปข้างหน้าของ MATLAB ด้วย Distributions.jl ความจริงก็คือเวิร์กโฟลว์ R สามารถแปลเป็น Julia ได้อย่างง่ายดาย ข้อได้เปรียบที่แท้จริงเพียงอย่างเดียว R คือความจริงที่ว่ามีแพ็คเกจจำนวนมากถูกเขียนขึ้นโดยนักสถิติสำหรับนักสถิติ อย่างไรก็ตามกระบวนการนี้ยังทำได้ง่ายในจูเลีย ข้อแตกต่างคือจูเลียนั้นรวดเร็วและคุณไม่จำเป็นต้องใช้ภาษาอื่นในการแสดง (แพ็คเกจ R ที่ "จริงจัง" นั้นเขียนด้วยภาษาเช่น C) ปัญหาเกี่ยวกับ R คือแพ็กเกจที่เขียนด้วย R ช้าเกินไปที่จะจัดการกับชุดข้อมูลขนาดใหญ่ ทางเลือกเดียวคือการแปลแพ็กเกจเป็นการพัฒนาภาษาอื่นใน R ช้ากว่าจูเลีย


2
คำพูดเกี่ยวกับการแทนที่ Matlab ที่คุณจำได้นั้นมาจากกระทู้นี้ :)
Dougal

5

ฉันสนใจด้วยคำมั่นสัญญาของความเร็วที่ดีขึ้นและการขนานที่ง่ายขึ้นโดยใช้สถาปัตยกรรมที่แตกต่างกัน ด้วยเหตุนี้ฉันจะเฝ้าดูการพัฒนาของ Julia อย่างแน่นอน แต่ฉันไม่น่าจะใช้มันจนกว่ามันจะสามารถจัดการกับโมเดลเชิงเส้นผสมทั่วไปได้แพคเกจ bootstrap ทั่วไปที่ดีภาษาจำลองง่าย ๆ สำหรับการออกแบบอาคารฝึกอบรมความสามารถเทียบเท่า ggplot2 และหลากหลาย จากอัลกอริทึมการเรียนรู้ของเครื่อง

นักสถิติไม่สามารถที่จะมีทัศนคติแบบยึดถือหลักนิยมในการเลือกเครื่องมือ เราจะใช้สิ่งที่ทำให้เราสามารถทำงานได้อย่างมีประสิทธิภาพมากที่สุด ฉันเดาว่าฉันจะติดกับ R ไม่กี่ปีที่ผ่านมา แต่ แต่มันจะดีที่จะประหลาดใจ


สวัสดี Mervyn และยินดีต้อนรับสู่ Stats.SE! จูเลียทำการปรับปรุงที่สำคัญบางอย่างในเวลาตั้งแต่ฉันสร้างโพสต์นี้ (เกือบปีที่แล้ว!) ดักลาสเบตส์รังเพลิงบางส่วนของ GLM ของเขา (อาจจะ GLMM?) รหัสจูเลียdmbates.blogspot.com/2012/04/r-programmer-looks-at-julia.html ) และหน้า Github หลักได้เห็นการปรับปรุงหลายอย่างในอดีตที่ผ่านมา ปี. การใช้งาน Julia ของฉันจนถึงตอนนี้ (ฉันใช้มันตั้งแต่และปีที่แล้ว) เป็นเครื่องมือที่ดีสำหรับความเร็วซึ่งฉันใช้สำหรับ MCMC ดิบบางอย่าง แต่มันยังไม่ได้แทนที่ R ใน toolchain ของฉันเลย ไม่สามารถรอให้ทั้ง R เร่งเร็วขึ้นหรือจูเลียจะแพร่หลายมากขึ้น!
Christopher Aden

Doug ยังไม่ได้ย้ายระบบ GLMM ถ้ามีคนต้องการความช่วยเหลือเกี่ยวกับที่ผมมั่นใจว่าเขาจะมีความสุข ...
เบน Bolker

4

ความหรูหราของ NA's ใน R ไม่ได้เกิดขึ้นหากไม่มีการลงโทษ ถ้า Julia สนับสนุน NA's ด้วยค่าปรับประสิทธิภาพที่น้อยลงมันน่าสนใจสำหรับเซ็กเมนต์ของชุมชนสถิติ แต่ NA ก็กำหนดให้มีการทำงานเพิ่มขึ้นอย่างมากเมื่อใช้รหัสที่คอมไพล์ด้วย R

แพ็กเกจจำนวนมากใน R ขึ้นอยู่กับรูทีนที่เขียนด้วยภาษาดั้งเดิม (C, Fortran หรือ C ++) ในบางกรณีรูทีนที่คอมไพล์ได้รับการพัฒนาภายนอก R และใช้เป็นพื้นฐานสำหรับแพ็กเกจไลบรารี R ในคนอื่น ๆ มีการใช้งานประจำเป็นครั้งแรกใน R จากนั้นส่วนที่สำคัญจะถูกแปลเป็นภาษาที่คอมไพล์เมื่อพบว่าประสิทธิภาพลดลง Julia จะน่าสนใจหากสามารถนำไปใช้ในการทำกิจวัตรที่เท่าเทียมกันได้มีโอกาสออกแบบการสนับสนุนระดับต่ำสำหรับ NA ในวิธีที่ทำให้การจัดการ NA ง่ายกว่าสิ่งที่เรามีตอนนี้เมื่อใช้ R กับโค้ดที่คอมไพล์

ไลบรารี R จำนวนมากแสดงถึงความพยายามของผู้ใช้หลายคน สิ่งนี้เป็นไปได้เพราะ R ให้ความสามารถที่ไม่สามารถใช้งานได้ / ราคาเหมาะสม หาก Julia ใช้กันอย่างแพร่หลายก็ต้องมีกลุ่มผู้ใช้ที่พบว่าทำสิ่งที่พวกเขาต้องการได้ดีกว่าทางเลือกอื่น ๆ ที่คุ้มค่ากับความพยายามที่จำเป็นในการจัดหาสิ่งพื้นฐานมาก ๆ (เช่นกราฟิกชั้นเรียนวันที่เป็นต้น) ) มีให้จากภาษาที่มีอยู่


4

ฉันจะอยู่ข้างหน้าฉันไม่มีประสบการณ์กับ R แต่ฉันทำงานกับผู้คนมากมายที่คิดว่ามันเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการวิเคราะห์ทางสถิติ พื้นหลังของฉันอยู่ในคลังข้อมูลและเนื่องจาก Julia's กระจายได้ง่าย แต่รูปแบบการเขียนโปรแกรมมาตรฐานมากขึ้นฉันคิดว่ามันอาจเป็นสิ่งที่น่าสนใจมากสำหรับการเปลี่ยนส่วนของเครื่องมือ ETL แบบดั้งเดิมที่โดยทั่วไปทำงานได้ไม่ดีนักส่วนใหญ่ไม่มีทาง สร้างการแปลงมาตรฐานได้อย่างง่ายดายหรือใช้ผลลัพธ์ของการแปลงที่ดำเนินการแล้วในชุดข้อมูลก่อนหน้า การสนับสนุนสำหรับ tuples ที่กำหนดและพิมพ์อย่างชัดเจนนั้นชัดเจนถ้าฉันต้องการสร้าง OLAP cube ที่จำเป็นต้องสร้าง tuples ที่มีรายละเอียดมากขึ้น (ตารางข้อเท็จจริง) จาก tuples ที่คำนวณไว้แล้วเครื่องมือ ETL ในปัจจุบันไม่มี 'building block' ที่จะพูดถึงสิ่งนั้น สามารถช่วย, อุตสาหกรรมนี้ได้แก้ไขปัญหานี้ด้วยวิธีการต่าง ๆ ในอดีต แต่มีการแลกเปลี่ยน ภาษาการเขียนโปรแกรมแบบดั้งเดิมสามารถช่วยได้ด้วยการนำเสนอการเปลี่ยนแปลงที่กำหนดจากส่วนกลางและ Julia อาจลดความซับซ้อนของการรวมและการกระจายที่ไม่ได้มาตรฐานในระบบคลังข้อมูลที่ซับซ้อนมากขึ้น


3

คุณสามารถใช้ Julia และ R ด้วยกันได้ มีอินเตอร์เฟซจูเลียไป-R ด้วยแพ็คเกจนี้คุณสามารถเล่นกับ Julia ได้ในขณะที่เรียก R เมื่อใดก็ตามที่มีไลบรารี่ที่จำเป็น


2

จูเลียไม่ต้องสงสัยเลยว่าทุกครั้งที่มีโอกาสกลายเป็นสถิติผู้ใช้ที่ใฝ่ฝันจะเป็นจริงพา SAS ตัวอย่างเช่นมันมีพลังอยู่ใน procs จำนวนมากที่เขียนใน C - สิ่งที่จูเลียสามารถทำได้คือให้ procs กับซอร์สโค้ด การแจกจ่ายชนิดข้อมูลในตัวด้วย SAS / iml ฉันไม่สงสัยเลยว่านักสถิติจะแห่กันไปที่จูเลียเมื่อพวกเขาได้รับการจัดการกับสิ่งที่ลูกสุนัขตัวนี้สามารถทำได้


1
ยินดีต้อนรับสู่ Stats.SE, Jimbo ฉันไม่เห็นด้วยกับการยืนยันของคุณ ฉันคิดว่าเราเห็นว่า Julia สามารถทำอะไรได้บ้าง แต่ปัญหา ณ จุดนี้ก็คือมีแพ็คเกจโดเมนเฉพาะไม่มากเท่าที่มีในอาร์อาร์ R จะยังคงครองสถิติสูงสุดของโอเพ่นซอร์สต่อไป ตราบใดที่นักวิจัยเห็นประโยชน์มากขึ้นในการใช้แพ็คเกจจำนวนมากในจักรวาล R อย่างน้อยก็เป็นของฉัน
Christopher Aden

2

โอ้ใช่แล้วจูเลียจะแซงอาร์ได้อย่างรวดเร็ว และเหตุผลหลักจะเป็น "มาโคร" 95% ของภาษาถูกนำไปใช้ในจูเลียและไม่มีเสียงรบกวน หากคุณยังไม่มีประสบการณ์เกี่ยวกับภาษาแบบ lisp คุณอาจยังไม่เข้าใจ แต่คุณจะเห็นได้อย่างรวดเร็วว่าอินเตอร์เฟสสูตร R จะกลายเป็นกลไกที่ล้าสมัยและน่าเกลียดและจะถูกแทนที่ด้วยภาษาจำลองขนาดเล็กคล้ายกับ CL มาโครวนรอบ การเข้าถึงการอ้างอิงระดับต่ำของวัตถุก็เป็นข้อดีเช่นกัน ฉันคิดว่า R ยังไม่ได้รับการซ่อน internals จากผู้ใช้จริงซับซ้อนกว่าทำให้สิ่งต่าง ๆ ง่ายขึ้น

อย่างที่ฉันเห็นตอนนี้ (มีการใช้ R เป็นจำนวนมากเป็นเวลาหลายปีและเพิ่งอ่านคู่มือจูเลียเสร็จสิ้น) ข้อเสียเปรียบหลักของจูเลียที่เกี่ยวกับ R นั้นไม่ได้รับการสนับสนุนสำหรับการสืบทอดทางโครงสร้าง ระบบประเภทของ Julia มีความทะเยอทะยานน้อยกว่า S4; มันยังรองรับการแจกจ่ายหลายครั้งและการสืบทอดหลายรายการ แต่ด้วยการจับ - มีคลาสคอนกรีตเพียงระดับเดียวเท่านั้น ในทางกลับกันฉันไม่ค่อยเห็นลำดับชั้นของชั้นเรียนใน R ที่ลึกกว่า 3 ระดับ

เวลาจะบอก แต่จะเร็วกว่าที่ผู้ใช้ R ส่วนใหญ่คิด :)


2
คุณสร้างจุดที่ดีเกี่ยวกับมาโคร: หลายสิบคนต่อมายังคงดูถูกดูแคลนว่า Lisp ทรงพลังจริงๆ อย่างไรก็ตามตามที่คุณพูดถึงในข้อที่ 1 ภาษานี้เป็นหลักในการแทนที่ Matlab ไม่ใช่การแทนที่ R ฉันคิดว่าคุณเพิกเฉยต่อความจริงที่ว่ามันเป็นภาษารวมถึงห้องสมุด (แพ็คเกจ) ที่ผู้คนใช้และจูเลียไม่มีแม้แต่ 1% ของสิ่งที่ต้องการมี
Wayne

2
@ เวย์นฉันไม่สนใจอะไรเลย OP เป็นเรื่องเกี่ยวกับอนาคตและไม่เกี่ยวกับสิ่งที่เป็นอยู่ในตอนนี้ ใน 5 ปีเราอาจเห็นไลบรารี่มากมายสำหรับสถิติในจูเลียมากกว่าตอนนี้สำหรับอาร์และนี่ก็เพราะจูเลียมีโอกาสดีที่จะเป็นภาษาที่ดีกว่ามาก
VitoshKa

หากจูเลียเปลี่ยนเป็น MATLAB จริง ๆ แล้วมันจะมีประโยชน์อย่างมากในการใช้ภาษาเดียวกันสำหรับวิศวกรรมและสถิติ! พื้นที่ที่ทับซ้อนกัน (เช่นอนุกรมเวลา) มีขนาดใหญ่มาก
kjetil b halvorsen

1

กรณีการใช้เป้าหมายแรกของ Julia นั้นเป็นปัญหาเชิงตัวเลข โดยพื้นฐานแล้วคุณสามารถแบ่งการวิเคราะห์และวิทยาศาสตร์การคำนวณเหล่านี้เป็นศาสตร์ข้อมูล (ขับเคลื่อนด้วยข้อมูล) และวิทยาศาสตร์จำลอง (ขับเคลื่อนด้วยแบบจำลอง) Julia กำลังจัดการกับกรณีการใช้วิทยาศาสตร์จำลองก่อน พวกเขายังจัดการกับกรณีศาสตร์ข้อมูล แต่ช้ากว่า R จะไม่มีประโยชน์อย่างมากสำหรับวิทยาศาสตร์การจำลอง แต่จูเลียจะมีประโยชน์มากสำหรับทั้งสองในสองสามปี


0

จะต้องสามารถใช้ฟังก์ชันใด ๆ กับชุดข้อมูลขนาดใหญ่ที่ไม่พอดีกับหน่วยความจำที่โปร่งใสสำหรับผู้ใช้
นั่นรวมถึงการใช้งานเอ็ฟเฟ็กต์แบบผสมอย่างน้อยรุ่นเอาชีวิตรอดหรือ MCMC ในชุดข้อมูลที่พอดีกับดิสก์ แต่ไม่ได้อยู่ในหน่วยความจำ และถ้าเป็นไปได้ในชุดข้อมูลที่กระจายในคอมพิวเตอร์หลายเครื่อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.