Ruby comme établi de statistiques

13

C'est également une question qui se rapporte beaucoup à Python en tant qu'atelier de statistiques et à Excel en tant qu'atelier de statistiques . Je sais qu'il y a une énorme discussion sur Ruby contre Python mais ce n'est pas le point sur cette question. Je pensais que Ruby étant plus rapide que Python et ayant une syntaxe très naturelle pourrait me permettre de comprendre les statistiques et pourrait également être une bonne alternative à R (ce qui est également de mon intérêt et a été cité à mon autre question sur R ici). Par exemple, lors d'une des conférences Google Tech que j'ai vues (citée sur la question liée ici, l'instructeur se plaint que R est lent lors de la création d'une boucle for). Avec Ruby, il y a aussi Rails, donc peut-être qu'il y aurait la possibilité de réunir les deux aussi (Python a Django, mais encore une fois, je ne m'y attarde pas).

Donc, la question est la même, mais pour mon intérêt, dans Ruby:

  • Que pouvez-vous recommander si je voulais utiliser Ruby comme un "atelier de statistiques" pour remplacer R, SPSS, Python, Excel, etc.?

  • Qu'est-ce que je gagnerais et perdrais, selon votre expérience?

Veuillez noter que je considère cette question sur la base de la question précédente sur Python et Excel. Si vous pensez que l'utilisation de Ruby et Python (ou Excel) aurait le même impact, veuillez le dire et indiquer les arguments de toute question précédente, le but de cette question n'est pas de reproduire les questions précédentes pour les mêmes réponses. Je crois cependant qu'il y a des différences (comme la vitesse du langage et la syntaxe), mais j'aimerais aussi spécialement connaître les recommandations pour Ruby ou s'il y en a, par exemple, beaucoup moins de disponible que de dire pour Python ou Excel. Veuillez donc considérer les réponses précédentes pour ces questions très similaires mais pour d'autres langues / programmes.

Edit: Juste pour souligner que les réponses semblent aller dans le sens inverse, la réponse que je cherchais est une réponse telle que la réponse choisie à la question Python à laquelle j'ai lié. Il ne s'agit pas d'apprendre des statistiques avec Ruby. J'ai appris des statistiques avec le point sur la question R . Si c'est possible, super, mais je ne m'attends pas à apprendre des statistiques avec Ruby en même temps. Vous pouvez assumer des antécédents statistiques pour cette question.

Oeufcoque Penteano
la source
merci pour l'édition! Je remarque que mes remerciements ont été effacés. Est-ce une mauvaise idée de dire merci pour les questions? (Je voudrais juste confirmer, pas de problème de mon côté - commentez un peu le sujet de la question, mais je ne voulais pas commencer une question sur la méta juste pour cela).
Oeufcoque Penteano
1
Les opinions divergent un peu. Un bref "Merci" à la fin d'une question est courant, mais plus que cela est généralement considéré comme une distraction inutile. Vous pouvez trouver rapidement des conseils sur le méta-site à l'échelle du site, comme la page FAQ SE .
whuber

Réponses:

9

J'utilise Ruby + R.

Vous pouvez lire l'article: RinRuby: Accéder à l'interpréteur R à partir de Pure Ruby

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

et ce blog:

http://rubyforscientificresearch.blogspot.com

http://sciruby.com/

(L'auteur de sciruby est également utilisateur de R.)

ouyang
la source
Merci, votre réponse va dans le sens de ce que je recherche. J'ai remarqué que les références datent de 2009 et 2011, je me demande s'il existe une littérature plus récente sur ce rubis donné qui est une nouvelle langue considérable et toujours en croissance? Pourtant, je suppose que c'est un bon point de départ. C'est bien que le blog considère Ruby pour la recherche scientifique, ce qui est exactement mon cas.
Oeufcoque Penteano
Salut, j'aime le rubis et les rails. J'adore aussi R. Vous pouvez trouver des rubygèmes de plus en plus. rubygems.org/stats R aussi. 2003, R cran est 200, est maintenant 3600+ !!! en 2011, Ruby gem est 28000, est maintenant 36874 gem! Vous pouvez profiter de Ruby + R: D
ouyang
Grand point sur les pierres précieuses rubis, j'ai oublié celles-ci. Peut-être que d'autres personnes peuvent suggérer quelques gemmes de rubis sur la question de l'utilisation de Ruby comme un établi qui sont bien connus pour fonctionner et sont robustes? Merci d'avoir ajouté une réponse sur ce que je recherche à nouveau.
Oeufcoque Penteano
4

RÉPONSE ANCIENNE (PRÉ-MODIFICATION):

Si vous pensez que vous apprendrez les statistiques en programmant tout vous-même, je dirais que vous êtes dans une longue besogne pleine de débogage et non d'apprentissage statistique. De plus, vous aurez besoin d'une langue comme R pour vérifier vos réponses de toute façon.

Je pense que user765195 a un point en termes de R étant plus difficile à déboguer que de nombreuses autres langues, ce qui est important, mais "pire"? Je ne pense pas.

ÉDITER:

Donc, si je peux résumer votre EDIT: étant donné que vous faites déjà des statistiques, et étant donné que vous voulez vraiment utiliser Ruby pour le faire au lieu d'un programme statistique réel (R, gretl, SAS, etc.), comment pouvez-vous vous faciliter la vie . Est-ce correct?

Je ne peux pas donner de réponse Ruby, mais je pense que la question générale devrait également être abordée. D'autant plus que vous vous référez à d'autres instanciations de la même question: "Je voudrais utiliser Python / perl / java / Clojure / C / pour faire des statistiques".

Je pense que la réponse sera toujours: "pourquoi utiliser un outil généralisé et primitif (statistique) pour faire un travail qu'un outil spécialisé fait beaucoup mieux?" Et je peux voir six réponses de base:

  1. Je ne veux tout simplement pas apprendre une autre langue, et comme je connais bien Python / Ruby / Excel / Java, j'insiste pour utiliser cette langue.

  2. Les statistiques que je veux faire doivent s'inscrire dans un projet plus grand (comme un outil basé sur le Web) et les outils utilisés par ce projet ne fonctionnent pas bien avec des outils externes, donc je dois utiliser Python / Ruby / Java. (Ou il peut s'agir de déployer une application et il n'est pas possible d'essayer de déployer des exécutables arbitraires.)

  3. J'utiliserais un outil spécialisé, mais ceux auxquels j'ai accès (disons R, qui est gratuit) sont trop lents ou ne peuvent pas gérer les énormes ensembles de données / exigences en temps réel pour mon projet.

  4. Mon employeur / client insiste pour que j'utilise un langage général Python / Ruby / Excel / Java. Je n'ai pas le choix et je cherche le moyen le moins douloureux de suivre cette exigence.

  5. Par "statistiques", je veux dire des choses très simples comme trouver des moyennes / médianes, des variances, etc. loin de la moyenne?

  6. Je fais quelque chose de très spécialisé et pour lequel même les packages statistiques comme R n'ont pas de packages / bibliothèques / fonctions. Ce n'est pas seulement à la pointe de la technologie, mais cela nécessite des performances très élevées, et je dois le faire à partir de zéro. (Ou peut-être utiliser des bibliothèques que j'ai déjà développées en langage X.)

À mon avis, la réponse 1 n'est pas bonne, la réponse 2 peut être légitime, mais peut contenir des solutions de contournement dont vous n'êtes pas au courant, la réponse 3 est plus susceptible d'être légitime mais peut également avoir des solutions de contournement, et pour les trois autres réponses j'espère que vous obtiendrez une meilleure réponse que la mienne.

Wayne
la source
Le but de cette question n'est pas d'apprendre les statistiques avec ruby, veuillez voir l'édition, mais merci pour vos réflexions et désolé si la question est trompeuse J'espère que c'est clair maintenant sur l'édition.
Oeufcoque Penteano
Je vous remercie, vous l' avez droit . L'hypothèse sur la connaissance des statistiques est très bien, et maintenant je regarde sur les bibliothèques pour apprendre à le faire dans Ruby, comme cela a été suggéré pour Python. Je suis d'accord avec vous, de nombreuses motivations sont possibles, mais encore une fois (juste pour le plaisir des prochains lecteurs qui viendront sur cette page), la réponse attendue est celle qui suggère des bibliothèques et telles qu'elles ont été mentionnées sur la question Python. Je crois que s'il y a de la place pour de nombreuses opinions différentes sur l'outil statistique à utiliser, il y a aussi pour mettre à disposition des connaissances à leur sujet sur cette communauté. Merci!
Oeufcoque Penteano
+1. Très probablement, nous parlons de différents mots orthographiés "statistiques". Les statistiques d'utilisation du site Web qui peuvent être facilement extraites des journaux en utilisant Python ou Ruby sont un animal différent de celui de devoir programmer le modèle de Cox ou la variance de l'estimateur de ratio d'un total basé sur une enquête stratifiée en deux étapes utilisant Ruby. (Il faudrait être absolument désespéré dans le sens de vos réponses 2, 3 et 4 pour même considérer Ruby comme la langue de choix.) On peut compléter leurs statistiques d'apprentissage avec des simulations dans la langue la plus pratique, puis 1 est une réponse valable.
StasK
@OeufcoquePenteano: Au final, je pense que mon problème se résume à "workbench". La réponse gagnante dans le fil Python est en fait assez spartiate. Toutes les ressources répertoriées combinées ne correspondent même pas à la base R, et encore moins à la réflexion sur les packages R. Si vous DEVEZ faire des statistiques en Python, vous avez quelques options limitées, mais il ne faut pas être confus et penser que Python fait un bon "workbench" statistique. J'espère que vous obtiendrez des réponses, mais Ruby est encore pire que Python.
Wayne
@Wayne, ça va. Je ne prévois pas d'échanger R contre Ruby, Python ou Excel. Mais je suis curieux de savoir ce que Ruby a à offrir. Peut-être que peu de gemmes de Ruby sont meilleures que certains œufs (est-ce cet œuf qu'ils appellent Python? Pas sûr), et vice-versa. Peut-être qu'Excel est meilleur pour peu de choses. Par exemple, je pense qu'Excel pourrait aider à faire une analyse très superficielle, puis à plonger sérieusement dans R ou un autre outil. Donc, il ne s'agit pas de «choisir un», mais de savoir ce qui est le meilleur de chaque monde et de les connaître, choisissez celui qui convient le mieux au problème donné. Merci pour vos conseils.
Oeufcoque Penteano
-1

Quelques réflexions aléatoires:

  • Vous mentionnez que vous cherchez un établi pour apprendre les statistiques. À mon humble avis, aucune des plateformes que vous mentionnez ne sera bonne pour l'apprentissage des statistiques. Il y aura trop de distraction, apprenant la syntaxe et la sémantique du langage spécifique. Si vous voulez apprendre les statistiques, prenez simplement un livre (je recommande fortement l'EDA de Tukey), et peut-être une calculatrice. Apprendre une langue en plus des concepts statistiques est une distraction très inutile.
  • La personne qui se plaint de boucles lentes dans R trahit son ignorance: les boucles ne sont pas une construction naturelle dans toutes les langues. Ils sont lents dans la plupart des langages de programmation fonctionnels. L'alternative est l'application de fonction, et c'est généralement rapide.
  • En ce qui concerne les langages de programmation, la vitesse devrait être votre dernière préoccupation. Un problème beaucoup plus important est la facilité de débogage du code.
  • En ce qui concerne le débogage, R est peut-être le pire langage de programmation que je connaisse. Il est parfois impossible de déboguer le code. En plus de cela, la documentation des packages existants est généralement très mal écrite. Dans l'ensemble, mon conseil est, si vous pouvez éviter R, faites-le.
  • Je ne connais que très peu le contenu statistique de Python. Ma compréhension est que NumPy n'est pas vraiment écrit professionnellement et ne prend pas en compte les problèmes numériques.
  • Avez-vous pensé à Haskell? C'est certainement le meilleur langage de programmation.
user765195
la source
salut! Merci pour votre avis. Je suis heureux de voir une opinion différente contre R. Je prendrai également en considération ce que vous dites, car je regarde également d'autres outils non mentionnés ici. Peut-être que ma question était trompeuse. J'apprends toujours des statistiques, et en fait ma question concernant R était à ce sujet, mais pour Ruby c'est quelque chose de différent. Je suis curieux de voir ce qui est disponible pour ruby ​​comme un établi tel qu'il est disponible pour python et excel. J'envisagerai également d'examiner Haskell, mais si vous avez des suggestions concernant Ruby, j'apprécierais également! Je vous remercie!
Oeufcoque Penteano
Haskell pour les statistiques? Parlez d'une distraction inutile ...
Phillip Cloud
-1, impossible de déboguer du code en r?
mpiktas
Je dois noter que seul le paragraphe sur le débogage dans R n'est pas correct dans cette réponse. Tout le reste semble mériter un vote positif. Sauf Haskell, dont je n'ai aucune expérience. Mais la note sur le débogage est parfaite.
mpiktas
1
@cpcloud: Le langage des mathématiques et des statistiques est le lambda-calcul. Haskell n'est rien d'autre que du lambda-calcul. Les constructions mathématiques sont exprimées dans Haskell exactement de la même manière qu'elles sont écrites dans un livre de mathématiques. Pour cette raison, les frais généraux de la langue sont presque nuls. En fait, le livre "The Haskell Road to Logic" enseigne les mathématiques en utilisant Haskell. Je vous suggère de jeter un œil à ce livre.
user765195