Existe-t-il des exemples de packages R qui changent considérablement entre les versions, de sorte que les résultats d'une fonction statistique sont considérablement différents?

8

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.

Maiasaura
la source
1
La question est un peu vague. Pouvez-vous vous concentrer un peu plus?
Dirk Eddelbuettel
Oui, j'ai clarifié la question.
Maiasaura

Réponses:

6

J'ai eu des problèmes avec le package glmnetsur 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 de c("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 exemple predict.lognet).

Le problème avec ceci était: un objet que vous aviez créé avec une ancienne version de glmnetn'é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 un glmnetobjet 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 :-)

Nick Sabbe
la source
1
Pour répondre à qui enregistre des objets: oui. :)
Iterator
8

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()et sessionInfo(). 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.

John Colby
la source
1
+1 Grands conseils. J'ai déjà suivi un cours de didacticiel R où le code de l'instructeur a été écrit en utilisant une version plus ancienne de R que les ordinateurs du laboratoire du campus et il a fallu 30 minutes de débogage pour comprendre ce qui a changé dans les versions de points et comment le code du cours devait être modifié. Bien que certains logiciels soient peut-être trop obéissants à la compatibilité descendante, il ne m'a jamais frappé que ce serait une critique de R.
Josh Hemann
1
@JohnColby est correct - il est très important de pouvoir reproduire votre configuration, y compris les numéros de version des packages, et y compris les choses qui sont souvent négligées, comme les arguments passés aux fonctions (j'essaie de toujours utiliser des arguments nommés), le nombre aléatoire semences, les diverses dépendances externes, et plus encore. Quant à savoir si un package a affecté les résultats, la réponse est oui et plus large que ce à quoi vous pourriez vous attendre: même les packages d'E / S de base peuvent affecter les résultats si vous perdez des données. :) Vous risquez de perdre des données ou les données peuvent être modifiées d'une manière ou d'une autre si le comportement de chargement de fichier par défaut a changé.
Iterator
3

Juste un petit point:

  • L'écosystème du package R est très grand, et c'est vraiment à l'auteur individuel de décider s'il souhaite maintenir la compatibilité descendante.
  • Personnellement, je n'ai eu aucun problème avec les packages de base R changeant de manière à entraîner des problèmes de compatibilité descendante. En général, c'est une des raisons pour lesquelles je préfère utiliser les packages de base R.
Jeromy Anglim
la source
2

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.

Gala
la source