Estoy tratando de entender cómo la gente usa los paquetes R y me preguntaba si hay casos documentados en los que los paquetes R hayan producido diferentes respuestas.
Aclaración: La motivación detrás de esta pregunta proviene de un esfuerzo en el que estoy involucrado, donde el objetivo es comprender la importancia de la procedencia en los métodos analíticos y cómo facilita la investigación reproducible. Si bien R es importante en la comunidad científica en la actualidad, y los paquetes de R están versionados en CRAN, sin información detallada [especialmente los números de versión], alguien que intente reproducir un cuerpo de trabajo en el futuro podría llegar a una conclusión diferente de que el trabajo original ( incluso con los datos originales).
Ejemplo: el documento de John Doe dice "utilizamos R 2.3.1 y el paquete glmulti para adaptarnos a nuestros modelos". Dentro de 10 años, alguien podría usar una nueva versión de glmulti (nadie sabe qué versión se usó en el original), lo que podría producir una conclusión muy diferente. Mi pregunta: ¿Ya hay ejemplos de que tal cosa suceda? La versión 2 o el paquete R produce un resultado muy diferente que la versión 1.
Respuestas:
He tenido problemas con el paquete
glmnet
sobre las versiones. Si mal no recuerdo, iba de la versión 1.5 a la 1.6, pero puedo estar un poco apagado.Los creadores / mantenedores de paquetes cambiaron el orden de las clases de sus objetos (por lo que se convirtió en
c("lognet", "glmnet")
lugar dec("glmnet", "lognet")
, o podría haber sido al revés). Por supuesto, también cambiaron todas sus funciones S3 para manejar esto adecuadamente (por ejemplopredict.lognet
).El problema con esto era: un objeto que había creado con una versión
glmnet
anterior no era compatible con las nuevas funciones (ya que el despacho funcionaba al revés). La mayoría de la gente no estaría en ese lugar (¿quién guarda unglmnet
objeto para su uso posterior?), Pero yo sí.Eso sí: este es un paquete muy poderoso, desarrollado por personas extremadamente inteligentes, por lo que podría pasarle a cualquiera :-)
fuente
Esto variará de paquete a paquete, pero la respuesta general es sí . Las salidas pueden variar, e incluso el uso básico también (argumentos de entrada / salida). Por eso, cuando hago un análisis importante, siempre me gusta documentar con qué versiones se usaron
version()
ysessionInfo()
. Incluso si las cosas cambian, las versiones antiguas se conservan en CRAN, por lo que puede obtener las versiones antiguas si las necesita.fuente
Solo un punto rápido:
fuente
En mi experiencia, la mayoría de los cambios crean el tipo habitual de problemas de computación / programación. Las funciones quedan obsoletas, los argumentos son diferentes, etc. Por ejemplo, ya me ocurrió que el código dejaría de funcionar porque algunas funciones requerían un argumento adicional. Esto puede ser molesto, pero el problema es obvio y generalmente no es demasiado difícil de resolver.
Algunos paquetes podrían mantenerse mejor a ese respecto, pero se aplican las "reglas" habituales del software libre: debe ver que es producido por voluntarios, a menudo estadísticos que tienen otras funciones y no desarrolladores de software profesionales a tiempo completo, y si la calidad y la confiabilidad es importante para usted, debe evitar cualquier cosa con un número de versión como 0.xy usar solo paquetes maduros con una comunidad activa de usuarios y desarrolladores.
Nunca me he encontrado con una actualización que resulte en cambios insidiosos de resultados estadísticos (por ejemplo, cambiar el método predeterminado en alguna función, cambiar el grado de libertad y el valor p mientras produce resultados superficialmente similares). Sin embargo, supongo que debe suceder, al menos a través de correcciones de errores (pero he leído en alguna parte que Microsoft realmente agregó código en sus nuevos productos para emular algunos errores más antiguos para evitar romper la compatibilidad con los programas que dependen de estos errores). Tal vez, algunos mantenedores nos pueden dar algunas ideas sobre la forma en que se manejan estas cosas para sus paquetes.
fuente