Sin acceder al código, ¿cómo puede un revisor confirmar si los resultados de la simulación son correctos?

He estado revisando los artículos de varias revistas y conferencias de primer nivel durante los últimos años. Después de todas estas experiencias, puedo decirle que no hay forma de confirmar la exactitud de los resultados de la simulación. Por lo tanto, suelo hacer comentarios sobre diseño, procedimiento, análisis matemático y analítico.

En la sección de resultados, puedo hacer algunas preguntas sobre por qué esto o aquello es así, pero ¿cómo puedo juzgar si la simulación se realizó realmente o si estos son solo gráficos fabricados?

Esta pregunta me vino a la mente porque observé en pocas ocasiones, durante el proceso de revisión, que un revisor solicitó incluir nuevos resultados, lo que en mi opinión requirió mucha codificación y esfuerzo para implementar, pero el autor respondió dentro de 7 a 10 días con nuevos resultados. y artículo mejorado.

Esta pregunta me vino a la mente porque observé en pocas ocasiones, durante el proceso de revisión, que un revisor solicitó incluir nuevos resultados, lo que en mi opinión requirió mucha codificación y esfuerzo para implementar, pero el autor respondió dentro de 7 a 10 días con nuevos resultados. y artículo mejorado.
¿Por qué esto sería diferente de un autor declarando el resultado de un experimento? Se debe dar el protocolo experimental, pero no se esperaría que el revisor realizara el experimento nuevamente para verificar que salió como dijeron los autores. En cualquier caso, el autor podría estar equivocado o ser deshonesto, pero al menos en el caso del experimento eso no sería algo que el revisor supiera.
@MBK: Con respecto al caso que menciona en los comentarios, seguramente es muy posible que los autores no estuvieran comenzando desde cero al implementar las sugerencias de los revisores, sino que ya habían considerado de forma independiente esas sugerencias o algo relacionado, por lo que tenían una cantidad significativa de el código necesario ya escrito?
¿Qué tal jugar con los parámetros para ver cómo cambian los resultados? Los valores extremos seguramente producirían diferencias o resultados extremos. Seguro que debe haber una posibilidad de tener entrada a la simulación.
@MBK Con respecto al caso que menciona en los comentarios, sospecho que simplemente no es tan buen programador como los que revisó. Puedo ver cómo es difícil aceptar que otros son programadores más rápidos, más aún cuando estos otros son personas que revisas (sobre las que tienes control). Es humano, pero no hay absolutamente ninguna razón para sospechar un juego sucio, fuera de lo que describiste.
Al acceder al código, ¿cómo puede un revisor confirmar si los resultados de la simulación son correctos? Descubrir errores sutiles (del tipo que tiende a producir resultados incorrectos en lugar de extraños) es una habilidad, y uno no puede asumir que los revisores tendrán. Recuerdo un error de uno en uno en parte de mi código que se canceló en el resultado final (lo que importaba era la diferencia entre los índices de la lista) hasta que reutilizamos el código; Todavía pasó un tiempo antes de que cogiéramos el error. Su último párrafo propone fraude en lugar de error, y esa es una situación muy diferente
@Andrei La diferencia del programador rápido y lento puede ser de 1 semana frente a 2 semanas, algo que no es posible, se espera que se implemente en 3 ~ 4 meses y se implemente, obtenga resultados, mejore el manuscrito y cargue en solo una semana. Además, enseño programación y creo que no soy tan malo como supones :)
@DavidThornley Hay una gran diferencia entre volver a ejecutar el programa de simulación (que puede haber requerido muchas horas de CPU/GPU), es decir, volver a ejecutar el experimento y una revisión del código, que es similar a revisar los parámetros y el procedimiento del experimento. Dicho esto, estos son mis pensamientos como ingeniero de software en la industria, no como académico.
@MBK Obviamente, es difícil saberlo con certeza, pero tal vez ya hayan implementado la nueva característica/funcionalidad, por ejemplo, para otro proyecto futuro. Es posible que incluso hayan tenido listos esos resultados, planeando enviarlos en un documento de seguimiento, pero tomaron la decisión ejecutiva de trasladarlos a este. O tal vez la estructura de su código lo hizo particularmente fácil de implementar.
@DavidThornley Cuando publicamos resultados experimentales, debemos informar la metodología con detalles exactos, hasta cosas como a qué compañía se compraron los materiales e incluso su número de lote (lote) de producción. Entonces, la diferencia obvia sería que si no proporciona el código fuente, no ha descrito el experimento computacional con suficiente detalle para reproducirlo.

Respuestas (9)

¿Tiene motivos para dudar de su veracidad o buena fe? ¿Son sus afirmaciones de alguna manera poco creíbles o muy cuestionables según su conocimiento del campo? Si no es estándar en su campo publicar el código, no creo que un revisor deba exigirlo necesariamente, independientemente de sus sentimientos acerca de hacer público el código.

Los autores deben describir su metodología de manera suficiente para que alguien más la replique; de esa manera, están poniendo en riesgo su reputación de que si alguien duplicara su enfoque, encontrarían los mismos resultados. Fabricar resultados es una acusación muy seria. Existen algunos enfoques estadísticos para probar si es probable que se fabriquen los datos, pero la eficacia de este enfoque depende de la sofisticación de la fabricación, y esa pregunta se adapta mejor a CrossValidated.

Si su trabajo es significativo en el campo, en algún momento alguien implementará su enfoque nuevamente. Hay necesariamente un poco de confianza en la ciencia de que la gente hace lo que dice que ha hecho. Un revisor debe verificar que las conclusiones de un artículo se deriven lógicamente de sus resultados y que su metodología esté descrita y sea sólida, pero no es necesario que verifique ni reproduzca los resultados. Como señala David Thornley en un comentario sobre otra respuesta, incluso la simple ejecución del código le dice muy poco sobre esos factores clave, solo le dice si hay una mentira o un error flagrante.

¿Tienes motivos para dudar de sus afirmaciones? ¿Seguramente ese es el trabajo de cualquier investigador?
@ user2768 Por supuesto que quiero decir más allá del escepticismo básico. Debe dudar de su enfoque tal como se presenta: si dicen que probamos X haciendo Y y usted sabe que Y no es la forma correcta de probar X, esa es una duda diferente a la de ellos diciendo que probamos X haciendo Y y usted se pregunta si en realidad lo inventó en lugar de hacer Y. El estándar es proporcionar suficiente información para que otra persona la replique; si alguien estaba haciendo una afirmación realmente notable, hay más razones para exigir ver su código que si muestra una mejora incremental.
A veces, incluso si el código está disponible y el revisor está dispuesto a verificar que sea correcto, puede que no sea práctico volver a ejecutar la simulación. En mi campo, no es raro que los artículos informen millones de horas de CPU en resultados de simulación. Seguramente no se puede esperar que un revisor gaste una fracción significativa de su cuota anual de tiempo de CPU cada vez que revisa un artículo. Así que estoy de acuerdo en que es necesario un grado razonable de confianza.
@Miguel (Going OT) Con tales cálculos intensivos de CPU, ¿es posible generar una prueba de que los cálculos se realizaron correctamente? (Bryan Krause y Phil Miller, buena revisión).
@ usuario2768 Depende. El mejor punto de referencia es experimentar, pero puede que no sea posible hacerlo. El peor de los casos es que la simulación es "correcta", pero el modelo físico subyacente no lo es. Si el problema es lo suficientemente importante/interesante, alguien intentará reproducir los resultados usando su propia implementación o modelo físico (como otros ya han mencionado aquí). Generalmente, uno puede probar, por ejemplo, un nuevo potencial interatómico reproduciendo propiedades experimentales conocidas (densidad, coeficiente de autodifusión) y luego usar dicho potencial para predecir propiedades desconocidas (por ejemplo, barreras de reacción).
@BryanKrause La magnitud del reclamo no debería ser importante; porque eso es subjetivo. O el trabajo del revisor es asegurarse de que cada paso del artículo sea lógico; y que cualquiera tenga suficiente información para intentar reproducir los pasos; o es para asegurarse de que lo que se hizo es cierto... Estoy de acuerdo con usted, es lo primero... para asegurarse de que cualquiera pueda reproducir el experimento y que la conclusión tenga sentido. Esto significaría que se deben incluir los detalles del algoritmo, pero no el código.
@Miguel En tal situación, la verificación es aún más importante . ¿Por qué confiaría en una simulación tan compleja sin ninguna evidencia plausible de que realmente funcionó como se anuncia? no deberías Como revisor, su trabajo no sería volver a ejecutar la simulación, por supuesto. Es para preguntar a los autores "¿qué evidencia pueden producir para convencerme de que su simulación es correcta?"
@UKMonkey No estoy de acuerdo con que la magnitud de un reclamo sea completamente subjetiva. Si alguien escribiera un artículo afirmando que comer bananas cura el cáncer, sería mucho más escéptico que si afirmara que un mayor consumo de bananas se asoció con una reducción del 5% en el riesgo de cáncer de colon en un estudio de cohorte longitudinal. Un revisor sería irresponsable si tratara esas afirmaciones por igual, incluso si se siguieron los procedimientos experimentales adecuados para ambas.
@BryanKrause Si no son subjetivos, ¿qué porcentaje de cáncer de colon debe ser curado con plátanos para ser clasificado como un reclamo de "alta magnitud"? Por supuesto que es subjetivo, y estoy seguro de que lo sabes. Si quieres alguna evidencia de eso, algunas personas creen que la Tierra es plana; la afirmación de que es redonda es significativa. Mientras que para otros, es al revés. Un revisor sería irresponsable si amenazara esas afirmaciones por igual si se le presenta la MISMA evidencia para ambas; pero eso solo significa que falta el paso lógico de la evidencia a la conclusión ... que debe tomarse para cualquier caso.
"¿Tienes motivos para dudar de su veracidad o buena fe?" <- Sí, el hecho de que no hayan publicado el código fuente de la simulación.

Realmente no se puede juzgar si la simulación se realizó realmente. Por eso hemos tenido cosas como el escándalo de Schön : los revisores de esos manuscritos tampoco detectaron el fraude.

Lo que puedes hacer es implementar la "prueba del olfato". ¿Es factible este enfoque? ¿Son razonables los resultados? ¿Hubo omisiones evidentes? Si no puede ver ningún problema obvio con la simulación, eso es lo suficientemente bueno: la revisión por pares real ocurre después de la publicación.

¿Por qué un revisor tendría que implementar una "prueba de olor", en lugar de solo requerir el código fuente? Quiero decir, deberías usar una "prueba de olor" en todo momento al revisar, pero eso no impide entrar en detalles.
@einpoklum Smell test, no una prueba pequeña, como en, olfatear metafóricamente y ver si algo te hace pensar intuitivamente que no es válido por alguna razón. Una prueba de olfato es un examen breve y relativamente superficial para detectar errores obvios o fuentes de error.
@NicHartley: Lo siento, confundí la "e" con la "a".

Después de todas estas experiencias, puedo decirle que no hay forma de confirmar la exactitud de los resultados de la simulación.

Eso no es necesariamente cierto. En algunos casos, es muy fácil discernir que un gráfico no puede ser correcto o que al menos ha sido malinterpretado o mal interpretado. Tuve un error de este tipo en uno de mis primeros artículos y lo he detectado en varios artículos que he revisado.

No es fácil demostrar que las simulaciones se han realizado realmente. Sin embargo, el marco de Open Science está diseñado para facilitar la verificación de los resultados del trabajo computacional y experimental.

Su experiencia se trata de confirmar la incorrección. Todavía es difícil confirmar la corrección.
Esto parece más un comentario sobre una oración de la pregunta que una respuesta a la pregunta principal.

Termino revisando documentos del tipo de ciencia de datos donde el código subyacente es crítico. Empecé a ser ese tipo durante las revisiones, y esto es lo que pido:

  1. El código debe estar disponible para mí como revisor. Punto final.
  2. El código debe tener pruebas que yo, como revisor, pueda ejecutar. No puedo revisar el código para verificar y asegurarme de que funciona exactamente como se anuncia, pero puedo ver si las pruebas son apropiadas y si pasan cuando las ejecuto.
  3. El código debe tener una cobertura de prueba razonablemente buena en torno a las partes científicas, y las pruebas de regresión deben estar razonablemente justificadas (es decir, esperamos ver este resultado por la razón X).
  4. Si ha reinventado una rueda, debe explicar por qué (incluso si esa explicación es que no sabía que alguien más ya la había hecho)

Todo esto me parece bastante razonable y aborda muchas de las preocupaciones sobre la calidad del código. La mayoría de las personas con un código bien diseñado las alcanzará simplemente por tener pruebas de integración continuas en un repositorio de GitHub, y creo que ya no es necesario mimar a las personas con un código mal diseñado (que es demasiada gente).

No veo cómo esto responde a la pregunta. La pregunta era, ¿cómo podemos confirmar si los resultados de la simulación son correctos sin el código? Su respuesta es "Necesito el código".
Si eres un revisor, "Necesito el código" es absolutamente una respuesta que puedes dar. Es una solicitud razonable, incluso si no puede usar ese código para reproducir completamente la simulación o el análisis (que no es su trabajo, pero asegurarse de que el documento tenga un nivel básico de plausibilidad sí lo es). No es diferente de pedir mejores controles experimentales a un bioquímico.
@ CJ59, ¿cómo define "código mal diseñado"?
Si puede escribir pruebas que cubran la mayor parte del código base y que cubran la mayoría de las entradas que son razonables para su problema, su código probablemente esté bien diseñado. Si sus pruebas son tortuosas e ilógicas, entonces su código probablemente esté mal diseñado. Si vive en el año 2019 y no se molesta en escribir pruebas para el código que envía junto con su artículo científico, entonces [insultos eliminados por el moderador].
Sí, eso es algo que puede exigir como revisor, pero no lo convierte en una respuesta a esta pregunta.
Leí la pregunta como "Sin realizar una auditoría de código irrazonablemente compleja, ¿cómo puede juzgar la validez de una simulación?". Si alguien se niega rotundamente a darle el código de un artículo científico, no es necesario que juzgue la validez de la simulación; la rechaza de plano, [insultos eliminados por el moderador]
Esta es una buena respuesta. Personalmente, creo que esta es la única respuesta válida. "¿ Cómo puede un revisor confirmar si los resultados de la simulación son correctos "? Necesitas ver el código . Es realmente muy simple. Las personas que piden a otros investigadores que confíen en sus resultados al pie de la letra no deberían ser parte de la academia.

no hay forma de confirmar la exactitud de los resultados de la simulación.

Las simulaciones deben ser repetibles, por lo tanto, la corrección se puede verificar volviendo a ejecutar la simulación. Por supuesto, es posible que los autores no proporcionen el código necesario, pero luego puede solicitar el código como parte del proceso de revisión.

No es una tarea fácil implementar el algoritmo de alguien para verificar la corrección. En algún momento, la implementación puede tardar de 3 a 4 meses.
Solicité el código y el autor lo negó diciendo que va en contra de su contrato de confidencialidad del proyecto.
@MBK No recomiendo implementar; Recomiendo repetir. Si los autores no le permiten repetir (negando el acceso al código), entonces me inclinaría a rechazar, pero consultaría con el editor.
@user2768 Entonces, si tuviera que ejecutar algunas simulaciones usando un software que no tenía una licencia para redistribuir, ¿no debería poder publicar mis resultados?
@MBK Simplemente ejecutar el mismo código en los mismos datos le dice muy poco sin examinar realmente el código para asegurarse de que implemente los algoritmos del documento. Te dice que los autores no mintieron abiertamente sobre los resultados, y eso es todo.
@DavidThornley: De hecho, en principio, los resultados que se basan de manera esencial en software no publicable no deberían ser publicables en sí mismos. Se supone que la publicación de los resultados permite a la comunidad verificarlos y desarrollarlos.
@SylvainRibault En muchas áreas de investigación no es posible, por varias razones, compartir todos los datos sin procesar involucrados. ¿Tampoco debería publicarse ninguna de esas investigaciones? ¿Deberíamos guardar y distribuir muestras de sangre a cualquiera que quiera verificar los resultados de un estudio de biomarcadores inflamatorios? ¿Qué pasa si el proceso de análisis destruye la muestra? La confianza es una parte integral de la investigación académica.
@Bryan Krause: La pregunta era sobre software, no sobre datos sin procesar o evidencia física.
@SylvainRibault Entendido, pero aunque puede argumentar a favor del software de código abierto, puede haber buenas razones para no distribuir el código libremente; Creo que es miope hacer que un "no" duro para publicarlos, y señalar que ese nivel de replicación es imposible en otros campos que no tienen problemas para publicarlos.
@Bryan Krause: OK, pero dibujaría una diferencia (aunque no sea muy clara) entre los datos y cómo se procesan. El software, como las fórmulas, tiende a estar en el lado del procesamiento y debería ser más abierto. También está 'publicar' en el sentido de hacer público, y 'publicar' en el sentido de verificar rigurosamente. Deberíamos poder hacer público cualquier cosa, pero no deberíamos afirmar que hemos verificado un reclamo cuando la verificación es imposible.
@SylvainRibault Sí, pero aceptar un artículo para su publicación no es lo mismo que verificarlo. Un revisor debe verificar que las conclusiones de un artículo se deriven lógicamente de sus resultados y que su metodología esté descrita y sea sólida, pero no es necesario que verifique ni reproduzca los resultados. Como David Thornley señala anteriormente, incluso la simple ejecución del código le dice muy poco sobre esos factores clave, solo le dice si hay una mentira o un error flagrante.
@DavidThornley "Entonces, si tuviera que ejecutar algunas simulaciones usando un software que no tenía una licencia para redistribuir, ¿no debería poder publicar mis resultados?" — Idealmente, sí. Eso es parte del manifiesto de la Ciencia Abierta. Obviamente, esto depende del campo, pero en mi campo (genómica), si un manuscrito se distribuye sin un código ejecutable, lo rechazo. Y no hace falta decir que estoy lejos de ser el único crítico que hace esto.
@DavidThornley Creo que los revisores deberían tener acceso al código escrito por los autores. Ese código es parte del entregable. Si no es así, entonces no debería anunciarse en el periódico. (Aprecio que dibujar líneas aquí es bastante complicado). No está claro por qué se refiere a "software [sin] una licencia para redistribuir", porque eso no parece estar dentro del alcance aquí. Agradezco que los revisores no puedan ejecutar código sin una licencia, ese es un problema independiente.
@user2768 Incluso si el software es de código abierto y no hay problemas de licencia, solo instalarlo y verificar que la instalación fue correcta puede convertirse en una gran pérdida de tiempo. En mi experiencia, la mayoría del software académico tiene dependencias en el sistema informático local y su cadena de herramientas de desarrollo de software que nadie conocía o no le importaba, ¡y ciertamente no documentó en ninguna parte!
@alephzero Cuando reviso documentos y quiero el código, generalmente estoy en condiciones de ejecutar el código de inmediato. Cuando no lo estoy, no ejecutaré el código.

Es un artefacto desafortunado de la historia y la cultura, pero la academia todavía está en la edad oscura con respecto a compartir el código fuente. Los investigadores computacionales serios a menudo proporcionarán al menos un algoritmo detallado y, a menudo, también el código. Pero los aficionados que tuvieron que aprender a codificar "en el trabajo", o las personas muy arraigadas en sus costumbres y tradiciones, a menudo se olvidan de hacerlo y las publicaciones estándar rara vez lo requieren, aunque uno pensaría que alguien en su sano juicio lo haría. estar de acuerdo en que todo el código científico debe ser de código abierto (o al menos compartido con los revisores) para que valga la pena discutirlo.

Desafortunadamente, la cultura establecida no espera compartir el código, aunque en el caso análogo de los experimentos físicos existe la expectativa de compartir el proceso exacto hasta cada detalle del método y el material, de modo que otros investigadores puedan reproducirlo exactamente. Sospecho que la razón de esto es que, en el gran esquema de las cosas, las computadoras son una herramienta científica relativamente reciente, y la capacidad de compartir código fácilmente es aún más reciente. Dicho esto, hemos tenido Internet ubicuo y alojamiento de código sin esfuerzo como Github durante más de una década, así que si me preguntas, ya es hora. Pero parece que todavía hay bastante inercia.

He estado revisando los artículos de varias revistas y conferencias de primer nivel durante los últimos años. Después de todas estas experiencias, puedo decirle que no hay forma de confirmar la exactitud de los resultados de la simulación. Por lo tanto, suelo hacer comentarios sobre diseño, procedimiento, análisis matemático y analítico.

Eso es lo mejor que puedes hacer. También puede intentar conjeturar intuitivamente basándose en la descripción aproximada (si la hay) del enfoque computacional, ya sea que los resultados obtenidos sean creíbles o no. Pero en última instancia, es imposible saberlo con certeza.

Trato de agregar una pequeña queja al final de mis reseñas sobre la liberación del código fuente, aunque no creo que se tome en serio muy a menudo.

En la sección de resultados, puedo hacer algunas preguntas sobre por qué esto o aquello es así, pero ¿cómo puedo juzgar si la simulación se realizó realmente o si estos son solo gráficos fabricados?

Bueno, por la forma en que lo expresas, no puedes saber realmente si se fabricó algún gráfico o resultado, a menos que tal vez estuvieras personalmente presente mientras se realizaba la investigación. Inevitablemente hay un elemento de confianza. Pero sin el código fuente, incluso si confía, no puede ofrecer una crítica significativa sobre algunas partes computacionales del documento. Obviamente, aún puede comentar sobre las suposiciones iniciales y el enfoque elegido. Puede comentar cómo se interpretan los resultados. Pero la implementación en sí está fuera de su alcance hasta que pueda ver el código. En realidad, incluso proporcionar un algoritmo detallado no sería suficiente: la implementación de los autores puede no ser necesariamente una coincidencia exacta para el algoritmo que pretendían.

Esta pregunta me vino a la mente porque observé en pocas ocasiones, durante el proceso de revisión, que un revisor solicitó incluir nuevos resultados, lo que en mi opinión requirió mucha codificación y esfuerzo para implementar, pero el autor respondió dentro de 7 a 10 días con nuevos resultados. y artículo mejorado.

No creo que sea justo sospechar solo porque lo hicieron demasiado rápido. Pueden ser muy buenos codificando. Personalmente, mi tasa de desarrollo es muy variable: a veces las cosas simplemente hacen clic y puedo escribir código muy rápido, a veces las cosas simples toman una eternidad. Es posible que conozcan formas más fáciles de implementar el cambio de lo que usted cree. Es posible que ya hayan codificado algo similar en un trabajo separado y hayan podido reutilizarlo rápidamente.

Si alguien falsificara los resultados, creo que respondería de inmediato porque no le importa, o esperaría "lo suficiente" para evitar sospechas. Si se molestaran en esperar, no creo que pusieran en peligro toda la empresa esperando demasiado poco.

Algunos jefes creen que el código de los modelos de simulación vale dinero. Sin embargo, (1) ese rara vez es el caso, y (2) si quisiéramos ganar mucho dinero con la codificación, estaríamos en el negocio del software, no en la academia. Además, como ya han mencionado otros, los modelos de simulación que no son de código abierto viven fuera del dominio científico.

Para que el trabajo de simulación sea reproducible con precisión, sería necesario tener (a) el código para la simulación y (b) la semilla para el generador de pseudoramdon utilizado para ejecutar el código. A menos que el código sea propietario, no hay una buena razón para que los autores oculten esta información a los revisores, incluso si el código no se publicará como parte del artículo. Sin embargo, los estudios de simulación publicables pueden ser tan extensos que no es factible incluso para un revisor escéptico enérgico repetir las simulaciones.

Hasta cierto punto, muchos estudios de simulación pueden autoverificarse. Cuando esto sea posible, los revisores deben insistir en una verificación inherente factible. En un lenguaje no técnico aquí hay un par de ejemplos de lo que quiero decir.

(1) A menudo, una simulación producirá varios resultados, algunos de los cuales son novedosos y otros se obtienen fácilmente o son conocidos en general sin recurrir a la simulación. Entonces, como mínimo, un revisor puede confirmar que los últimos resultados son válidos. De manera similar, las simulaciones pueden refinar los resultados que solo pueden aproximarse mediante cálculos probabilísticos u otros cálculos matemáticos. Luego, el revisor puede confirmar que los resultados son al menos aproximadamente correctos.

(2) Con mucha frecuencia, una parte importante de un estudio de simulación puede ser obtener límites aproximados dentro de los cuales es probable (quizás 95% de probabilidad) que se encuentren los resultados simulados. Si parece factible haber obtenido dichos límites y el artículo bajo revisión carece de ellos, entonces el revisor debe solicitarlos o una explicación de su ausencia.

Anexo: Este es un ejemplo trivial que ilustra algunos conceptos en (1) y (2). Supongamos que se cargan cinco dados de modo que las caras 1 a 6 tengan probabilidades respectivas (1/12, 1/6, 1/6, 1/6, 1/6, 1/4) de ocurrir. Si se lanzan los cinco, ¿cuál es la probabilidad de que el total sea al menos 25? Una simulación en el software estadístico R de un millón de experimentos de 5 dados muestra que la fracción de resultados con un total de 25 o más fue 0,092903. ¿Es creíble este resultado? La respuesta es Sí, a unos tres lugares.

El margen simulado del 95 % del error de simulación está "dentro de 0,0006". Es fácil ver que el total promedio es 19.583 y el resultado simulado correspondiente es 19.580. Una aproximación normal razonable de 2 lugares es 0.0922. Este ejemplo particular es rico en posibilidades de corroboración, pero esas son algunas.

Nota: Otro problema es que, utilizando varios tipos de software matemático, este problema podría resolverse exactamente mediante métodos combinatorios avanzados. Un método exacto se basa en esta página , excepto que nuestros dados están sesgados y los resultados no son igualmente probables. Es cuestionable si las simulaciones deben publicarse si existe una solución exacta manejable. Una de las tareas de un revisor es identificar los artículos que no deberían publicarse por este motivo.

Por lo general, los ejemplos conocidos se reproducen para tener la confianza de que la simulación está haciendo lo que dice. Luego, simulaciones adicionales muestran los nuevos resultados, que podrían no ser reproducidos por otro grupo porque no utilizó el método o enfoque descrito en el documento/charla.

Debido a la brevedad, a menudo se omite la primera parte en artículos de revistas y conferencias. Las tesis doctorales las contienen con más frecuencia.

Una de mis primeras publicaciones, no contiene ningún avance, solo se cita de otras para demostrar que coinciden con mis resultados.

Si estuviera revisando un artículo que dependiera en gran medida de algún análisis computacional, pero no proporcionara el código, lo rechazaría a menos que los autores pudieran dar una buena razón: incluso si hubieran usado bibliotecas propietarias, yo Quisiera ver las llamadas que hicieron a esas bibliotecas. Esto es requerido por muchas revistas en mi campo (genómica/bioinformática).

Dicho esto, si las simulaciones se ejecutaron durante 2 meses con 10 000 núcleos (o incluso una semana con 200 núcleos), no hay muchas posibilidades de que me reproduzca incluso con el código. Y es casi seguro que no tengo ni el tiempo, el dinero ni la experiencia para repetir los experimentos de laboratorio en cualquier artículo que leo.

No creo que proporcionar código, aunque sea una buena práctica, sea una protección contra la deshonestidad. Al final, hay muy poca protección contra el fraude total, y el proceso de revisión no existe principalmente para ese propósito.

Es posible que no exista la posibilidad de reproducirlo ahora , pero tenga en cuenta que el documento aún puede ser de interés en una o dos décadas.
La posibilidad de que cualquier infraestructura subyacente en dos décadas sea compatible con el código escrito ahora es bastante mínima, a menos que esté empaquetada como una máquina virtual. Sería escéptico de que incluso una compilación de imagen acoplable ahora se ejecutará igual dentro de 20 años. Este es un problema real y continuo. Visite software.ac.uk para ver un ejemplo de personas que trabajan duro para intentar resolver este problema no trivial.
El uso de bibliotecas propietarias no es una buena razón. Es decir, los autores pueden mostrar el código que escribieron y decir "Compilar esto con libproprietarystuff".
Que es exactamente lo que dije
"La posibilidad de que esta empresa de reactivos esté en el negocio dentro de dos décadas es bastante mínima. ¡Sería escéptico de que los catálogos de pedidos por correo sean los mismos dentro de 20 años!"