Ricerca in pacchetti di matrici - pagina 3

 
Alexey Volchanskiy:

Grande, è il mio primo giorno di apprendimento di R, rispondete alle mie domande per favore, voglio confrontare le possibilità di R e Matlab. Ma non ospitare l'ostilità, sii ragionevole e calmo :).

  1. R è un linguaggio con capacità OOP?
  2. Posso creare in R una dll a 32-bit e 64-bit da usare direttamente da MQL4/5? Se sì, quale pacchetto di dimensioni devo installare per usare queste DLL sul computer del mio utente?
  3. Posso collegare le DLL comuni per l'accesso diretto da R?
  4. Esiste un analogo di Simulink in R?
  5. Perché tutte le recensioni sottolineano che R è un programma di statistica? Sono interessato al DSP, R ha pacchetti per l'elaborazione del segnale digitale?
  6. R ha un formato compatto integrato per la memorizzazione dei dati, simile ai file .mat in Matlab?

1. Sì. Confrontare diversi linguaggi di programmazione non è un compito facile, poiché usare alcuni strumenti e non usarne altri è spesso una questione di gusto del programmatore.

Non sono un esperto di R, ma menzionerò questo:

R non ha il concetto di "scalare". È un vettore di lunghezza 1. Cioè, l'aritmetica è basata su operazioni di matrice. una linea di codice C= A+B può chiamare un'operazione di matrice

in R la nozione di "oggetto" è portata alla sua conclusione logica: può essere un vettore, una matrice, una matrice di programmi e in generale l'ambiente in cui viene eseguito un programma utente.

In R è abbastanza facile scrivere programmi che non solo caricano i processori e i core del computer di esecuzione, ma anche i computer vicini nella rete locale

...

2. La mia conoscenza non è sufficiente per una risposta. A quanto pare non si può. Questo deriva dalle specificità della costruzione di R stesso, che è un interprete al primo incontro. Ma questa è una visione superficiale. Il fatto che R è una simbiosi con un'interfaccia ben documentata con C. La potenza principale di R sono i pacchetti (oltre 7000 mila, contenenti circa 120 000 funzioni), e questi pacchetti sono di solito riferimenti a programmi in C o Fortran. Il punto è che R usa le librerie C e Fortran per tutte le operazioni computazionalmente intensive.

Molta attenzione a R è data alle API, ma al di là delle mie qualifiche

3. Sì

4. Non credo. Ci sono un certo numero di strumenti disponibili (tranne quelli off-the-shelf) per la costruzione di GUI, anche se non è tutto qui. In questo paragrafo voglio menzionare strumenti ampiamente sviluppati in R, che sono assenti nei linguaggi di programmazione abituali: si tratta di metodi di test statistico dei modelli. Gli strumenti per elaborare i risultati dei test statistici sono molto sviluppati e avanzati. In R si può facilmente rispondere alla domanda: "Di quanto la media differisce dall'aspettativa matematica per un campione di 100 osservazioni?

5. La statistica, nel senso ampio della parola, è una caratteristica di R. Non dimenticate gli strumenti grafici, che sono fondamentali quando si lavora con la statistica. Per avere una panoramica degli strumenti R aprite il sito, ci sono compilazioni tematiche di pacchetti.

6. Non si può paragonare. Ma c'è il "bytecode". Ma il punto è diverso. Un programma in R che contiene diverse migliaia di righe di codice è esotico. Un normale programma R è una chiamata di funzione del pacchetto.

 
Alexey Volchanskiy:
Devo provare a tradurre alcuni dei miei programmi in Matlab in R, per confrontare la velocità. Se ho tempo di capirlo durante il fine settimana, lo farò e riferirò. Matlab è piuttosto lento, faccio un sacco di cose in C# o C++ e lo inserisco come DLL per la velocità.

R stessa è tre volte ritardata. È un interprete. Nessun problema con il debugging, all'inizio ho iniziato a usare il debugger, e poi ho scoperto che non serve a niente.

Parlando di velocità R, ci sono diverse considerazioni qui.

1. Si può tradurre in byte-code, ma è un cataplasma

2. Non dimentichiamo che i pacchetti per operazioni computazionalmente intensive usano librerie, che sono state scelte con la velocità in mente

3. si usa una libreria per le operazioni con le matrici

4. Gli operatori di loop non sono necessari per le operazioni di matrice

5. Caricamento di tutti i core. Standard e molto semplice dove l'algoritmo lo permette.

In generale, confrontare i programmi semplicemente riscrivendo da una lingua all'altra funziona se la vostra conoscenza di entrambe le lingue è la stessa.

 
Alexey Volchanskiy:
Devo provare a tradurre alcuni dei miei programmi in R in Matlab, per confrontare la velocità. Se riesco a capirlo entro il fine settimana, lo farò e riferirò. Matlab è piuttosto lento, faccio molte cose in C# o C++ e lo inserisco come DLL per la velocità.

Vedete, se avete intenzione di contare qualcosa di non banale, sarà usando un pacchetto. Se il pacchetto è scritto in "più", volerà. In caso contrario, potrebbe strisciare.

Testato dalla mia esperienza personale: se provate a fare un loop attraverso gli elementi di data.frame (che è un array che può contenere un mix di tipi di dati) e contare qualcosa su di essi, può essere estremamente lungo. R è molto lento nel fare calcoli su grandi matrici, a meno che non si usino pacchetti speciali.

Ma c'è sempre qualche libreria, dove il calcolo di cui ho bisogno è già implementato, e posso chiamare, per esempio, rollapply(x$V1, mean) e calcolare le medie mobili su tutti gli elementi, invece della noiosa e lunga conversione elemento per elemento dell'array.

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


5. Caricare tutti i core. Standard e molto semplice dove l'algoritmo lo permette.


SanSanych, potresti chiarire questo? Stavamo sondando il parallelismo in R e siamo giunti alla chiara conclusione che carica un core (sembra un carico del 25% su tutti e 4 i core), a meno che non sia previsto diversamente nel pacchetto speciale.
 
СанСаныч Фоменко:

R stesso è tre volte ritardato...


Allora qual è lo scopo di questo software? Analizzare un assortimento efficiente per una boutique che vende beni di consumo cinesi?
 
СанСаныч Фоменко:

... La potenza principale di R sono i pacchetti (oltre 7000 mila, contenenti circa 120 000 funzioni)...

E quanti pacchetti e funzioni sono necessari e sufficienti per ottenere un profitto stabile?

Quale sarà il prossimo software che padroneggeremo, se R non è in grado di gestirlo?

 
Alexey Burnakov:
SanSanych, potresti chiarire questo? Stavamo provando il parallelismo in R e siamo arrivati a una chiara conclusione che carica un core (sembra che il 25% di carico su tutti e 4 i core), a meno che non sia diversamente stipulato nel pacchetto speciale.
Ilcalcolo parallelo è una cosa molto avanzata e ha un sacco di pubblicazioni, per esempio attac.
File:
parallel.zip  387 kb
 
Dmitry Fedoseev:

Qual è dunque lo scopo di questo software? Analizzare un assortimento efficace per una boutique che vende beni di consumo cinesi?

Per favore, leggete il mio post nella sua interezza.

Da aggiungere.

Quando ho scritto su R stesso, non dobbiamo dimenticare che il vero codice R consiste solo in una piccola parte del testo R stesso.

L'esempio più semplice.

Inoltro: A=B.

Se A e B sono scalari, è probabile che il codice in MKL sia più veloce.

Ma non ci sono scalari in R: A e B sono almeno vettori. In MCL sono cicli, in R è scritto senza alcun ciclo e implementato come parte di un pacchetto, il calcolo matriciale di oggi, che è al top dell'efficienza. E se si confronta R e MCL in termini di calcolo delle matrici, R è fondamentalmente più efficiente.

È un principio generale di R usare pezzi di codice efficiente off-the-shelf che non è stato scritto in R - di solito in C, se non sono disponibili librerie specializzate off-the-shelf.

In conclusione: R è computazionalmente efficiente usando le subroutine interne e il calcolo parallelo

 
Event:

E quanti pacchetti e funzioni sono necessari e sufficienti per ottenere un profitto stabile?

Quale sarà il prossimo software che padroneggeremo, se R non è sufficiente?

Per le esigenze di un trader individuale abbiamo un software ridondante.

Oggi R è il software di punta nel campo della statistica in senso lato. Per esempio, i metodi di apprendimento automatico, che sono stati tradizionalmente attribuiti all'intelligenza artificiale, sono ampiamente rappresentati in R.

C'è un'altra sfumatura.

L'ultimo ronzio nel campo arriva sotto forma del pacchetto R. Ed ecco perché. Al giorno d'oggi, le pubblicazioni scientifiche nel campo della statistica, oltre alle formule, di solito contengono codice in R, un segno di buon mauvais ton, per così dire. E dal codice R in un articolo a un pacchetto completo in R è un passo.

Per aggiungere a questo, tutto ciò che riguarda la R è un ritrovo mondiale. Mettere un pacchetto nei repository di R rende l'autore di un pacchetto in R una celebrità mondiale. R è un sistema libero e open source senza restrizioni d'uso. Esattamente questa proprietà di R permette a R di afferrare la leadership mondiale dai precedenti leader a pagamento - SAS, SPSS, bene anche il linguaggio confuso di Python.

Non per niente circa un anno fa Microsoft è entrata in R acquisendo una variante a pagamento di R - revolution analytics - in proprietà e ora la sta promuovendo attivamente.

 
СанСаныч Фоменко:
Il calcolo parallelo è una cosa molto avanzata, ha un sacco di pubblicazioni, per esempio attac.
Grand merci.