Ruby como banco de trabajo de estadísticas

13

Esta también es una pregunta que se relaciona mucho con Python como un banco de trabajo de estadísticas y sobresale como un banco de trabajo de estadísticas . Sé que hay una gran discusión sobre Ruby versus Python, pero este no es el punto en esta pregunta. Pensé que Ruby era más rápido que Python y tenía una sintaxis muy natural que podría beneficiarme para comprender las estadísticas y también podría ser una buena alternativa a R (que también es de mi interés y fue citado en mi otra pregunta sobre R aquí)) Por ejemplo, en una de las conferencias de Google Tech que he visto (citado en la pregunta vinculada aquí, el instructor se queja de que R es lento mientras crea un bucle for). Con Ruby también hay Rails, por lo que tal vez haya la posibilidad de unir ambos (Python tiene Django, pero nuevamente no me estoy metiendo en eso).

Entonces, la pregunta es la misma, pero para mi interés, en Ruby:

  • ¿Qué puede recomendarme si quisiera usar Ruby como un "banco de trabajo de estadísticas" para reemplazar R, SPSS, Python, Excel, etc.?

  • ¿Qué ganaría y perdería, según su experiencia?

Tenga en cuenta que estoy considerando esta pregunta basada en la pregunta anterior de Python y Excel. Si cree que usar Ruby y Python (o Excel) tendría el mismo impacto, dígalo y señale los argumentos de cualquier pregunta anterior, la intención de esta pregunta no es replicar las preguntas anteriores para las mismas respuestas. Sin embargo, creo que hay diferencias (como la velocidad del lenguaje y la sintaxis), pero también me gustaría saber especialmente las recomendaciones para Ruby o si hay, por ejemplo, mucho menos disponible que decir para Python o Excel. Por lo tanto, considere las respuestas anteriores para estas preguntas muy similares, pero para otro idioma / programa.

Editar: solo para resaltar, ya que las respuestas parecen ir en sentido contrario, la respuesta que estaba buscando es una como la respuesta elegida en la pregunta de Python a la que me he vinculado. No se trata de aprender estadísticas junto con Ruby. Hice punto a la cuestión aprender las estadísticas con R . Si es posible genial, pero no espero aprender estadísticas con Ruby al mismo tiempo. Puede asumir antecedentes estadísticos para esta pregunta.

Oeufcoque Penteano
fuente
gracias por editar! Noté que mi agradecimiento fue aniquilado. ¿Es una mala idea dar las gracias por las preguntas? (Solo me gustaría confirmar, no hay problema de mi parte, comente un poco fuera del tema de la pregunta, pero no quería comenzar una pregunta sobre meta solo por esto).
Oeufcoque Penteano
1
Las opiniones difieren un poco. Un breve "Gracias" al final de una pregunta es común, pero más que eso generalmente se considera una distracción innecesaria. Puede encontrar rápidamente orientación en el meta sitio de todo el sitio, como la página de preguntas frecuentes de SE .
whuber

Respuestas:

9

Estoy usando Ruby + R.

Puede leer el documento: RinRuby: Acceso al intérprete R desde Pure Ruby

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

y este blog:

http://rubyforscientificresearch.blogspot.com

http://sciruby.com/

(El autor de sciruby también es usuario de R.)

ouyang
fuente
Gracias, su respuesta va en la dirección de lo que estoy buscando. Me di cuenta de que las referencias datan de 2009 y 2011, me pregunto si hay literatura más reciente sobre este rubí dado que es un lenguaje considerablemente nuevo y siempre está creciendo. Aún así, supongo que este es un buen punto de partida. Es bueno que el blog considere el rubí para la investigación científica, que es exactamente mi caso.
Oeufcoque Penteano
Hola, amo el rubí y los rieles. Yo también amo a R. Puedes encontrar rubygems Aumentar más y más. rubygems.org/stats R también. 2003, R cran es 200, ahora es 3600+ !!! en 2011, la gema Ruby es 28000, ¡ahora es 36874 gema! Puedes disfrutar de Ruby + R: D
ouyang el
Gran punto sobre las gemas de rubí, me olvidé de ellas. ¿Quizás otras personas pueden sugerir algunas gemas de rubí sobre el uso de Ruby como banco de trabajo que son bien conocidos y funcionan bien? Gracias por agregar una respuesta sobre lo que estoy buscando nuevamente.
Oeufcoque Penteano
4

ANTIGUA (PRE-EDITAR) RESPUESTA:

Si crees que aprenderás estadísticas programando todo tú mismo, diría que te espera un largo trabajo lleno de depuración y no de aprendizaje estadístico. Además, necesitará un lenguaje como R para verificar sus respuestas de todos modos.

Creo que user765195 tiene un punto en términos de que R es más difícil de depurar que muchos otros idiomas, lo cual es importante, pero ¿"peor"? No lo creo.

EDITAR:

Entonces, si puedo resumir su EDIT: dado que ya hace estadísticas, y dado que realmente desea usar Ruby para hacerlo en lugar de un programa estadístico real (R, gretl, SAS, etc.), ¿cómo puede hacer su vida más fácil? . ¿Está bien?

No puedo dar una respuesta de Ruby, pero creo que la pregunta general también debería abordarse. Especialmente porque estás apuntando a otras instancias de la misma pregunta: "Me gustaría usar Python / perl / java / Clojure / C / lo que sea para hacer estadísticas".

Creo que la respuesta siempre será: "¿por qué usar una herramienta generalizada y primitiva (estadística) para hacer un trabajo que una herramienta especializada hace mucho mejor?" Y puedo ver seis respuestas básicas:

  1. Simplemente no quiero aprender otro idioma, y ​​dado que estoy bien versado en Python / Ruby / Excel / Java, insisto en usar ese lenguaje.

  2. Las estadísticas que quiero hacer tienen que encajar en un proyecto más grande (como una herramienta basada en la web) y las herramientas utilizadas por este proyecto no funcionan bien con herramientas externas, así que tengo que usar Python / Ruby / Java. (O podría ser una cuestión de implementar una aplicación y no es posible intentar implementar ejecutables arbitrarios).

  3. Usaría una herramienta especializada, pero las que tengo acceso (digamos R, que es gratis) son demasiado lentas o no pueden manejar los enormes conjuntos de datos / requisitos en tiempo real para mi proyecto.

  4. Mi empleador / cliente insiste en que uso el lenguaje de uso general Python / Ruby / Excel / Java. No tengo otra opción, y estoy buscando la forma menos dolorosa de cumplir con este requisito.

  5. Por "estadística" me refiero a cosas muy simples como encontrar medias / medianas, variaciones, etc. ¿Por qué incluir un paquete especializado que puede calcular modelos de efectos mixtos a través de MCMC cuando todo lo que quiero hacer es calcular qué puntos están fuera de 1-sigma lejos de la media?

  6. Estoy haciendo algo muy especializado y para el cual incluso los paquetes estadísticos como R no tienen paquetes / bibliotecas / funciones. No solo es de vanguardia, sino que requiere un rendimiento súper alto, y tengo que hacerlo desde cero. (O tal vez use bibliotecas que ya desarrollé en el lenguaje X.)

En mi opinión, la respuesta 1 no es buena, la respuesta 2 puede ser legítima, pero puede tener soluciones alternativas que no conoce, la respuesta 3 es más probable que sea legítima pero también puede tener soluciones alternativas, y para las otras tres respuestas , espero que obtengas una mejor respuesta que la mía.

Wayne
fuente
El objetivo de esta pregunta no es aprender estadísticas junto con Ruby, vea la edición, pero gracias por sus pensamientos y disculpe si la pregunta es engañosa, espero que esté clara ahora en la edición.
Oeufcoque Penteano
Gracias, lo entendiste bien . La suposición sobre el conocimiento de las estadísticas está bien, y ahora estoy buscando bibliotecas para aprender cómo hacerlo en Ruby, como se sugirió para Python. Estoy de acuerdo con usted, son posibles muchas motivaciones, pero de nuevo (solo por el bien de los próximos lectores que vienen a través de esta página), la respuesta esperada es una que sugiere bibliotecas y como se mencionó en la pregunta de Python. Creo que si hay espacio para muchas opiniones diferentes sobre qué herramienta estadística utilizar, también hay que poner a disposición el conocimiento sobre ellas en esta comunidad. ¡Gracias!
Oeufcoque Penteano
+1. Lo más probable es que estemos hablando de diferentes palabras deletreadas "estadísticas". Las estadísticas de uso del sitio web que se pueden extraer fácilmente de los registros con Python o Ruby es un animal diferente al de tener que programar el modelo de Cox o la varianza del estimador de relación de un total basado en una encuesta estratificada de dos etapas con Ruby. (Uno tendría que estar absolutamente desesperado en la línea de sus respuestas 2, 3 y 4 para incluso pensar en Ruby como el idioma de elección). Uno puede complementar sus estadísticas de aprendizaje con simulaciones en el idioma que sea más conveniente, y luego 1 Es una respuesta válida.
StasK
@OeufcoquePenteano: Al final, creo que mi problema se reduce a "banco de trabajo". La respuesta ganadora en el hilo de Python es bastante espartana. Todos los recursos enumerados combinados ni siquiera coinciden con la base R, mucho menos pensando en los paquetes R. Si tiene que hacer algunas estadísticas en Python, tiene algunas opciones limitadas, pero no debe confundirse y pensar que Python es un buen "banco de trabajo" estadístico. Espero que obtengas algunas respuestas, pero Ruby está peor que Python.
Wayne
@Wayne, eso está bien. No planeo cambiar R por Ruby, Python o Excel. Pero tengo curiosidad por saber lo que Ruby tiene para ofrecer. Tal vez pocas gemas de Ruby sean mejores que ciertos huevos (¿es ese huevo al que llaman Python? No estoy seguro), y viceversa. Quizás Excel es mejor para algunas cosas. Por ejemplo, creo que Excel podría ayudar a hacer un análisis muy superficial y luego profundizar seriamente en R u otra herramienta. Por lo tanto, no se trata de "elegir uno", sino saber qué es lo mejor de cada mundo y conocerlos, elegir el que sea más apropiado para el problema dado. Gracias por su consejo.
Oeufcoque Penteano
-1

Algunos pensamientos al azar:

  • Menciona que está buscando un banco de trabajo para aprender estadísticas. En mi humilde opinión, ninguna de las plataformas que mencionas será buena para aprender estadísticas. Habrá demasiada distracción, aprendiendo la sintaxis y la semántica del lenguaje específico. Si desea aprender estadísticas, simplemente tome un libro (le recomiendo el EDA de Tukey), y tal vez una calculadora. Aprender un idioma sobre conceptos estadísticos es una distracción muy innecesaria.
  • La persona que se queja de bucles lentos en R está traicionando su ignorancia: los bucles no son una construcción natural en todos los idiomas. Son lentos en la mayoría de los lenguajes de programación funcionales. La alternativa es la aplicación de funciones, y eso suele ser rápido.
  • Cuando se trata de lenguajes de programación, la velocidad debería ser su última preocupación. Un tema mucho, mucho más importante es la facilidad para depurar el código.
  • Cuando se trata de depurar, R es quizás el peor lenguaje de programación que conozco. A veces es imposible depurar el código. Además de eso, la documentación de los paquetes existentes generalmente está muy mal escrita. En general, mi consejo es que si puedes evitar R, hazlo.
  • Solo estoy marginalmente familiarizado con el contenido estadístico de Python. Tengo entendido que NumPy no está realmente escrito profesionalmente y no tiene en cuenta las cuestiones numéricas.
  • ¿Has considerado a Haskell? Definitivamente es el mejor lenguaje de programación que existe.
usuario765195
fuente
¡Hola! Gracias por tu opinión. Estoy feliz de ver una opinión diferente en contra de R. Tomaré en consideración también lo que está diciendo, ya que también estoy buscando otras herramientas que no se mencionan aquí. Tal vez mi pregunta fue engañosa. Todavía estoy aprendiendo estadísticas, y de hecho mi pregunta con respecto a R fue sobre esto, pero para Ruby es algo diferente. Tengo curiosidad por ver lo que está disponible para Ruby como un banco de trabajo, como lo está para Python y Excel. También consideraré investigar a Haskell, pero si tiene alguna sugerencia con respecto a Ruby, ¡también lo agradecería! ¡Gracias!
Oeufcoque Penteano
Haskell para las estadísticas? Habla sobre una distracción innecesaria ...
Phillip Cloud
-1, imposible de depurar código en r?
mpiktas
Debo señalar que solo el párrafo sobre depuración en R no es correcto en esta respuesta. Todo lo demás parece merecer un voto positivo. Excepto Haskell, que no tengo ninguna experiencia. Pero la nota sobre la depuración es acertada.
mpiktas
1
@cpcloud: El lenguaje de las matemáticas y las estadísticas es el cálculo lambda. Haskell no es más que cálculo lambda. Las construcciones matemáticas se expresan en Haskell exactamente de la misma manera que están escritas en un libro de matemáticas. Debido a eso, la sobrecarga del lenguaje es casi cero. De hecho, el libro "El camino de Haskell a la lógica" enseña matemáticas usando Haskell. Le sugiero que eche un vistazo a ese libro.
user765195