Abū ʿAlī al-Ḥasan ibn al-Ḥasan ibn al-Haytham (965 - 1040) Alhazen

Reprodutibilidade



sf (reprodutĂ­vel+i+dade) Qualidade de reprodutĂ­vel.




- Cientistas devem replicar seus experimentos

- Cientistas devem ser capazes de instruir outros pesquisadores a reproduzir seus experimentos

- Estabelecer a reprodutibilidade do experimento Ă© necessĂ¡rio para construir e testar teorias

Estamos tornando nossas pesquisas reproduziveis?

PIB

Maior experimento de reprodutibilidade jĂ¡ feito..


De 100 experimentos replicados sĂ³ 39 mantiveram as conclusões iguais…




Steve M. Easterbrook. Open code for open science? Nature Geoscience 7, 779–781 (2014) doi:10.1038/ngeo2283.

SoluĂ§Ă£o

  • Descrever os protocolos do experimento ou coleta em "detalhes"
  • Compartilhar os dados
  • Compartilhar as anĂ¡lises do trabalho…

Como nĂ£o compartilhar codigos…

Shapetransformator1.0<-function(arquivo,grid=as.data.'frame(0)){
  if(!is.matrix(grid)){
  grid(data=arquivo)->grid}  
  Data<<-nrow(teste2@data);  a<<-table(grid)
  a1<<-length(a);   n<<-nrow(grid)
  linhas<<-as.vector(n-a[1])-(a[a1]-1);resu<-matrix(0,nrow=linhas,ncol=Data+2)
  for(i in 1:Data){
    dados<-arquivo@polygons[[i]]@Polygons[[1]]@coords
    res<-trabalho(dados,grid)
    if(i==1){resu[,1:3]<-res}
    else{resu[,i+2]<-res[,3]      
    }}
  nome1<-as.vector(arquivo@data[,1])
  nomes<-c("longitude","latitude",nome1)
  colnames(resu)<-nomes
  resu<-unicas(resu)
  resu[,1]<-resu[,1]/2;   resu[,2]<-resu[,2]/2
  return(resu)
}

Broenimman et al 2012

# if PROJ = F
row.w.1.occ<-1-(nrow(occ.sp1)/nrow(rbind(occ.sp1,occ.sp2))) # prevalence of occ1
row.w.2.occ<-1-(nrow(occ.sp2)/nrow(rbind(occ.sp1,occ.sp2))) # prevalence of occ2
row.w.occ<-c(rep(0, nrow(clim1)),rep(0, nrow(clim2)),]
rep(row.w.1.occ, nrow(occ.sp1)),rep(row.w.2.occ, nrow(occ.sp2)))

row.w.1.env<-1-(nrow(clim1)/nrow(clim12))  # prevalence of clim1
row.w.2.env<-1-(nrow(clim2)/nrow(clim12))  # prevalence of clim2
row.w.env<-c(rep(row.w.1.env, nrow(clim1)),
             rep(row.w.2.env, nrow(clim2)),rep(0, nrow(occ.sp1)),rep(0, nrow(occ.sp2)))

fac<-as.factor(c(rep(1, nrow(clim1)),rep(2, nrow(clim2)),
                 rep(1, nrow(occ.sp1)),rep(2, nrow(occ.sp2))))

# if PROJ = T

row.w.occ.PROJT<-c(rep(0, nrow(clim1)),rep(0, nrow(clim2)),rep(1, nrow(occ.sp1)),
                   rep(0, nrow(occ.sp2)))
row.w.env.PROJT<-c(rep(1, nrow(clim1)),rep(0, nrow(clim2)),rep(0, nrow(occ.sp1)),
                   rep(0, nrow(occ.sp2)))





Como fazer isso?

Boas prĂ¡ticas

  • Deixe seus dados disponĂ­veis em um formato e modo que todos possam ter acesso ou forneça o link para base de dados utilizadas (inclusive se isso foi obtido por meio de um codigo)
  • Detalhe o seu cĂ³digo
  • Utilize um estilo padrĂ£o no cĂ³digo (https://google-styleguide.googlecode.com/svn/trunk/Rguide.xml)
  • Seja explĂ­cito sempre que uma decisĂ£o especĂ­fica foi tomada (parĂ¢metro, mĂ©trica, divisĂ£o dos dados…)
  • Forneça ao usuĂ¡rio um cĂ³digo flexĂ­vel para que ele possa tomar suas prĂ³prias decisões
  • Forneça ao usuĂ¡rio um cĂ³digo flexĂ­vel para que ele possa usar os prĂ³prios dados

Boas prĂ¡ticas

  • Avise quando vai demorar ou precisar de muita memoria.
  • DRY (Don't Repeat Yourself!) seu cĂ³digo
  • NĂ£o omita nada…
  • NĂ£o complique!
  • Teste seu cĂ³digo
  • Peça para alguĂ©m testar seu cĂ³digo

Compartilhe o resultado!