====== Programação de métodos estatísticos integrando as linguagens C e R ====== ==== Resumo ==== Minicurso (INFORMAL) sobre programação envolvendo e combinando as linguagens C e R. Será mostrado como pode-se escrever programas em C, utilizando procedimentos e rotinas do R (e ainda de outras bibliotecas como LAPACK etc).\\ Como exemplo serão mostrados como implementar alguns métodos e operações úteis e comuns em estatística.\\ Em resumo, o objetivo é fazer um cálculo em C com argumentos declarados em R. Por exemplo, procedimentos iterativos (for, while, repeat) são mais eficientes em C. Podemos programar um procedimento desses em C, gerar uma biblioteca dinamica e usa-la a partir do R, bastando chamar a funcao C e passar os argumentos como ponteiro. Eventualmente o procedimento que vamos programar em C requer uso de funções de cálculos mais avançados, tais como inversão de matrizes, geração de números aleatórios, optimização, etc. Para isso, usamos bibliotecas R escritas em C, que fazem esses cálculos, dentro do nosso programa em C. ==== Tópicos ==== Os tópicos abordados no curso podem serão divididos em 3 aulas: - aula 1 - soma e media de vetores - outer e produto matricial - aula 2 - geracao de numeros aleatorios e calculo de probabilidades - analise de regressao linear simples - modelo de regressao de poisson - numeros aleatorios da distribuicao normal multivariada - aula 3 - determinante e inversao de matrizes - densidade da distribuicao normal multivariada - exemplo de MCMC - chamando funcao R a partir do C++ ==== Instruções aos interessados ==== * trazer notebook (se possuir) * **se usuário de Linux:** instalar os pacotes necessários. Para Debian/Ubuntu & outros que usam APT: apt-get install r-base r-base-core r-base-dev r-mathlib r-recommended lapack3-dev gcc gfortran OBS: Se não houver habilitação para pacotes dev no seu computador, substitua lapack3-dev por lapack3 * **se usuário de Windows:**\\ ter instalado o R e o Rtools (ver instruções para instalar o Rtools na [[http://www.murdoch-sutherland.com/Rtools/|Página do Rtools]]). \\ * OBS1: O Rtools contém: * Perl (in Rtools.exe) * The command line tools (in Rtools.exe), necessário devido a pobreza de funcionalidades via comandos do Windows * The MinGW compilers (in Rtools.exe) * OBS2: É trabalhoso configurar o ambiente em Windows: Instalar Rtools e configurar a variável de ambiente. \\ Portanto, procure fazer isso antes. Veja instruções em [[http://cran.r-project.org/doc/manuals/R-admin.html#The-Windows-toolset|Windows toolset]] ==== Material ==== AULA 1 * {{seminarios:rc.pdf|Introdução}} Vejam como é simples chamar uma função em C no R. * {{seminarios:somas.c|Arquivo 1}} soma de vetores, outer e produto de matrizes * {{seminarios:somas.r|Arquivo 2}} exemplos usando arquivo anterior * {{seminarios:rprod.r|Arquivo 3}} função naive(não eficiente) para produto matricial em R AULA 2 * {{seminarios:randensprobs.c|Arquivo 1}} exemplos com geradores de números aleatórios, cálulo de densidades, quantis e probabilidades * {{seminarios:ranprob.r|Arquivo 2}} exemplos usando anterior * {{seminarios:myrmvnorm.c|Arquivo 3}} gerador de amostras da Normal Multivariada * {{seminarios:myrmvnorm.r|Arquivo 4}} exemplos usando anterior * {{seminarios:mycregress.c|Arquivo 5}} Regressão linear simples em C * {{seminarios:regressao.r|Arquivo 6}} exemplo usando anterior * {{seminarios:mypoissregress.c|Arquivo 7}} Regressão Poisson em C * {{seminarios:rcar.r|Exericicio}} Para casa AULA 3 * {{seminarios:aaaaa.zip|Arquivo 1}} e {{seminarios:meupacoteteste.zip|Arquivo 1 B}} Arquivo de código fonte de pacote exemplo e compilado * {{seminarios:testes.r|Arquivo 2}} teste do pacote * {{seminarios:geomcmcteste2.r|Arquivo 3}} implementação em R do MCMC implementado em C * {{seminarios:dotcall.c|Arquivo 4}} chamada de função R em C * {{seminarios:dotcall.r|Arquivo 5}} exemplos usando anterior Adicional: Usando r-mathlib em programas C standalone \\ Basta ter os dois arquivos abaixo num diretorio \\ (verificar se os locais do Rmath.h e libRmath.so estão referenciados corretamente)\\ compilar com make * {{seminarios:foo.c|Fonte}} Arquivo fonte com exemplo extraido [[http://www.stat.umn.edu/~charlie/stand/|daqui]] * {{seminarios:makefile.txt|Makefile}} que utilizei (estat .txt pq o wiki n aceitou sem extensão) ===== Participantes ===== [[:seminarios:minicursorc:participantes|Lista de participantes do curso]] ===== Outras informações ===== - **Incrições:** * email to ''paulojus AT leg.ufpr.br'' - **Promoção:** [[http://www.leg.ufpr.br|LEG]] - **Agradecimento especial:** Paulo Justiniano Ribeiro Junior