Pesquisa em pacotes matriciais - página 3

 
Alexey Volchanskiy:

Ótimo, é meu primeiro dia de aprendizado R, responda as perguntas por favor, quero comparar as características R e Matlab. Mas não hospede hostilidade, seja razoável e calmo :).

  1. R é um idioma com capacidades OOP?
  2. Posso usar R para fazer uma dll de 32 e 64 bits para uso direto da MQL4/5? Em caso afirmativo, que tamanho de pacote devo instalar para usar estas dlls no computador do meu usuário?
  3. Posso conectar dlls comuns para acesso direto da R?
  4. Existe um análogo de Simulink em R?
  5. Por que todas as revisões enfatizam que R é um programa de estatísticas? Estou interessado em DSP, R tem pacotes para processamento de sinais digitais?
  6. O R tem um formato compacto incorporado para armazenar dados, semelhante aos arquivos .mat do Matlab?

1. Sim. Comparar diferentes linguagens de programação não é uma tarefa fácil, pois usar algumas ferramentas e não usar outras é muitas vezes uma questão de gosto do programador.

Não sou especialista em R, mas vou mencionar isto:

R não tem o conceito de um "escalar". É um vetor de comprimento 1. Ou seja, a aritmética é baseada em operações matriciais. uma linha de código C= A+B pode chamar uma operação matricial

em R a noção de "objeto" é levada a sua conclusão lógica: pode ser um vetor, uma matriz, uma matriz de programas e em geral o ambiente no qual um programa de usuário é executado.

Em R é bastante fácil escrever programas que não só carregam os processadores e núcleos do computador de execução, mas também os computadores vizinhos na rede local.

...

2. Meus conhecimentos são insuficientes para uma resposta. Aparentemente você não pode. Isto decorre das especificidades da própria construção do R, que é um intérprete quando encontrado pela primeira vez. Mas esta é uma visão superficial. O fato de R ser uma simbiose com uma interface bem documentada com C. A potência principal de R são os pacotes (mais de 7000 mil, contendo cerca de 120 mil funções), e estes pacotes são geralmente referências a programas em C ou Fortran. A questão é que a R usa bibliotecas C e Fortran para todas as operações computacionalmente intensivas.

Muita atenção ao R é dada aos APIs, mas além das minhas qualificações

3. Sim

4. Acho que não. Há uma série de ferramentas disponíveis (exceto as de prateleira) para a construção de GUIs, embora não seja isso. Neste parágrafo, quero mencionar ferramentas amplamente desenvolvidas em R, que estão ausentes nas linguagens de programação usuais: são métodos de teste de modelos estatísticos. As ferramentas para processar os resultados dos testes estatísticos são muito desenvolvidas e avançadas. Em R você pode responder facilmente à pergunta: "Em que medida o meio difere da expectativa matemática para uma amostra de 100 observações"?

5. A estatística, no sentido amplo da palavra, é uma característica do R. Não se esqueça das ferramentas gráficas, que são fundamentais quando se trabalha com estatísticas. Para obter uma visão geral das ferramentas R abra o site, há compilações temáticas de pacotes.

6. Não se pode fazer uma comparação. Mas existe o "bytecode". Mas a questão é diferente. Um programa em R que contém vários milhares de linhas de código é exótico. Um programa R comum é uma chamada de função de pacote.

 
Alexey Volchanskiy:
Devo tentar traduzir alguns de meus programas em Matlab para R, para comparar a velocidade. Se eu tiver tempo de descobrir durante o fim de semana, eu o farei e me comunicarei de volta. O Matlab é bastante lento, faço muitas coisas em C# ou C++ e o conecto como uma DLL para velocidade.

O próprio R é três vezes retardado. É um intérprete. Sem problemas com a depuração, no início comecei a usar o depurador e depois descobri que não adiantava.

Falando em velocidade R, há várias considerações aqui.

1. você pode traduzi-lo em código byte, mas é uma cataplasma

2. não esqueçamos que os pacotes para operações computacionalmente intensivas utilizam bibliotecas, que foram escolhidas com rapidez em mente

3. Uma biblioteca é usada para operações de matriz.

4. Os operadores de loop não são necessários para operações de matriz

5. Carregamento de todos os núcleos. Padrão e muito simples onde quer que o algoritmo permita.

Geralmente, comparar programas simplesmente reescrevendo de idioma para idioma funciona se seu conhecimento de ambos os idiomas for o mesmo.

 
Alexey Volchanskiy:
Devo tentar traduzir alguns de meus programas para R em Matlab, para comparar a velocidade. Se eu conseguir descobrir até o fim de semana, eu o farei e o informarei sobre o que acontece. O Matlab é bastante lento, faço muitas coisas em C# ou C++ e o conecto como uma DLL para velocidade.

Veja, se você vai contar algo não trivial, vai estar usando um pacote. Se o pacote estiver escrito em 'pluses', ele voará. Caso contrário, pode rastejar.

Verificado pela experiência: se você tentar percorrer os elementos do data.frame (que é um array que pode conter uma mistura de tipos de dados) e calcular algo sobre eles, pode ser Extremamente longo. R é muito lento para fazer cálculos em grandes matrizes, a menos que sejam usadas embalagens especiais.

Mas há sempre alguma biblioteca, onde o cálculo que eu preciso já está implementado, e eu posso chamar, por exemplo, rollapply(x$V1, média) e calcular médias móveis em todos os elementos, em vez de uma conversão cansativa de array, elemento por elemento.

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


5. Carregar todos os núcleos. Padrão e muito simples onde quer que o algoritmo permita.


SanSanych, você poderia esclarecer isso? Estávamos sondando o paralelismo em R e chegamos a uma conclusão clara de que ele carrega um núcleo (parece uma carga de 25% em todos os 4 núcleos), a menos que o pacote especial preveja o contrário.
 
СанСаныч Фоменко:

O próprio R é três vezes retardado...


Então qual é o escopo deste software? Para analisar um sortimento eficiente para uma boutique que vende produtos de consumo chineses?
 
СанСаныч Фоменко:

... A potência principal do R são pacotes (mais de 7000 mil, contendo cerca de 120 mil funções)...

E quantos pacotes e funções são necessários e suficientes para obter um lucro estável?

Que software vamos dominar a seguir, se R não conseguir lidar com ele?

 
Alexey Burnakov:
SanSanych, você poderia esclarecer isso? Estávamos sentindo paralelismo em R e chegamos a uma conclusão clara de que ele carrega um núcleo (parece uma carga de 25% em todos os 4 núcleos), a menos que estipulado de outra forma no pacote especial.
A computação paralela é uma coisa muito avançada e tem muitas publicações, por exemplo, attac.
Arquivos anexados:
parallel.zip  387 kb
 
Dmitry Fedoseev:

Qual é, então, o escopo deste software? Para analisar um sortimento eficaz para uma boutique que vende bens de consumo chineses?

Por favor, leia meu post em sua totalidade.

Para acrescentar.

Quando eu estava escrevendo sobre R em si, não se esqueça que o verdadeiro código R consiste apenas em uma pequena parte do texto R em si.

O exemplo mais simples.

Encaminhamento: A=B.

Se A e B são escalares, é provável que o código em MKL seja mais rápido.

Mas não há escalares em R: A e B são pelo menos vetores. Em MCL são ciclos, em R é escrito sem nenhum ciclo e implementado como parte de um pacote, o cálculo matricial de hoje, que é de primeira linha em eficiência. E se você comparar R e MCL em termos de cálculos de matriz, R é fundamentalmente mais eficiente.

É um princípio geral do R usar pedaços de código eficiente de prateleira que não foi escrito em R - geralmente em C, se não houvesse bibliotecas especializadas de prateleira disponíveis.

Conclusão: R é computacionalmente eficiente ao utilizar sub-rotinas internas e computação paralela

 
Event:

E quantos pacotes e funções são necessários e suficientes para obter um lucro estável?

Que software vamos dominar a seguir, se R não for suficiente?

Para as necessidades de um comerciante individual, temos um software redundante.

Hoje R é o software de ponta no campo da estatística em sentido amplo. Por exemplo, os métodos de aprendizagem de máquinas, que tradicionalmente são atribuídos à inteligência artificial, estão amplamente representados no R.

Há outra nuança.

O último zumbido no campo vem na forma do pacote R. E aqui está o porquê. Atualmente, as publicações científicas na área de estatística, além das fórmulas, geralmente contêm código em R, um sinal de bom mauvais ton, por assim dizer. E do código R em um artigo para um pacote completo dentro de R é um passo.

Para acrescentar a isto, qualquer coisa relacionada ao R é um encontro mundial. Colocar um pacote nos repositórios R torna o autor de um pacote dentro de R uma celebridade mundial. R é um sistema livre, de código aberto, sem restrições de uso. Exatamente esta propriedade de R permite que R agarre a liderança mundial dos líderes pagos anteriormente - SAS, SPSS, bem como a linguagem confusa de Python.

Não é à toa que há cerca de um ano a Microsoft entrou no R ao adquirir uma variante paga de R - análise de revolução - em propriedade e agora a está promovendo ativamente.

 
СанСаныч Фоменко:
A computação paralela é uma coisa muito avançada, tem muitas publicações, por exemplo, attac.
Grande misericórdia.