Ruby jako stół roboczy statystyk

13

To pytanie dotyczy również Pythona jako stołu roboczego statystyk i przoduje jako stół roboczy statystyk . Wiem, że istnieje ogromna dyskusja na temat Ruby kontra Python, ale nie o to chodzi w tym pytaniu. Pomyślałem, że Ruby jest szybszy od Pythona i ma bardzo naturalną składnię, co może pomóc mi zrozumieć statystyki i może być dobrą alternatywą dla R (co jest również moim zainteresowaniem i zostało cytowane w moim drugim pytaniu dotyczącym R tutaj). Na przykład na jednym z wykładów Google Tech, które widziałem (cytowany tutaj w powiązanym pytaniu, instruktor skarży się, że R jest wolny podczas tworzenia pętli for). Z Ruby jest także Rails, więc być może istniałaby również możliwość połączenia ich obu (Python ma Django, ale znowu nie wchodzę w to).

Pytanie brzmi tak samo, ale dla mojego zainteresowania Ruby:

  • Co możesz polecić, gdybym chciał użyć Ruby jako „stołu roboczego statystyk” zamiast R, SPSS, Python, Excel itp.?

  • Co chciałbym zyskać i stracić na podstawie twojego doświadczenia?

Uwaga: rozważam to pytanie w oparciu o poprzednie pytanie w Pythonie i Excelu. Jeśli uważasz, że użycie Ruby i Python (lub Excel) miałoby taki sam wpływ, to powiedz tak i wskaż argumenty dowolnego poprzedniego pytania, celem tego pytania nie jest powtórzenie poprzednich pytań dla tych samych odpowiedzi. Uważam jednak, że istnieją różnice (takie jak szybkość języka i składnia), ale szczególnie chciałbym poznać zalecenia dla Ruby lub jeśli jest na przykład znacznie mniej dostępne dla niego niż powiedzieć dla Python lub Excel. Proszę więc wziąć pod uwagę poprzednie odpowiedzi na te bardzo podobne pytania, ale w innym języku / programie.

Edycja: Tylko dla podkreślenia, ponieważ odpowiedzi wydają się iść w drugą stronę, odpowiedź, której szukałem, jest taka, jak wybrana odpowiedź na pytanie w Pythonie, z którym się łączyłem. To nie o nauce statystyki razem z Ruby. Zrobiłem punkt na pytanie, dowiedzieć się statystyki z badań . Jeśli to możliwe, świetnie, ale nie oczekuję, że będę uczył się statystyki z Ruby w tym samym czasie. Możesz założyć tło statystyczne dla tego pytania.

Oeufcoque Penteano
źródło
dzięki za edycję! Zauważyłem, że moje podziękowania zostały usunięte. Czy to zły pomysł, aby podziękować za pytania? (Chciałbym tylko potwierdzić, nie ma problemu z mojej strony - skomentuj trochę temat na pytanie, ale nie chciałem zaczynać pytania na temat meta tylko z tego powodu).
Oeufcoque Penteano
1
Opinie różnią się nieco. Krótkie „Dziękuję” na końcu pytania jest powszechne, ale więcej niż zwykle uważa się za niepotrzebne rozproszenie uwagi. Wskazówki można szybko znaleźć w witrynie meta-site, na przykład na stronie SE FAQ .
whuber

Odpowiedzi:

9

Używam Ruby + R.

Możesz przeczytać artykuł: RinRuby: Accessing the R Interpreter from Pure Ruby

http://www.jstatsoft.org/v29/i04/paper

i ten blog:

http://rubyforscientificresearch.blogspot.com

http://sciruby.com/

(autor sciruby jest również użytkownikiem R.)

ouyang
źródło
Dziękuję, twoja odpowiedź idzie w kierunku tego, czego szukam. Zauważyłem, że referencje pochodzą z 2009 i 2011 roku. Zastanawiam się, czy dostępna jest nowsza literatura na temat tego, że dany rubin jest znaczącym nowym językiem i stale rośnie? Myślę jednak, że to dobry punkt wyjścia. Fajnie, że blog uważa rubin za badania naukowe, co dokładnie w moim przypadku.
Oeufcoque Penteano
Cześć, uwielbiam rubin i szyny. Też kocham R. Możesz znaleźć rubygemy Zwiększaj się coraz bardziej. rubygems.org/stats R też też. 2003, R cran ma 200, a teraz 3600+ !!! w 2011 r. klejnot rubinowy ma wartość 28000, teraz klejnot 36874! Możesz cieszyć się Ruby + R: D
ouyang
Świetna uwaga na rubinowych klejnotach, zapomniałam o nich. Być może inni ludzie mogą zasugerować kilka rubinowych klejnotów w kwestii korzystania z Ruby jako stołu roboczego, które są dobrze znane i solidne? Dziękujemy za dodanie odpowiedzi na to, czego ponownie szukam.
Oeufcoque Penteano
4

ODPOWIEDŹ STARY (WSTĘPNA EDYCJA):

Jeśli myślisz, że nauczysz się statystyki, programując wszystko sam, powiedziałbym, że czeka cię długa myśl pełna debugowania, a nie uczenia się statystyki. Ponadto potrzebujesz języka takiego jak R, aby sprawdzić odpowiedzi mimo to.

Myślę, że user765195 ma rację, ponieważ R jest trudniejszy do debugowania niż wiele innych języków, co jest ważne, ale „najgorsze”? Nie wydaje mi się

EDYTOWAĆ:

Więc jeśli mogę podsumować twoją EDYCJĘ: biorąc pod uwagę, że już robisz statystyki, i biorąc pod uwagę, że naprawdę chcesz użyć Ruby, aby to zrobić zamiast rzeczywistego programu statystycznego (R, gretl, SAS itp.), Jak możesz ułatwić sobie życie . Czy to prawda?

Nie mogę udzielić odpowiedzi Ruby, ale myślę, że należy również odpowiedzieć na ogólne pytanie. Zwłaszcza, że ​​zwracasz uwagę na inne instancje tego samego pytania: „Chciałbym użyć Pythona / perl / java / Clojure / C / cokolwiek do statystyk”.

Myślę, że odpowiedź zawsze będzie brzmiała: „po co używać uogólnionego, prymitywnego (statystycznego) narzędzia, aby wykonać zadanie, które specjalistyczne narzędzie robi znacznie lepiej?” Widzę sześć podstawowych odpowiedzi:

  1. Po prostu nie chcę uczyć się innego języka, a ponieważ jestem dobrze zaznajomiony z Python / Ruby / Excel / Java, nalegam na używanie tego języka.

  2. Statystyki, które chcę wykonać, muszą mieścić się w większym projekcie (takim jak narzędzie internetowe), a narzędzia używane w tym projekcie nie działają dobrze z narzędziami zewnętrznymi, więc muszę używać Python / Ruby / Java. (Lub może to być kwestia wdrożenia aplikacji i nie można spróbować wdrożyć dowolnych plików wykonywalnych.)

  3. Użyłbym specjalistycznego narzędzia, ale te, do których mam dostęp (powiedzmy R, który jest bezpłatny) są zbyt wolne lub nie są w stanie obsłużyć ogromnych zbiorów danych / wymagań w czasie rzeczywistym dla mojego projektu.

  4. Mój pracodawca / klient nalega na używanie języka ogólnego przeznaczenia Python / Ruby / Excel / Java. Nie mam wyboru i szukam najmniej bolesnego sposobu spełnienia tego wymogu.

  5. Przez „statystyki” mam na myśli bardzo proste rzeczy, takie jak znajdowanie środków / median, wariancji itp. Po co korzystać ze specjalistycznego pakietu, który może obliczyć modele z efektem mieszanym za pomocą MCMC, gdy wszystko, co chcę zrobić, to obliczyć, które punkty są poza 1-sigma z dala od średniej?

  6. Robię coś bardzo specjalizowanego, dla którego nawet pakiety statystyczne takie jak R nie mają pakietów / bibliotek / funkcji. Jest nie tylko najnowocześniejszy, ale wymaga bardzo wysokiej wydajności i muszę to zrobić od zera. (A może używam bibliotek, które już opracowałem w języku X.)

Moim zdaniem odpowiedź 1 nie jest dobra, odpowiedź 2 może być zgodna z prawem, ale może zawierać obejścia, których nie znasz, odpowiedź 3 jest bardziej prawdopodobna, ale może również zawierać obejścia, a dla pozostałych trzech odpowiedzi , mam nadzieję, że dostaniesz lepszą odpowiedź niż moja.

Wayne
źródło
Celem tego pytania nie jest nauka statystyk razem z rubinem, proszę zobaczyć edycję, ale dziękuję za przemyślenia i przepraszam, jeśli pytanie wprowadza w błąd Mam nadzieję, że teraz jest jasne w tej edycji.
Oeufcoque Penteano
Dziękuję, masz rację . Założenie dotyczące wiedzy statystycznej jest w porządku, a teraz szukam bibliotek, aby dowiedzieć się, jak to zrobić w Ruby, tak jak to sugerowano w Pythonie. Zgadzam się z tobą, wiele motywacji jest możliwych, ale znowu (tylko ze względu na kolejnych czytelników, którzy trafią na tę stronę), oczekiwana odpowiedź to taka, która sugeruje biblioteki i takie, jakie zostały wymienione w pytaniu Python. Uważam, że jeśli jest miejsce na wiele różnych opinii na temat tego, którego narzędzia statystycznego użyć, należy również udostępnić wiedzę na ich temat w tej społeczności. Dzięki!
Oeufcoque Penteano
+1. Najprawdopodobniej mówimy o różnych słowach zapisanych w „statystykach”. Statystyki użytkowania witryny, które można łatwo wyciągnąć z dzienników przy użyciu Pythona lub Ruby, to inne zwierzę niż powiedzmy, że trzeba programować model Coxa lub wariancję estymatora współczynnika sumy na podstawie dwustopniowego badania warstwowego z użyciem Ruby. (Trzeba być całkowicie zdesperowanym zgodnie z odpowiedziami 2, 3 i 4, aby nawet myśleć o Ruby jako wybranym języku). Można uzupełnić statystyki uczenia się symulacjami w dowolnym języku, który jest najwygodniejszy, a następnie 1 jest poprawną odpowiedzią.
StasK
@OeufcoquePenteano: W końcu myślę, że mój problem sprowadza się do „workbench”. Zwycięska odpowiedź w wątku Python jest dość spartańska. Wszystkie wymienione zasoby łącznie nie pasują nawet do podstawy R, a tym bardziej do myślenia o pakietach R. Jeśli MUSISZ zrobić trochę statystyk w Pythonie, masz kilka ograniczonych opcji, ale nie należy mylić i myśleć, że Python tworzy dobry „stół roboczy” statystyczny. Mam nadzieję, że dostaniesz kilka odpowiedzi, ale Ruby jest jeszcze gorzej niż Python.
Wayne,
@Wayne, w porządku. Nie planuję wymieniać języka R na Ruby, Python ani Excel. Ale ciekawi mnie, co Ruby ma do zaoferowania. Może kilka klejnotów z Ruby jest lepszych niż niektóre jajka (czy to jajo, które wywołują w Pythonie? Nie jestem pewien) i odwrotnie. Może Excel jest lepszy dla kilku rzeczy. Na przykład myślę, że Excel może pomóc w przeprowadzeniu bardzo powierzchownej analizy, a następnie w poważnym zanurzeniu się w R lub inne narzędzie. Nie chodzi więc o „wybranie jednego”, ale o to, co jest najlepsze w każdym świecie i znając je, wybierz ten, który jest bardziej odpowiedni dla danego problemu. Dzięki za radę.
Oeufcoque Penteano
-1

Kilka przypadkowych myśli:

  • Wspominasz, że szukasz stołu roboczego do nauki statystyk. IMHO, żadna z wymienionych przez ciebie platform nie będzie odpowiednia do nauki statystyk. Będzie zbyt wiele rozproszenia, uczenie się składni i semantyki konkretnego języka. Jeśli chcesz nauczyć się statystyki, po prostu podnieś książkę (bardzo polecam EDA Tukeya) i być może kalkulator. Nauka języka na tle pojęć statystycznych jest wysoce niepotrzebną rozrywką.
  • Osoba, która narzeka na wolne pętle w R, zdradza swoją ignorancję: pętle nie są naturalną konstrukcją w każdym języku. Są powolne w większości funkcjonalnych języków programowania. Alternatywą jest aplikacja funkcyjna, która zazwyczaj jest szybka.
  • Jeśli chodzi o języki programowania, szybkość powinna być twoją ostatnią troską. Znacznie ważniejszą kwestią jest łatwość debugowania kodu.
  • Jeśli chodzi o debugowanie, R jest prawdopodobnie najgorszym językiem programowania, jaki znam. Czasem debugowanie kodu jest niemożliwe. Ponadto dokumentacja istniejących pakietów jest zwykle bardzo źle napisana. Ogólnie moja rada jest taka, jeśli możesz uniknąć R.
  • Tylko nieznacznie znam treść statystyczną Pythona. Rozumiem, że NumPy nie jest tak naprawdę profesjonalnie napisany i nie bierze pod uwagę zagadnień numerycznych.
  • Czy zastanawiałeś się nad Haskellem? To zdecydowanie najlepszy dostępny język programowania.
użytkownik765195
źródło
Cześć! Dziękuję za twoją opinię. Cieszę się, że widzę inną opinię przeciwko R. Uwzględnię również to, co mówisz, ponieważ przyglądam się również innym narzędziom, które nie zostały tu wymienione. Może moje pytanie było mylące. Wciąż uczę się statystyki i moje pytanie dotyczące R dotyczyło tego, ale dla Ruby jest to coś innego. Jestem ciekawy, co jest dostępne dla Ruby jako środowiska roboczego, takiego jak dostępne dla Pythona i Excela. Zastanowię się również, czy nie zajrzeć do Haskell, ale jeśli masz jakieś sugestie dotyczące Ruby, byłbym wdzięczny! Dziękuję Ci!
Oeufcoque Penteano
Haskell dla statystyk? Mów o niepotrzebnej rozrywce ...
Phillip Cloud,
-1, niemożliwy do debugowania kodu wr?
mpiktas
Powinienem zauważyć, że tylko akapit dotyczący debugowania w R nie jest właściwy w tej odpowiedzi. Wszystko inne wydaje się zasługiwać na aprobatę. Oprócz Haskella, którego nie mam żadnego doświadczenia. Ale uwaga na temat debugowania jest na miejscu.
mpiktas,
1
@cpcloud: Językiem matematyki i statystyki jest rachunek lambda. Haskell to nic innego jak rachunek lambda. Konstrukcje matematyczne są wyrażane w języku Haskell dokładnie w taki sam sposób, jak są zapisane w książce matematycznej. Z tego powodu narzut z języka jest prawie zerowy. W rzeczywistości książka „The Haskell Road to Logic” uczy matematyki za pomocą Haskell. Proponuję rzucić okiem na tę książkę.
user765195