Meilleure réponse
Jai fait le passage de stata à R. Voici mes observations:
Avantages:
- R est open source, vous aurez accès à des algorithmes ou à des logiciels à la fine pointe de la technologie que les gens ont écrits pour des problèmes de niche.
- R a de meilleures visualisations. Une fois que vous maîtrisez ggplot2, vous pouvez le faire des choses assez étonnantes avec presque tous les types de données.
- Jai trouvé R plus facile pour écrire des packages et des fonctions personnalisés.
- R est plus proche de la communauté de stats / machine learning, vous trouverez donc plus de support / packages que de stata.
- Jadore RStudio Gui, en particulier lorsque vous travaillez sur un serveur.
- R fournit un meilleur support Latex.
- R a une communauté très active et des listes daide – ils ont été incroyablement rapides pour répondre à toutes mes questions.
- R fonctionne avec le Big Data! Le package RHadoop vous permet décrire des scripts MapReduce personnalisés à laide des fonctions R. Si jamais vous devez gérer du Big Data et que vous ne pouvez utiliser que Stata, vous êtes foutu.
- Il y a beaucoup plus de « hacks » en R pour des problèmes compliqués comme lanalyse de réseau, des bootstraps personnalisés, etc. Dès que vous vous éloignez des implémentations vanilla, jai souvent trouvé des fonctions de raccourci dans les procédures de R alors que dans Stata vous devez souvent coder votre sortie.
Inconvénients:
- R est open source, vous devrez peut-être attendre un peu pour avoir accès à de nouveaux algorithmes sil ny a pas de développement actif.
- Stata est beaucoup plus proche de la communauté déconométrie et a beaucoup plus dalgorithmes, de packages et dimplémentations que R. Si vous êtes économiste, vous serez frustré par le manque dexhaustivité des packages déconométrie.
- Stata a une excellente interface graphique qui vous permet de choisir de manière interactive la procédure que vous souhaitez exécuter et qui remplit la plupart des détails pour vous. Cest génial lorsque vous utilisez une fonction que vous navez jamais utilisée auparavant. R na pas vraiment ça – jai limpression que lorsque jutilise R, je suis sur Google la moitié du temps.
- Stata est plus rapide que R [1].
- Le téléchargement de modules stata est un Pour les modules R dans CRAN, il ny a généralement pas de problème (bien que jaie rencontré des problèmes lorsque jutilise une machine Centos), mais il existe plusieurs packages essentiels qui ne sont pas sur CRAN.
- La visualisation et le traçage standard de Stata sont bien meilleurs que R.
- Stata a une meilleure aide standard – je sens que je peux lire laide sur nimporte quelle fonction et comprendre exactement ce que je besoin de faire alors que je ne me sens pas de cette façon pour plusieurs paquets R qui sont mal documentés.
- R a une syntaxe « WTF » et une structure de dénomination de package. La plupart des projets open-source le font. La simplicité des fonctions stata (reg, lm, etc.) me manque.
[1] http://ekonometrics.blogspot.com/2011/04/speeding-tickets-for-r-and-stata.html
Réponse
En général, quand je trouve ladverbe » évidemment « dans une phrase, je trouve une déclaration injustifiée qui suit. Ici, je ne suis pas daccord avec votre affirmation selon laquelle R a « une syntaxe bizarre ». Tout programmeur averti préférerait coder en Haskell ou en Lisp, mais le fait est que ces langages natteindront jamais un large public. R est un Lisp à lintérieur (par exemple, vous pouvez en fait coder sur le langage en R, mais pas en Python), mais est assez proche dun langage scientifique extérieur. En fait, comme vous le notez, en tant que langage danalyse de données , R est vraiment le langage le plus naturel et le plus élégant qui soit. Si vous en voulez la preuve, consultez lactivité autour de Python et Julia: implémentation de data frames (pandas et data.frame en Jlia), formules (patsy), plyr (pandas). Et pourtant, toutes ces fonctionnalités semblent encore quelque peu greffées sur les autres langues. Ce que les gens perçoivent comme « bizarre » ou « farfelu » est soit le résultat dune concession à lusage interactif (par exemple, la diminution de la dimension), soit de lhéritage fonctionnel de la langue.
Je suis daccord que R a beaucoup de domaines à améliorer, mais surtout pas dans la syntaxe du langage. Bien sûr, ses conventions de dénomination sont incohérentes; la vitesse et la gestion de la mémoire sont des problèmes connus; etc. Pourquoi donc? Quelques raisons:
- La directive principale de R (selon son créateur, John Chambers) est de produire un logiciel fiable. R accorde une grande importance à la précision et à la fiabilité. Ses principales fonctions statistiques sont de premier ordre; même son système graphique de base a été soigneusement pensé, du classement des histogrammes (pas un problème trivial!) au placement du texte. La vitesse na jamais été une grande préoccupation, et à juste titre. Si la vitesse et lefficacité de la mémoire étaient le problème, nous « serions tous en train de coder en FORTRAN, ce qui est également facile et de haut niveau. Le code source de la base R est court (400K LOCs; à titre de comparaison, Numpy seul a la même taille) , et très lisible. Code que vous pouvez comprendre et avoir confiance.
- Splus et R ont été conçus dans les années 80 et 90, bien avant lère du «big data» et lessor du Machine Learning. Mais R sest amélioré. La gestion de la mémoire est bien meilleure, probablement supérieure à celle de MATLAB. Elle a encore du chemin à parcourir, mais certaines choses peuvent être améliorées (par exemple, la représentation des données internes).
- Léquipe de développement principale a un taux de rotation minimal, et les jeunes codeurs dil y a 15 ans ont maintenant la cinquantaine. De plus, ils sont beaucoup moins impliqués dans la communauté, et comprennent un personnage pittoresque / mythique comme Brian Ripley: un professeur dOxford responsable de 70\% + des commits, et non la personne la plus sympathique de la planète et sur les listes de diffusion R.
- R demande un compilateur JIT rapide ciblant la LLVM, mais ces choses ne se produisent pas du jour au lendemain. Vous avez besoin dune équipe de codeurs exceptionnels et formés avec des connaissances en conception de compilateurs et dinterprètes, une solide éthique de travail (pour sortir un produit dans quelques années) et lhumilité pour réimplémenter un langage existant au lieu de créer leur propre projet de vanité. Voir également # 3.