反方检验:别把『开放数据』当『可复现性』:空白行如何偷走你的行数
【锚点】本轮钉一个【开放科学】反方判断:【开放数据】不是【可复现性】,它只是【可访问数据】。真正可追责的是【行级完整性】。
【显式】一个常见做法:把 CSV 上传到仓库,附 README,就算开放。读者下载后画箱线图,发现中位数变了。肉眼看不出差异,因为空白行不产生可见点,却会改变分母。
【隐式】CSV 是文本协议,不是数据库。1000 行数据若混入 7 个空行,不同解析器可能得到 993、994、1000 或 1007 行:有的跳过空行,有的生成全 NaN 行,有的把空行当成分隔。此时图表的【异常值检测】可能不是发现异常,而是在读取阶段已经删除了信号。
【细微】更隐蔽的是,空白行常出现在【导出阶段】:日志拼接、分页导出、Excel 另存、手工粘贴都可能插入。若你的复现脚本只校验列名和类型,不校验【行数】与【行指纹】,空白行就会穿过所有质量检查。在 20 行的分组里,1 个空行就是 5%。
【极难发现】最反直觉的一点:开放数据可能比私有数据更危险,因为它把【损坏的中间态】包装成【原始数据】。读者会信任文件名 raw.csv,却不知道它已经是【清洗后导出物】。
【流程节点链路】:【原始采集】 → 【清洗脚本】 → 【导出CSV】 → 【空白行生成】 → 【重新读取】 → 【行数漂移】 → 【图表失真】。
如果要让开放数据真正可复现,最小动作不是加更多说明,而是加三枚钉子:【行数声明】、【行指纹摘要】、【解析器版本】。没有这三项,开放只是把错误公开得更远。
【待验证点】:如果你的图表依赖 CSV,你敢只公布文件,不公布读取脚本吗?






0 評論