PRINCIPAIS IDE’S para R

programming

         Editores são programas de computadores que permitem criar e modificar textos planos. Como exemplo, podemos citar Notepad, Gedit, Vim, Emacs, entre outros .

          O R oferece um simples editor por padrão (Vi no Linux e Notepad no Windows) que permite ao usuário criar um documento de texto onde poderá escrever comandos, editá-los, enviá-los para processamento no console e salvá-los para uso posterior ou compartilhamento.

         Editores têm a vantagem de serem leves e de fácil aprendizagem, porém possuem como desvantagens ausência de ferramentas que tornem o trabalho do programador mais eficiente e agradável. Para esse fim, foram criados os Ambientes de Desenvolvimento Integrados (no inglês IDE’s). O IDE é um software que integra ferramentas e características com o objetivo de fornecer apoio ao desenvolvimento dos softwares. O IDE ajuda entre outras coisas a depurar o código, gerenciar  e configurar projetos, controlar versão, atualizar pacotes, visualizar gráficos, indentar códigos, facilitar acesso a documentação, gerar relatórios, entre outros.

      No mundo R existem diversos IDE’s desenvolvidos com diferentes filosofias e objetivos. A existência desta variedade é importante, pois permite ao usuário encontrar um IDE que ajuste a sua maneira de pensar e ver o mundo, elevando a sua produtividade. Por isso, a escolha do editor é uma questão pessoal. O melhor editor deve ser aquele que torne mais eficiente a realização do trabalho e que não roube o papel de protagonista das ideias.

          No post de hoje apresento uma lista com os principais IDE’s existentes para R com os links para suas respectivas páginas. Alguns IDE’s R-Dedicados oferecem toda a sua funcionalidade em um único software e outros de uso mais geral, necessitam da instalação de plugins que o capacitem a trabalhar com a linguagem R.

links para  discussão sobre o tema:

http://nbcgib.uesc.br/lec/llec/avale-es/editor-gui-ide

https://www.kdnuggets.com/polls/2011/r-gui-used.html

Editores dedicados ao R

Editores de uso geral

Anúncios
Publicado em Dicas R | Marcado com , , , , | Deixe um comentário

Nova Versão R liberada

stupidDarkness

O R team anunciou no último dia 21/04 a última versão do R codinome “You stupid Darkness”. Esta versão tem focado em melhoria da performance do R. Você pode acompanhar as principais mudanças aqui.  Atualização para a nova versão pode ser feitas conforme dicas já postadas aqui.

Mais informações podem ser encontradas aqui

Até a próxima dica.

Publicado em Regressões | Deixe um comentário

Medindo Área de Olho de lombo por imagens digitais – Integrando ImageJ e R

ezgif.com-optimize

A área do músculo Longissimus dorsi (Área de olho de lombo, AOL), é um importante indicador da qualidade e composição dos cortes da carcaça, sendo muita utilizada nos processos de seleção genética e avaliação de planos nutricionais e manejo. A medida da AOL pode ser realizada por diferentes métodos, sendo o ultrassonográfico, geométrico e grade  os mais comuns.

É possível medir a AOL através de fotografias digitais do corte, através  do processamento de imagens digitais (PID). Esse método apresenta características do método grade e ultrassonográfico e possui vantagens relacionados a acurácia, redução de erros relacionados ao desenho ou contagem de pontos internos e da borda (método grade), baixo custo, repetibilidade de leitura.

No post de hoje vou mostrar como medir a AOL através de processamento de imagens utilizando o software ImageJ e o editor Bio7, para posterior análise no R.

O software ImageJ é uma poderosa ferramenta Open Source e gratuita, desenvolvida para análise de imagens científicas digitais. Com essa ferramenta é possível medir a área ,distância ,ângulos, contagens, além dos processamentos comuns como transformações geométricas (mudanças de escla, rotações e giros), zoom, histrogramas, processamento de cores , etc.

Bio7 é um ambiente de desenvolvimento integrado, baseado no famoso editor Eclipse (muito comum entre desenvolvedores Java), que oferece uma série de ferramentas para desenvolvimento de modelos, análise de imagens científicas e análise estatística no R. é possível como o Bio7 integrar consoles R, Python, Java, Groovy, Jython, BeanShell, criar e visualizar modelso 3d OpenGL entre outros.  Ademais as características citada, a que nos interessa para o post de hoje é a possibilidade de transferir os resultados das análises realizadas como o software imageJ para o R diretamente através do Bio7. Essa possibilidade torna a experiência de medir a AOL e analisar os resultados no R workspace, bem mais rápida e agradável.

Passos para realização da análise

  1. Preparo das Imagens

Ao retirar as fotografias alguns cuidados são necessários para que as medidas da AOL realizadas na fotografia sejam fiéis as medidas tomadas no objeto real.  As principais medidas a serem tomadas são:

  •  Evitar fotos tremidas, desfocadas  ou muito distantes do objeto a ser medido
  • A câmera deve estar em linha reta (Formar um ângulo de 90º) com a AOL a ser fotografada. Evite angulações entre a linha da câmera e a face do músculo.
  • fotografia
  • Um objeto de comprimento conhecido deve compor a foto e deve ser colocado no mesmo plano (mesma distância da câmera que o objeto a ser fotografado) da AOL a ser fotografaca. Esse objeto pode ser uma régua ou qualquer outro objeto cuja dimensão seja conhecida. Nas imagens abaixo a foto da esquerda está incorreta, pois o objeto de dimensão conhecida (fita verde) e o objeto a ser analisado (AOL) não encontram-se a mesma distância da câmera fotográfica. A fotografia da direita está correta, pois o objeto de dimensão conhecida e a AOL encontram-se a mesma distância da câmera.

    2. Instale o Bio7

  • Baixe o Bio7: http://bio7.org/
  • Descompacte (extraia) o arquivo Bio7 no diretório de sua escolha
  • Clique no arquivo executável Bio7 (o programa ja está compilado e pronto para execução)

link para o vídeo com instruções: https://www.dropbox.com/s/puh6h3dmkwx1k0p/bio7a.mp4?dl=0

3. Instale o ImageJ

4. Instale o R package  {Rserve}

install.packages ("Rserve")

5. Obtendo a medida da AOL

Para medir a AOL siga os passos do vídeo que preparei:

https://www.dropbox.com/s/irprczod0a9g7ka/AOL4.mp4?dl=0

No vídeo utilizo imagens da AOL de diferentes espécies (suíno, bovino e caprino) para mostrar a dinâmica da realização. As imagens foram retiradas aleatoriamente da internet e atendem aos requerimentos necessários para análise. Porém  não disponho das medidas obtidas por outros métodos (grade, ultrassom) para comparação. Procedimento semelhante no entanto foi avaliado por Ferreira et al (2012), porém esses autores avaliaram o desenho escaneado da AOL sobre papel milimetrado e análise em software de processamento de imagens e compararam com outros métodos (Grade e Geométrico) encontraram alta acurácia e precisão das estimativas da AOL sendo por isso recomendado.  No método proposto nesse post a medida é tomada diretamente sobre a imagem da AOL, eliminando as etapas de desenho e escaneamento, reduzindo a chance de erros, aumentando a praticidade e rapidez das medidas.

basicamente o processo constitui de 4 partes

  1.  Abrir o modo ImageJ do Bio7 e importar a imagem a ser analisada
  2. Ajustar a escala de análise do ImageJ, informando o tamanho real do objeto de tamanho conhecido que compõe a imagem
  3.  Selecionar a área da imagem que deseja ser medido e ordenar ao software que obtenha a área
  4. Transferir o resultado para o workspace do R para análise

Espero que tenham gostado.

Até a próxima dica.

 

 

Publicado em Aplicacao, Dicas R | Deixe um comentário

R 3.3.3 (“Another Canoe”) liberada

364b69eeee7c69f38a1a46653d243cdeNova atualização do software R 3.3.3  codenome “Another Canoe” foi liberada.  Vocês podem atualizar  aqui.

Informações sobre mudanças nesta última atualização podem ser vistas aqui.

Publicado em Regressões | Deixe um comentário

Venha aprender R!

Cursos de introdução e análise de experimentos através da linguagem R.

Cursos presenciais a distância via web conferências ( Aprenda no conforto de sua casa!), flexibilidade de dia e horários.

Aprenda de maneira dinâmica, praticando as habilidades recém adquiridas.

Ensino através de exercícios voltados a seus interesses  e  orientações personalizadas.

postercursor

Publicado em Regressões | Deixe um comentário

Nova versão do R Liberada

O CcharliebrownRAN recentemente anunciou o lançamento da última atualização do R 3.3.2 sobre o codenome “Sincere Pumpkin Patch”. Este codenome foi inspirado pela data de liberação da atualização que coincidiu com o dia das bruxas (31/10), fazendo referência  ao vídeo de charlie brown “It’s the Great Pumpkin“.  Essa liberação não vem acompanhada de muitas modificações significativas em relação à anterior 3.3.1, as modificações podem ser vistas aqui. Atualizações para a nova versão podem ser feitas conforme as seguintes intruções

Publicado em R Notícias | Deixe um comentário

Meta análise Nutrição animal (Abordagem R do Artigo St Pierre (2001))

meta-analiseEm 2001 N.R St-Pierre publicou uma revisão a convite do periódico Dairy Science intitulada “Integrating Quantitative Findings from Multiple Studies Using Mixed Model Methodology” onde discorreu sobre  o uso de meta-análise para integrar achados científicos. O artigo foi muito bem aceito pela comunidade científica, segundo dados do site scopo preview, houve 322 citações desse artigo. No Brasil, alguns artigos elaborados foram baseados nessas recomendações (Azevedo et al,2010,Vieira et al,2013, Souza,2013).

Embora a meta análise seja algo muito mais complexo que o expresso no artigo e os comandos apresentados não devem ser utilizados roboticamente, ou seja, como uma receita de bolo, esse artigo possui um elevado valor didático para quem quer iniciar seus estudos sobre a técnica de meta anáise.

Acessei esse artigo em 2011, naquela época queria refazer os comandos do artigo no software R, pois estava iniciando o interesse pela meta-análise. No início tive dificuldades, pois não chegava aos mesmos resultados do artigo o que esfriou o projeto de refazê-lo. Logo, descobri que o banco de dados que o autor apresenta ao final do artigo não era o mesmo utilizado para gerar os resultados. Agradeço, ao amigo Luigi Cavalcanti por ter conseguido o banco de dados correto com o pŕopio St Pierre.

Recentemente, encontrei o R-script que havia feito na época e  decidi finalizá-lo e compartilhá-lo aqui no blog, na esperança que aqueles que se interessam também pela meta-análise possam iniciar seus estudos utilizando o R.

Há muitas mais coisas  para se discutir sobre meta análise além do que está no artigo em questão. Assim, pretendo em posts futuros discutí-los no blog.

No post de hoje mostrarei os principais comandos do artigo e as peculiaridades do R para se chegar aos resultados.

Até o próximo post!

#--------------------Pacotes utilizados-------------------------
#  install.packages(c("nlme","car","multcomp","lattice"))
library(nlme)
library(car)
library(multcomp)
library(lattice)
library(lmmfit) #Este arquivo foi removido do repositorio CRAN. Para instalá-lo baixe a versão
#antiga neste endereço: "https://cran.r-project.org/src/contrib/Archive/lmmfit/" e instale-o
#No linux: install.packages("~/Downloads/lmmfit_1.0.tar.gz", repos = NULL, type = "source") ou
# No windows: install.packages("c:\users\nome do usuário\Downloads/lmmfit_1.0.tar.gz", repos = NULL, type = "source")
#Substitua "nome do usuário" pelo nome de usuário do seu sistema.
#----------------------------------------------------------------------------------
DATA<-read.csv("https://www.dropbox.com/s/hibr0cfu91u6xxz/St_Pierre.csv?raw=1")
dados<-groupedData(Y~X|Study,data=DATA)
Lista<-lmList(Y~X,data=dados)
Lista # lista os parametros das regressões
#-------------------------------------------------------------------------------------------#
xyplot(Y~X,DATA) # Gráfico 2a
xyplot(Y~X, groups=Study,type="l",auto.key=list(space="right",title="Estudo"),DATA) #Grafico 2b
#################################################################################
# Modelo que não leva em consideração o efeito dos estudo
#################################################################################
#-------------------------------Figura 3-----------------------------------------
RegSimples<-gls(Y~X,data=dados)#considera os efeitos fixos sem considerar o efeito do estudo
summary(RegSimples)
anova(RegSimples,type="marginal",adjustSigma=F) # Soma de quadrado tipo III
anova(RegSimples,type="sequential",adjustSigma=F) # Soma de quadrado tipo I (sequencial)

#---------------------------------------------------------------------------------------
#Alguns gráficos úteis para avaliar o modelo
#---------------------------------------------------------------------------------------
#Residuos por estudo não estão centrados em zero
plot(RegSimples,Study~resid(.),abline=0,id=0.05,adj=-0.3)
# Gráfico útil para observar onde se encontram os efeitos aleatórios.
# Efeitos aleatórios associados ao intercepto e inclinação (intervalos não se sobrepoem)
plot(intervals(Lista2))

#------------------------------R2 modelo gls ---------------------------------------
#---------------------Função permite estimar o R2 para objetos gls------------------
R2<-function(gnls.obj){
da<-eval(getData(gnls.obj)[,1:2])
resp.name<-all.vars(formula(gnls.obj))
form<-paste(resp.name, "~1", sep="")
m0 <-lm(form, da)
sqn <-sum(resid(gnls.obj)^2)
sqe <-deviance(m0)
r2 <-1-(sqn/sqe)
return(list(R2=r2))
}

R2(RegSimples)
#--------------------------------figura 4 e 5--------------------------------------
plot(RegSimples,Y~X,xlim=c(0,12),ylim=c(-4,20),key=list(corner=c(0.10,0.90),text=list(c("y=a+bx (a=0,b=1)","Y=-5.187620 + 1.959493.X","R²=0.79")),lines=list(lty=c(2,1,0),col=c(1,2,0))),
panel = function(x, y,...) { # Figura 4
panel.xyplot(x,y, ...)
panel.lmline(x,y,col=2,...)
panel.abline(a=c(0.0,1.0),lty=2)
})

plot(RegSimples,resid(.)~X,abline=0,ylab="Predito-Observado",xlab="Predito")#Figura 5
#############################################################################
# Modelo considera o efeito do estudo fixo
################################################################################
#Por padrão o contraste do R é o contr.treatment o qual compara os níveis dos tratamentos
#com o nível base (o primeiro nível). Ele difere do tipo de contraste utilizado
#pelo software SAS, o qual utiliza como base de comparação o último nível ( e não o primeiro
#como ocorre no R). Entender o tipo de contraste utilizado por cada software é importante pois
# impede erros de interpretação dos resultados. Por questões didáticas, modificaremos o tipo
#de contraste padrão do R (função options) para fatores ordenados para "contr.SAS" (o padrão é contr.poly).
#=========================Análise e Resultado (Figura 6)================================
options(contrasts=c(factor="contr.SAS",ordered="contr.SAS"))
RegFixo<-gls(Y~X*Study,data=dados)
(resultado<-summary(RegFixo,verbose=TRUE))
(anovaIII<-anova(RegFixo,type="marginal",adjustSigma=FALSE))
(anovaI<-anova(RegFixo))
R2(RegFixo)
#---------------------------------------------------------------------------------
#-------Obter estimativas do intercepto e inclinação média por estudo--------
#--------------------------------------------------------------------------------
m0 <-gls(Y~0+Study/X,dados)
(LSMEANS<-summary(m0)) # Estimativas de inclinações (efeito de X) para cada estudo
## Matriz de pesos.
#--------------------------------------------------------------
# Estima o intercepto global e testa se seu valor é igual a zero
m<-rbind(rep(1, nlevels(dados$Study))/nlevels(dados$Study))
## Intercepto médio.
X <-cbind(m, 0*m)
GlobIntercept<-summary(glht(m0, linfct=X,rhs=c(0)), test=adjusted(type="none"))
#-------------------------------------------------------------
## Estima a inclinação global e testa se o valor é igual a 1
X1&lt;-cbind(0*m, m)
GlobSlope<-summary(glht(m0, linfct=X1,rhs=c(1)), test=adjusted(type="none")) #Testa se a inclinação do modelo
# é igual a zero.
#---------------------Resultados da figura 6-------------------------------------------------
(Figura6<-list(AnovaI=anovaI,AnovaIII=anovaIII,Resultado=resultado,Médias=LSMEANS,Intercepto_Global=OverIntercpt,Inclinação_Global=OverSlope))
#==================================================================================================
#-------------------------------Não tem no artigo--------------------------------------------------
# Compare este gráfico com o gráfico do modelo anterior. Veja como os resíduos estão mais centrados em zero
plot(RegFixo,Study~resid(.),abline=0,id=0.05,adj=-0.3)
plot(RegFixo,resid(.)~X,abline=0,ylab="Predito-Observado",xlab="Predito")
#--- Compare os modelos pelo AIC (menor melhor), modelo RegFixo preferível-----
anova(RegSimples,RegFixo)
#=====================================fim do resultado (figura 6)===============================
#===============================================================================================
#################################################################################
# MODELO CONSIDERA O EFEITO DO ESTUDO ALEATÓRIO
#################################################################################

# Método gráfico utilizado para determinar qual parâmetro do modelo deve ser incluído no modelo
#aleatório. Repare que os intervalos de confiança obtido para cada estudo não se
#sobrepoem para o intercepto e inclinação, indicando que tanto o intercepto quanto a inclinação devem ser incluídos no modelo aleatório
plot(intervals(Lista))
#---------------------Resultado (Figura 7)--------------------------------
RegMisto<-lme(fixed=Y~1+X,control=controle,random=~X|Study,data=dados,method="REML")
summary(RegMisto,verbose=T)
anova(RegMisto,type="marginal") #anova tipo II
R2(RegMisto)
#Figura 10
plot(RegMisto,fitted(.)~X,id=0.05,adj=0.3,key=list(corner=c(0.10,0.90),text=list(c("Y=-0.61(SE=0.56) + 1.097(SE=0.056).X","R²=0.99"))),
panel = function(x, y,...) {
panel.xyplot(x,y, ...)
panel.lmline(x,y,col=2,...)
})

#--------------------------Avaliação dos resíduos-----------------------------------------
plot(RegMisto,Study~resid(.),abline=0,id=0.05,adj=-0.3)
plot(RegMisto,resid(.)~X,abline=0,ylab="Predito-Observado",xlab="Predito")
#---------------Comparação entre os modelos------------------------------------------------
anova(RegSimples,RegFixo,RegMisto)
#Ops! Ao que parece para esses dados considerar efeito fixo do estudo leva a um
#modelo melhor que o modelo de efeito misto. Este com certeza não era o resultado esperado por St.Pierre
#mas como ele não compara os diferentes modelos em seu artigo, tal fato deve ter passado despercebido no momento
#em que os dados sintéticos foram gerados.Esse fato no entanto não prejudica o valor didático do artigo
#----------------------------------------------------------------------------
# No tópico "Expansion e Reducion" pg 749, o autor fala sobre situações
#onde é possível componentes de variancia e não de covariância serem
#significantes. Nesta situação podemos elaborar um modelo mais simples
#o qual considera a covariância igual a zero. O pacote lme não possui
#um teste de covariância dos parâmetros conforme realizado pelo autor
#utilizando o SAS. Entretanto o pacote lmmfit através da função
#structStep() permite escolher a melhor estrutura da matriz de
#variância-covariância atráves do critério AIC para modelos com um nível
#de agrupamento.

structStep(RegMisto) # pdDiag selecionando, idicando ser os efeitos aleatórios independentes. Esta estrutura é equivalente a estrutura VC utilizada pelo SAS o qual considera diferentes variâncias entre os parâmetros e covariância igual a zero
RegMistoDiag<-lme(fixed=Y~1+X,control=,na.action=na.omit,random=pdDiag(form=~1+X),data=dados,method="REML")
summary(RegMistoDiag,verbose=TRUE)
anova(RegMisto,RegMistoWeight2) # embora o teste L.ration não seja estatisticamente diferentes o modelo 2 é preferível por ter menor AIC

Publicado em Dicas R, Meta-Análise, Regressões | 2 Comentários