最近做了一个工作,是一个根据中尺度涡预测海洋热浪的统计学模型。听起来很玄幻但是实际上是可行的,因为海洋热浪的成因有很大一部分是海流带来的热量,所以在那些中尺度涡富集的区域海洋热浪和中尺度涡的联系是很紧密的。
这项工作我做了很久,花了很多时间。做完后写了篇论文,投了稿。审稿很顺利,三个审稿人都只提了很少的意见,本来答复完了稍微改改就收工了。
不过我有个习惯,就是每次在自己的论文快要发表前,都会重做一遍里面的所有内容去验证文章的可重复性。并不只是简单地重跑一遍程序,而是按照现在的思路,把所有的代码重新写一遍,看看结果和最开始是否有出入。我的每篇论文皆是如此。
结果这次,出了个问题:我发现有一部分结果我怎么都重复不出来。
我查了一下原代码,最终发现是在交叉验证的时候我少写了一个循环,导致只有十分之一的数据被用来做了交叉验证,这让模型的验证结果和实际并不相同。
这对结果影响很大吗?呃,说大的话也大,因为模型的验证结果会影响我们对模型预测尺度的考量,后续的结果自然就会改变;但说小的话也小,因为我们后面的内容实际上是逻辑自洽的,这说明其实我们目前选用的预测尺度也有其物理意义和预测价值,只是需要更多说明而已。
最后我的选择是,我亲自给这本杂志负责的编辑(我认识的一位教授)打了个电话,让他终止了这篇文章的审稿。等我把所有的结果重做一遍,重新写一篇文章再说吧。