โครงการโอเพ่นซอร์สการวิเคราะห์เชิงสถิติที่มีค่าคืออะไร?


69

โครงการโอเพ่นซอร์สการวิเคราะห์เชิงสถิติที่มีคุณค่าในปัจจุบันมีอะไรบ้าง

แก้ไข: ตามที่ชาร์ปชี้ให้เห็นว่ามีค่าอาจหมายถึงการช่วยให้คุณทำสิ่งต่าง ๆ ได้เร็วขึ้นหรือถูกลง


5
อาจเป็นเด็กโปสเตอร์สำหรับการโต้แย้งและเป็นอัตนัย อย่างน้อยต้องกำหนด 'มีค่า'
Sharpie

2
บางทีการโฟกัสไม่ควรอยู่ที่ "มีค่า" แต่เป็น "ข้อดี" และ "ข้อเสีย" ของแต่ละโครงการใช่ไหม
สิงโต

หรือบางทีแม้แต่ "วิธี X จะช่วยให้คุณทำ Y ให้เร็วขึ้น / ถูกลงและฆ่าเชื้อโรคที่ทำให้เกิดกลิ่นปาก"
Sharpie

คำตอบ:


88

โครงการ R

http://www.r-project.org/

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


ใช่ R เป็นคนดี - แต่ทำไม 'มีค่า'
Sharpie

11
มันเป็นผู้ใหญ่ได้รับการสนับสนุนเป็นอย่างดีและเป็นมาตรฐานในชุมชนวิทยาศาสตร์บางแห่ง (เช่นแผนก AI ของเรา)
Menno

10
มันสามารถขยายได้และไม่มีเทคนิคทางสถิติที่ไม่สามารถทำได้
aL3xa

20

สำหรับการทำภารกิจ MCMC ที่หลากหลายใน Python นั้นมีPyMCซึ่งฉันใช้ไปค่อนข้างน้อย ฉันไม่ได้ทำงานในสิ่งที่ฉันสามารถทำได้ใน BUGS ที่ฉันไม่สามารถทำได้ใน PyMC และวิธีที่คุณระบุรุ่นและนำข้อมูลเข้ามาดูเหมือนจะง่ายกว่าสำหรับฉันมาก


18

นี้อาจได้รับ downvoted จะให้อภัย แต่ฉันมีความสุขใช้โคลน Matlab คู่เป็นเวลาหลายปี มีห้องสมุดที่ดีเป็นธรรมในการปลอมคู่สำหรับคนรุ่นของตัวแปรสุ่มจากการแจกแจงที่แตกต่างกัน, การทดสอบทางสถิติ ฯลฯ มี แต่เห็นได้ชัดว่ามันเป็นคนแคระอาร์ข้อดีอย่างหนึ่งที่เป็นไปได้มากกว่า R คือว่า Matlab / คู่เป็นภาษากลางในหมู่นักวิเคราะห์เชิงตัวเลขการเพิ่มประสิทธิภาพของนักวิจัย และบางส่วนของนักคณิตศาสตร์ประยุกต์ (อย่างน้อยตอนที่ฉันอยู่ในโรงเรียน) ในขณะที่ไม่มีใครในแผนกของฉันความรู้ของฉันใช้อาร์สูญเสียของฉัน เรียนรู้ทั้งสองอย่างถ้าเป็นไปได้!


4
ความคิดเห็นที่แท้จริง แต่ในฐานะโปรแกรมเมอร์ที่มีประสบการณ์ฉันรู้สึกสกปรกทุกครั้งที่ใช้ Matlab / Octave ซึ่งเป็นภาษาที่ได้รับการออกแบบมาอย่างน่ากลัว แน่นอนฉันยังประจบประแจงที่ SAS ซึ่งได้รับการออกแบบมาอย่างชัดเจนสำหรับบัตรเจาะ
Wayne

1
@ เวย์เน่พอจริง ฉันจำได้ว่าครั้งหนึ่งที่ได้ยิน Bob Harper อ้างถึงภาษา Matlab ว่า 'semantically suspect';) เช่นเดียวกับหลาย ๆ ภาษาเมื่อคุณใช้มันมากพอคุณจะเรียนรู้ที่จะรับมือกับสิ่งแปลกประหลาด
shabbychef

17

โครงการสองโครงการที่อยู่ในใจ:

  1. ข้อบกพร่อง - รับ (บางส่วน) ความเจ็บปวดจากสถิติของเบย์ ช่วยให้ผู้ใช้สามารถมุ่งเน้นที่โมเดลมากขึ้นและใช้ MCMC น้อยลง
  2. Bioconductor - อาจเป็นเครื่องมือทางสถิติที่ได้รับความนิยมมากที่สุดในด้านชีวสารสนเทศศาสตร์ ฉันรู้ว่ามันเป็นที่เก็บ R แต่มีคนจำนวนมากที่ต้องการเรียนรู้ R เพียงเพื่อ Bioconductor จำนวนแพคเกจสำหรับการวิเคราะห์คมตัดทำให้ไม่เป็นสองรองใคร

1
Andrew Gelman มีห้องสมุด R ที่ดีที่เชื่อมโยง Bugs กับ R.
bshor

4
ฉันขอใช้ถ้อยคำใหม่ว่า "เครื่องมือทางสถิติที่ได้รับความนิยมมากที่สุดในด้านชีวสารสนเทศ" ... Bioinformaticians ที่ทำการวิเคราะห์แบบ microarray ใช้อย่างกว้างขวางใช่ แต่ชีวสารสนเทศไม่ได้ จำกัด อยู่เพียงแค่นั้น)
Nicojo

15

Wekaสำหรับ data mining - มีอัลกอริธึมการจัดหมวดหมู่และการจัดกลุ่มจำนวนมากใน Java


ประสิทธิภาพของสิ่งนี้เป็นอย่างไร (ฉันกรีดร้องเมื่อใดก็ตามที่ฉันเห็นคำว่า 'Java' ... )
shabbychef

@ shabbychef ดูเหมือนจะค่อนข้างดีจากสิ่งที่ฉันเคยได้ยิน แต่โดยทั่วไป Weka ถูกใช้เป็นขั้นตอนแรกในการทดสอบอัลกอริธึมต่างๆและดูประสิทธิภาพของชุดข้อมูลที่กำหนด (หรือเซตย่อยของมัน) จากนั้นหนึ่ง recode ส่วนหนึ่งของโปรแกรมหลัก ปรับประสิทธิภาพให้เหมาะสม (เช่นการเรียกใช้ข้อมูลมิติสูงสำหรับการตรวจสอบข้ามหรือการบูต) ใน C หรือ Python
chl

2
@shabbychef: โปรแกรม Java ไม่จำเป็นต้องเป็นสัตว์ประหลาดที่ช้า ฉันยอมรับว่ารหัส C ที่เขียนดีจะเร็วกว่าการใช้งานที่คล้ายกันใน Java แต่โค้ด Java ที่เขียนดีมักจะไม่ช้ามาก รวมทั้งการพัฒนาใน Java มีข้อได้เปรียบที่สำคัญมากมาย
posdef


14

Incanterเป็นแพลตฟอร์มที่คล้ายกับ Clojure R (สภาพแวดล้อม + ไลบรารี) สำหรับการคำนวณเชิงสถิติและกราฟิก


อีกครั้ง - ทำไม ฉันจะโน้มน้าวเจ้านายของฉันให้ใช้สิ่งนี้ได้อย่างไรพูด Excel
Sharpie

4
หากการย้ายจาก Excel เป็นปัญหาคุณสามารถลอง: * coventry.ac.uk/ec/~nhunt/pottel.pdf * Forecastingprinciples.com/files/McCullough.pdf * lomont.org/Math/Papers/2007/Excel2007/ Excel2007Bug.pdf * csdassn.org/software_reports/gnumeric.pdf
James


14

นอกจากนี้ยังมีโครงการที่ริเริ่มโดย FSF หรือแจกจ่ายต่อภายใต้สัญญาอนุญาตสาธารณะทั่วไปของกนูเช่น:

  • PSPPซึ่งมีวัตถุประสงค์เพื่อเป็นทางเลือกฟรีของ SPSS
  • GRETLส่วนใหญ่อุทิศให้กับการถดถอยและเศรษฐมิติ

มีแม้แต่แอพพลิเคชั่นที่เปิดตัวในฐานะซอฟต์แวร์ตัวช่วยสำหรับตำราเรียนเช่นJMulTiแต่ก็ยังมีคนใช้งานอยู่ไม่กี่คน

ฉันยังคงเล่นกับxlispstat เป็นครั้งคราวแม้ว่า Lisp จะถูกแทนที่โดย R (ดูภาพรวมของ Jan de Leeuw เกี่ยวกับLisp vs. Rในสมุดรายวันของซอฟต์แวร์ทางสถิติ ) ที่น่าสนใจซึ่งเป็นหนึ่งในผู้ร่วมก่อตั้งของภาษาการ R, รอสส์อิฮากะที่ถกเถียงกันอยู่ในทางตรงกันข้ามว่าอนาคตของซอฟต์แวร์ทางสถิติคือ ... เสียงกระเพื่อม: กลับไปสู่อนาคต: เสียงกระเพื่อมเป็นฐานสำหรับระบบคอมพิวเตอร์ทางสถิติ @Alex ชี้ไปที่สภาพแวดล้อมทางสถิติตาม Clojure Incanterดังนั้นบางทีเราจะเห็นการฟื้นตัวของซอฟต์แวร์ที่ใช้ Lisp ในอนาคตอันใกล้ :-)



9

ก่อนอื่นให้ฉันบอกคุณว่าในความคิดของฉันเครื่องมือที่ดีที่สุดของทั้งหมดคือ R ซึ่งมีไลบรารีและยูทิลิตี้มากมายฉันจะไม่ระบุที่นี่

ฉันขอขยายการสนทนาเกี่ยวกับ weka

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

library(RWeka)
iris <- read.arff(system.file("arff", "iris.arff", package = "RWeka"))
classifier <- IBk(class ~., data = iris)
summary(classifier)

นอกจากนี้ยังมีห้องสมุดหลามหลายแห่งสำหรับการทำเช่นนี้ (หลามเป็นเรื่องง่ายมากที่จะเรียนรู้)

ก่อนอื่นให้ฉันระบุแพคเกจที่คุณสามารถใช้ได้ฉันจะไม่ลงรายละเอียดเกี่ยวกับพวกเขา Weka (ใช่แล้วคุณมีไลบรารี่สำหรับไพ ธ อน), NLKT (แพ็คเกจโอเพ่นซอร์สที่โด่งดังที่สุดสำหรับการส่งข้อความนอกเหนือจากการจัดหมวดหมู่ข้อมูล), statPy , sickitsและ scipy

นอกจากนี้ยังมีสีส้มซึ่งเป็นเลิศ (ฉันจะพูดถึงมันในภายหลัง) นี่คือตัวอย่างรหัสสำหรับทำต้นไม้จากข้อมูลในตาราง cmpart1 ที่ยังทำการตรวจสอบ 10 เท่าคุณยังสามารถกราฟต้นไม้

import orange, orngMySQL, orngTree

data = orange.ExampleTable("c:\\python26\\orange\\cmpart1.tab")

domain=data.domain
n=10
buck=len(data)/n
l2=[]
for i in range(n):
    tmp=[]
    if i==n-1:
        tmp=data[n*buck:]
    else:
        tmp=data[buck*i:buck*(i+1)]
    l2.append(tmp)

train=[]
test=[]
di={'yy':0,'yn':0,'ny':0,'nn':0}
for i in range(n):
    train=[]
    test=[]
    for j in range(n):
        if j==i:
            test=l2[i]
        else:
            train.extend(l2[j])
    print "-----"
    trai=orange.Example(domain, train)
    tree = orngTree.TreeLearner(train)
    for ins in test:
        d1= ins.getclass()
        d2=tree(ins)
        print d1
        print d2
        ind=str(d1)+str(d2)
        di[ind]=di[ind]+1
print di

เพื่อจบด้วยแพ็คเกจอื่น ๆ ที่ฉันใช้และพบว่าน่าสนใจ

Orange : การสร้างภาพข้อมูลและการวิเคราะห์สำหรับมือใหม่และผู้เชี่ยวชาญ การขุดข้อมูลผ่านการเขียนโปรแกรมด้วยภาพหรือการเขียนสคริปต์ Python ส่วนประกอบสำหรับการเรียนรู้ของเครื่อง ส่วนขยายสำหรับชีวสารสนเทศและการทำเหมืองข้อความ (โดยส่วนตัวแล้วฉันแนะนำสิ่งนี้ฉันใช้มันมากในการรวมกันในหลามและมันก็ยอดเยี่ยม) ฉันสามารถส่งรหัสหลามให้คุณถ้าคุณต้องการให้ฉัน

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

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

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

Openstats : รวมถึงสถิติและการวัดเบื้องต้น, สถิติเชิงพรรณนา, การเปรียบเทียบอย่างง่าย, การวิเคราะห์ความแปรปรวน, สหสัมพันธ์, การถดถอยหลายครั้ง, อนุกรมเวลาขัดจังหวะ, สถิติหลายตัวแปร, สถิติที่ไม่ใช่พารามิเตอร์, การวัด, การควบคุมกระบวนการทางสถิติ, กระบวนการทางการเงิน


8

โคลินกิลเลสกล่าวถึงข้อบกพร่อง แต่ตัวเลือกที่ดีสำหรับการสุ่มตัวอย่างกิ๊บส์ ฯลฯ เป็นJAGS

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

ปล่อยให้ไกลออกไปเล็กน้อยเพื่อค้นพบสิ่งที่ฉันเพิ่งค้นพบและเพิ่งเริ่มเรียนรู้ ...

ADMB (AD Model Builder) ซึ่งทำโมเดลที่ไม่ใช่เชิงเส้นโดยอิงตามไลบรารี AUTODIF ด้วย MCMC และคุณสมบัติอื่น ๆ อีกสองสามตัวซึ่งจะประมวลผลและคอมไพล์โมเดลลงไปที่ปฏิบัติการ C ++ และคอมไพล์มันเป็นแอพแบบสแตนด์อโลน น่าจะเป็นวิธีที่เร็วกว่าแบบจำลองที่เทียบเท่าใน R, MATLAB และอื่น ๆโครงการ ADMB

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

ถ้าคุณต้องการทำงานกับ Bayesian Networks ใน GUI: SamIamเป็นเครื่องมือที่ดี R มีแพ็คเกจสองสามชุดที่ทำเช่นนี้ แต่ SamIam นั้นดีมาก


7

GSLสำหรับผู้ที่ต้องการเขียนโปรแกรมใน C / C ++ เป็นทรัพยากรที่มีค่าเนื่องจากมีการทำกิจวัตรประจำวันสำหรับเครื่องกำเนิดไฟฟ้าแบบสุ่มพีชคณิตเชิงเส้นและอื่น ๆ ในขณะที่ GSL พร้อมใช้งานบน Linux เป็นหลักนอกจากนี้ยังมีพอร์ตสำหรับ Windows (ดู: http://gladman.plushost.co.uk/oldsite/computing/gnu_scientific_library.phpและhttp://david.geldreich.free.fr/dev.html )


7

ฉันสนุกกับการทำงานกับRooFitสำหรับการปรับสัญญาณและพื้นหลังอย่างเหมาะสมและTMVAสำหรับการวิเคราะห์องค์ประกอบหลักอย่างรวดเร็วและการสร้างแบบจำลองของปัญหาหลายตัวแปรด้วยเครื่องมือมาตรฐานบางอย่าง (เช่นอัลกอริทึมทางพันธุกรรมและเครือข่ายประสาทเทียม) พวกเขาทั้งสองเป็นส่วนหนึ่งของห้องสมุดROOT C ++ ซึ่งมีอคติค่อนข้างหนักต่อปัญหาฟิสิกส์ของอนุภาค


7

เพิ่มเติมจากที่กล่าวถึงแล้ว:

  • KNIMEร่วมกับส่วนขยายการรวม R, Python และ Weka สำหรับการขุดข้อมูล
  • Mondrianสำหรับ EDA ที่รวดเร็ว

และจากมุมมองเชิงพื้นที่:

  • GeoDaสำหรับ EDA เชิงพื้นที่และการจัดกลุ่มของข้อมูล areal
  • SaTScanสำหรับการรวมกลุ่มของข้อมูลจุด

3
ในฐานะที่เป็นโน้ต GeoDa และ SatScan ไม่ใช่โอเพ่นซอร์สพวกเขาเป็นฟรีแวร์ (ไม่ใช่ว่ามันสร้างความแตกต่างอย่างมากสำหรับฉัน!)
Andy W

1
pySal โดย GeoDa Center เป็นโอเพนซอร์ส (ดูด้านล่าง)
b_dev

6

ฉันสองที่เจ เหตุใด R จึงมีค่า นี่คือรายการสั้น ๆ ของเหตุผล http://www.inside-r.org/why-use-r ยังตรวจสอบggplot2 - แพคเกจกราฟิกที่ดีมากสำหรับอาร์บางบทเรียนที่ดีที่นี่


9
ถามคำถามที่นี่ทำไม ทั้งหมดเป็น community-wiki ทำไมไม่เพียง แต่แก้ไขคำตอบที่ยอมรับได้?
Jay Stevens

4

สิ่งนี้ตรงกับขอบเขตด้านนอกของ 'การวิเคราะห์เชิงสถิติ' แต่Eureqaเป็นโปรแกรมที่เป็นมิตรกับผู้ใช้มากสำหรับความสัมพันธ์ที่ไม่เป็นเชิงเส้นของการขุดข้อมูลในข้อมูลผ่านการโปรแกรมเชิงพันธุกรรม Eureqa ไม่ได้เป็นวัตถุประสงค์ทั่วไป แต่ทำในสิ่งที่ทำได้ค่อนข้างดีและ GUI นั้นค่อนข้างใช้งานง่าย นอกจากนี้ยังสามารถใช้ประโยชน์จากพลังการประมวลผลที่มีอยู่ผ่านเซิร์ฟเวอร์ eureqa


3

Meta.Numericsเป็น. NET library ที่สนับสนุนการวิเคราะห์ทางสถิติได้ดี

ต่างจาก R (โคลน S) และ Octave (โคลน Matlab) แต่ไม่มี "front end" มันเป็นเหมือน GSL ซึ่งเป็นห้องสมุดที่คุณลิงค์ไปเมื่อคุณเขียนแอปพลิเคชันของคุณเองที่ต้องทำการวิเคราะห์ทางสถิติ C # และ Visual Basic เป็นภาษาการเขียนโปรแกรมทั่วไปมากกว่า C / C ++ สำหรับแอปสายธุรกิจและ Meta.Numerics มีการสนับสนุนอย่างกว้างขวางมากขึ้นสำหรับการสร้างและทดสอบทางสถิติกว่า GSL


3
  • clusterPyสำหรับการวิเคราะห์ภูมิภาคหรือการจัดกลุ่มเชิงพื้นที่
  • PySalสำหรับการวิเคราะห์ข้อมูลเชิงพื้นที่

3

ซอฟต์แวร์คณิตศาสตร์เชิงสัญลักษณ์สามารถรองรับสถิติได้เป็นอย่างดี นี่คือ GPL บางส่วนที่ฉันใช้เป็นครั้งคราว:

  1. sympyเป็นงูใหญ่และมีขนาดเล็กมาก แต่ก็ยังสามารถทำอะไรได้มากมาย: อนุพันธ์อินทิกรัลผลบวกเชิงสัญลักษณ์คอมบิเนติกส์การขยายอนุกรมการจัดการเทนเซอร์ ฯลฯ มีแพ็คเกจ R ที่เรียกจากอาร์
  2. ปราชญ์เป็นงูใหญ่และขนาดใหญ่! ถ้า sympy ไม่สามารถทำสิ่งที่คุณต้องการลอง sage (แต่ไม่มีรุ่น windows ดั้งเดิม)
  3. maximaเป็นฐานเสียงกระเพื่อมและคลาสสิคมากขนาดกลางระหว่าง (1) และ (2)

ทั้งสามอยู่ในการพัฒนาที่ใช้งานอยู่

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