Existem exemplos de pacotes R mudando drasticamente entre as versões, de modo que os resultados de uma função estatística foram significativamente diferentes?

8

Estou tentando entender como as pessoas usam os pacotes R e queria saber se existem casos documentados em que os pacotes R produziram respostas diferentes.

Esclarecimento: A motivação por trás dessa pergunta vem de um esforço em que estou envolvido, onde o objetivo de entender a importância da proveniência nos métodos analíticos e como facilita a pesquisa reproduzível. Embora R seja grande na comunidade científica atualmente e os pacotes R sejam versionados no CRAN, sem informações detalhadas [especialmente números de versão], alguém que tentar reproduzir um corpo de trabalho no futuro poderá chegar a uma conclusão diferente de que o trabalho original ( mesmo com os dados originais).

Exemplo: O artigo de John Doe diz que "usamos o R 2.3.1 e empacotamos o glmulti para ajustar nossos modelos". Daqui a 10 anos, alguém poderá usar uma nova versão do glmulti (ninguém sabe qual versão foi usada no original), o que pode produzir uma conclusão muito diferente. Minha pergunta: já existem exemplos de algo assim? A versão 2 ou pacote R produz um resultado muito diferente da versão 1.

Maiasaura
fonte
1
A questão é um pouco vaga. Você pode focar um pouco mais?
Dirk Eddelbuettel 17/10/11
Sim, esclarei a pergunta.
Maiasaura

Respostas:

6

Eu tive problemas com o pacote glmnetsobre versões. Se bem me lembro, estava passando da versão 1.5 para 1.6, mas posso estar um pouco fora.

Os criadores / mantenedores de pacotes mudaram a ordem das classes de seus objetos (então, tornou-se em c("lognet", "glmnet")vez de c("glmnet", "lognet")- ou pode ter sido o contrário). Obviamente, eles também mudaram todas as suas funções S3 para lidar com isso adequadamente (por exemplo predict.lognet).

O problema era: um objeto que você criou com uma versão antiga glmnetnão era compatível com as novas funções (já que o envio funcionava de maneira inversa). A maioria das pessoas não estaria nesse local (quem salva um glmnetobjeto para uso posterior?), Mas eu estava.

Lembre-se: este é um pacote muito poderoso, desenvolvido por pessoas extremamente inteligentes, para que pudesse acontecer a qualquer pessoa :-)

Nick Sabbe
fonte
1
Para responder quem salva objetos: eu faço. :)
Iterator
8

Isso varia de pacote para pacote, mas a resposta geral é sim . As saídas podem variar e até o uso básico também (argumentos de entrada / saída). É por isso que, quando faço uma análise importante, sempre gosto de documentar com quais versões foram usadas version()e sessionInfo(). Mesmo que as coisas mudem, as versões antigas são mantidas no CRAN, para que você possa obter as versões antigas, se precisar delas.

John Colby
fonte
1
+1 Ótimos conselhos. Eu estive em uma aula de tutorial em R antes em que o código do instrutor foi escrito usando uma versão mais antiga do R do que os computadores do laboratório do campus e levou 30 minutos de depuração para descobrir o que mudou nas versões pontuais e como o código do curso precisava ser executado. ser modificado. Enquanto alguns software é talvez demasiado obedientes a compatibilidade com versões anteriores que nunca me ocorreu que isso seria uma crítica R.
Josh Hemann
1
@JohnColby está correto - é muito importante poder reproduzir sua configuração, incluindo números de versão do pacote e incluindo coisas que geralmente são ignoradas, como os argumentos passados ​​para as funções (tento sempre usar argumentos nomeados), o número aleatório semente, as várias dependências externas e muito mais. Quanto a se um pacote afetou os resultados, a resposta é sim e mais ampla do que você poderia esperar: até pacotes de E / S básicos podem afetar os resultados se você perder dados. :) Você pode perder dados ou os dados podem ser modificados de alguma forma se o comportamento padrão de carregamento de arquivos tiver sido alterado.
Iterator
3

Apenas um ponto rápido:

  • O ecossistema do pacote R é muito grande e depende realmente do autor individual, se eles pretendem manter a compatibilidade com versões anteriores.
  • Pessoalmente, não tive nenhum problema com os pacotes base R mudando de maneiras que levavam a problemas de compatibilidade com versões anteriores. Em geral, essa é uma das razões pelas quais eu prefiro usar pacotes base R.
Jeromy Anglim
fonte
2

Na minha experiência, a maioria das mudanças cria o tipo usual de problemas de computação / programação. As funções ficam obsoletas, os argumentos são diferentes etc. Por exemplo, já me ocorreu que o código pararia de funcionar porque alguma função exigia um argumento extra. Isso pode ser irritante, mas o problema é óbvio e geralmente não é muito difícil de resolver.

Alguns pacotes podem ser melhor mantidos nesse sentido, mas as “regras” usuais do software livre se aplicam: Você deve ver que ele é produzido por voluntários - geralmente estatísticos que têm outras funções e não desenvolvedores profissionais de tempo integral - e se a qualidade e Como a confiabilidade é importante para você, evite qualquer coisa com um número de versão como 0.xe use apenas pacotes maduros com uma comunidade ativa de usuários e desenvolvedores.

Eu nunca encontrei uma atualização que resultaria em mudanças insidiosas de resultados estatísticos (por exemplo, alternar o método padrão em alguma função, alterar o grau de liberdade ep valor enquanto produz resultados superficialmente semelhantes). Eu acho que isso deve acontecer, pelo menos através de correções de bugs (mas li em algum lugar que a Microsoft realmente adicionou código em seus novos produtos para emular alguns bugs mais antigos, a fim de evitar a quebra de compatibilidade com programas que dependem desses bugs). Talvez alguns mantenedores possam nos dar algumas dicas sobre como essas coisas são tratadas em seus pacotes.

Gala
fonte