Investigación en paquetes matriciales - página 3

 
Alexey Volchanskiy:

Estupendo, es mi primer día de aprendizaje de R, responde a mis preguntas por favor, quiero comparar posibilidades de R y Matlab. Pero no seas hostil, sé equilibrado y tranquilo :).

  1. ¿Es R un lenguaje con capacidades OOP?
  2. ¿Puedo usar R para hacer una dll de 32 bits y otra de 64 bits para usarla directamente desde MQL4/5? Si es así, ¿qué tamaño de paquete debo instalar para utilizar dicha dll en el ordenador de un usuario?
  3. ¿Puedo conectar dlls comunes para acceder directamente desde R?
  4. ¿Existe un análogo de Simulink en R?
  5. ¿Por qué todas las reseñas hacen hincapié en que R es un programa de estadística? Estoy interesado en DSP, ¿tiene R paquetes para el procesamiento de señales digitales?
  6. ¿Tiene R un formato compacto incorporado para almacenar datos, similar a los archivos .mat de Matlab?

1. Sí. Comparar diferentes lenguajes de programación no es una tarea fácil, ya que utilizar unas herramientas y no utilizar otras suele ser una cuestión de gusto del programador.

No soy un experto en R pero voy a mencionar esto:

R no tiene el concepto de "escalar". Es un vector de longitud 1. Es decir, la aritmética se basa en operaciones matriciales. una línea de código C= A+B puede llamar a una operación matricial

en R la noción de "objeto" se lleva a su conclusión lógica: puede ser un vector, una matriz, una matriz de programas y en general el entorno en el que se ejecuta un programa de usuario.

En R es bastante fácil escribir programas que no sólo carguen los procesadores y núcleos del ordenador de ejecución, sino también los ordenadores vecinos de la red local

...

2. Mis conocimientos son insuficientes para una respuesta. Aparentemente no se puede. Esto se debe a las particularidades de la construcción del propio R, que es un intérprete cuando se encuentra por primera vez. Pero esta es una visión superficial. El hecho de que R sea una simbiosis con una interfaz bien documentada con C. La principal potencia de R son los paquetes (más de 7000 mil, que contienen unas 120 000 funciones), y estos paquetes suelen ser referencias a programas en C o Fortran. La cuestión es que R utiliza las bibliotecas C y Fortran para todas las operaciones de cálculo intensivo.

Se presta mucha atención a las API en R, pero más allá de mis calificaciones

3. Sí

4. No lo creo. Hay una serie de herramientas disponibles (excepto off-the-shelf) para la construcción de GUIs, aunque eso no es todo. En este apartado quiero mencionar herramientas ampliamente desarrolladas en R, que están ausentes en los lenguajes de programación habituales: se trata de métodos de prueba de modelos estadísticos. Las herramientas para procesar los resultados de las pruebas estadísticas están muy desarrolladas y avanzadas. En R se puede responder fácilmente a la pregunta: "¿En cuánto difiere la media de la expectativa matemática para una muestra de 100 observaciones?"

5. La estadística, en el sentido amplio de la palabra, es una característica de R. No te olvides de las herramientas gráficas, que son fundamentales cuando se trabaja con estadísticas. Para obtener una visión general de las herramientas de R abra el sitio web, hay compilaciones temáticas de paquetes.

6. No se puede comparar. Pero existe el "bytecode". Pero la cuestión es diferente. Un programa en R que contiene varios miles de líneas de código es exótico. Un programa ordinario de R es una llamada a una función del paquete.

 
Alexey Volchanskiy:
Tengo que intentar traducir algunos de mis programas en Matlab a R, para comparar la velocidad. Si tengo tiempo para resolverlo durante el fin de semana, lo haré e informaré. Matlab es bastante lento, hago muchas cosas en C# o C++ y lo conecto como DLL para ganar velocidad.

La propia R es tres veces retardada. Es un intérprete. No hay problemas con la depuración en absoluto, al principio empecé a usar el depurador, y luego descubrí que no sirve de nada.

Hablando de la velocidad R, hay varias consideraciones aquí.

1. Puedes traducirlo a código de bytes, pero es una cataplasma

2. No olvidemos que los paquetes para operaciones de cálculo intensivo utilizan bibliotecas, que fueron elegidas pensando en la velocidad

3. se utiliza una biblioteca para las operaciones matriciales

4. Los operadores de bucle no son necesarios para las operaciones matriciales

5. Carga de todos los núcleos. Estándar y muy sencillo siempre que el algoritmo lo permita.

Por lo general, comparar programas simplemente reescribiendo de un idioma a otro funciona si su conocimiento de ambos idiomas es el mismo.

 
Alexey Volchanskiy:
Tengo que intentar traducir algunos de mis programas a R en Matlab, para comparar la velocidad. Si consigo solucionarlo para el fin de semana, lo haré y os contaré qué pasa. Matlab es bastante lento, yo hago muchas cosas en C# o C++ y lo conecto como DLL para ganar velocidad.

Como ves, si vas a contar algo no trivial, será usando un paquete. Si el paquete está escrito en "pluses", volará. Si no, podría arrastrarse.

Comprobado por la experiencia: si intentas hacer un bucle a través de los elementos de data.frame (que es un array que puede contener una mezcla de tipos de datos) y calcular algo sobre ellos, puede ser extremadamente largo. R es muy lento para realizar cálculos en matrices grandes, a menos que se utilicen paquetes especiales.

Pero siempre hay alguna librería, donde el cálculo que necesito ya está implementado, y puedo llamar, por ejemplo, a rollapply(x$V1, media) y calcular las medias móviles de todos los elementos, en lugar de la tediosa conversión elemento por elemento del array.

 
СанСаныч Фоменко:


5. Cargar todos los núcleos. Estándar y muy sencillo siempre que el algoritmo lo permita.


SanSanych, ¿podría aclarar esto? Estuvimos sondeando el paralelismo en R y llegamos a la clara conclusión de que se carga un núcleo (parece que se carga el 25% en los 4 núcleos), a menos que se disponga lo contrario en el paquete especial.
 
СанСаныч Фоменко:

El propio R es tres veces retrasado...


Entonces, ¿cuál es el alcance de este software? ¿Analizar un surtido eficiente para una boutique que vende bienes de consumo chinos?
 
СанСаныч Фоменко:

... La principal potencia de R son los paquetes (más de 7000 mil, que contienen unas 120 000 funciones)...

¿Y cuántos paquetes y funciones son necesarios y suficientes para obtener un beneficio estable?

¿Qué software dominaremos después, si R no puede manejarlo?

 
Alexey Burnakov:
SanSanych, ¿podría aclarar esto? Estuvimos tanteando el paralelismo en R y llegamos a la clara conclusión de que carga un núcleo (parece que el 25% de carga en los 4 núcleos), a menos que se estipule lo contrario en el paquete especial.
Lacomputación paralela es algo muy avanzado y tiene muchas publicaciones, por ejemplo, attac.
Archivos adjuntos:
parallel.zip  387 kb
 
Dmitry Fedoseev:

¿Cuál es entonces el alcance de este software? ¿Analizar un surtido eficaz para una boutique que vende bienes de consumo chinos?

Por favor, lea mi post en su totalidad.

Para añadir.

Cuando escribía sobre el propio R, por favor, no olvides que el verdadero código R consiste sólo en una pequeña parte del propio texto R.

El ejemplo más sencillo.

Reenvío: A=B.

Si A y B son escalares, es probable que el código en MKL sea más rápido.

Pero no hay escalares en R: A y B son al menos vectores. En MCL se trata de ciclos, en R se escribe sin ciclos y se implementa como parte de un paquete, el de cálculo matricial actual, que es de primera línea en eficiencia. Y si comparas R y ACM en términos de cálculos de matrices, R es fundamentalmente más eficiente.

Es un principio general de R utilizar trozos de código eficiente no escrito en R, normalmente en C, si no hay bibliotecas especializadas disponibles.

Conclusión: R es eficiente desde el punto de vista computacional gracias al uso de subrutinas internas y a la computación en paralelo

 
Event:

¿Y cuántos paquetes y funciones son necesarios y suficientes para obtener un beneficio estable?

¿Qué software dominaremos después, si R no es suficiente?

Para las necesidades de un comerciante individual tenemos un software redundante.

Hoy en día, R es el software más importante en el campo de la estadística en sentido amplio. Por ejemplo, los métodos de aprendizaje automático, que tradicionalmente se han atribuido a la inteligencia artificial, están ampliamente representados en R.

Hay otro matiz.

La última novedad en este campo es el paquete R. Y he aquí por qué. Hoy en día, las publicaciones científicas en el campo de la estadística, además de las fórmulas, suelen contener código en R, señal de buena mauvais ton, por así decirlo. Y de un código R en un artículo a un paquete completo dentro de R hay un paso.

Además, todo lo relacionado con R es un lugar de encuentro mundial. Poner un paquete en los repositorios de R convierte al autor de un paquete dentro de R en una celebridad mundial. R es un sistema gratuito y de código abierto sin restricciones de uso. Precisamente esta propiedad de R le permite arrebatar el liderazgo mundial a los anteriores líderes de pago - SAS, SPSS, bueno también al confuso lenguaje de Python.

No en vano, hace aproximadamente un año Microsoft se metió en R al adquirir en propiedad una variante de pago de R, revolution analytics, y ahora la está promocionando activamente.

 
СанСаныч Фоменко:
La computación paralela es algo muy avanzado, tiene muchas publicaciones, por ejemplo, attac.
Grand merci.
Razón de la queja: