J'essaie de comprendre comment les gens utilisent les packages R et je me demandais s'il existe des cas documentés où les packages R ont produit des réponses différentes.
Clarification: La motivation derrière cette question vient d'un effort dans lequel je suis impliqué où le but de comprendre l'importance de la provenance dans les méthodes analytiques et comment cela facilite la recherche reproductible. Bien que R soit actuellement très présent dans la communauté scientifique et que les packages R soient versionnés dans CRAN, sans informations détaillées [en particulier les numéros de version], une personne essayant de reproduire un corpus de travaux à l'avenir pourrait arriver à une conclusion différente que le travail original ( même avec les données d'origine).
Exemple: Le papier de John Doe dit "nous avons utilisé R 2.3.1 et le paquet glmulti pour s'adapter à nos modèles". Dans 10 ans, quelqu'un pourrait utiliser une nouvelle version de glmulti (personne ne sait quelle version a été utilisée dans l'original), ce qui pourrait produire une conclusion très différente. Ma question: existe-t-il déjà des exemples d'une telle chose? La version 2 ou le package R produit un résultat très différent de celui de la version 1.
Réponses:
J'ai eu des problèmes avec le package
glmnet
sur les versions. Si je me souviens bien, cela passait de la version 1.5 à 1.6, mais je suis peut-être un peu hors tension.Les créateurs / mainteneurs de packages ont changé l'ordre des classes de leurs objets (il est donc devenu à la
c("lognet", "glmnet")
place dec("glmnet", "lognet")
- ou c'était peut-être l'inverse). Bien sûr, ils ont également changé toutes leurs fonctions S3 pour gérer correctement cela (par exemplepredict.lognet
).Le problème avec ceci était: un objet que vous aviez créé avec une ancienne version de
glmnet
n'était pas compatible avec les nouvelles fonctions (puisque la répartition fonctionnait dans l'autre sens). La plupart des gens ne seraient pas à cet endroit (qui garde unglmnet
objet pour une utilisation ultérieure?), Mais je l'étais.Attention: il s'agit d'un package très puissant, développé par des personnes extrêmement intelligentes, il pourrait donc arriver à n'importe qui :-)
la source
Cela variera d'un package à l'autre, mais la réponse générale est oui . Les sorties peuvent varier, et même l'utilisation de base aussi (arguments d'entrée / sortie). C'est pourquoi, quand je fais une analyse importante, j'aime toujours documenter quelles versions ont été utilisées avec
version()
etsessionInfo()
. Même si les choses changent, les anciennes versions sont conservées sur CRAN, vous pouvez donc obtenir les anciennes versions si vous en avez besoin.la source
Juste un petit point:
la source
D'après mon expérience, la plupart des changements créent le type habituel de problèmes informatiques / de programmation. Les fonctions sont obsolètes, les arguments sont différents, etc. Par exemple, il m'est déjà arrivé que le code cesse de fonctionner car certaines fonctions nécessitent un argument supplémentaire. Cela peut être gênant mais le problème est évident et généralement pas trop difficile à résoudre.
Certains packages pourraient être mieux entretenus à cet égard, mais les «règles» habituelles du logiciel libre s'appliquent: vous devez voir qu'il est produit par des bénévoles - souvent des statisticiens qui ont d'autres fonctions et non des développeurs de logiciels professionnels à temps plein - et si la qualité et la fiabilité est importante pour vous, vous devez éviter tout ce qui a un numéro de version comme 0.x et n'utiliser que des packages matures avec une communauté active d'utilisateurs et de développeurs.
Je n'ai jamais rencontré de mise à jour qui entraînerait des changements insidieux des résultats statistiques (par exemple, changer la méthode par défaut dans certaines fonctions, changer le degré de liberté et la valeur p tout en produisant des résultats superficiellement similaires). Je suppose que cela doit arriver cependant, au moins par le biais de corrections de bogues (mais j'ai lu quelque part que Microsoft a ajouté du code dans ses nouveaux produits pour émuler certains bogues plus anciens afin d'éviter de briser la compatibilité avec les programmes qui dépendent de ces bogues). Certains responsables peuvent peut-être nous donner des informations sur la façon dont ces choses sont gérées pour leurs packages.
la source