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.
Respostas:
Eu tive problemas com o pacote
glmnet
sobre 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 dec("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 exemplopredict.lognet
).O problema era: um objeto que você criou com uma versão antiga
glmnet
nã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 umglmnet
objeto 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 :-)
fonte
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()
esessionInfo()
. 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.fonte
Apenas um ponto rápido:
fonte
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.
fonte