摘要
本周学习了 Wilcoxon 符号秩检验的内容,主要了解了它的作用、步骤以及跟其他检验方法的对比;其次尝试搭建了上周论文的复现环境,主要是从直接下载和从源码编译两个角度思考解决 tensorflow-quantum 库的安装问题,并从中吸取经验。
Abstract
This week, I studied the Wilcoxon signed-rank test, mainly learning its purpose, procedure, and comparison with other testing methods. Secondly, I attempted to set up the reproduction environment for last week's paper, primarily considering two approaches to solve the installation problem of the tensorflow-quantum library: direct download and compilation from source, and learned from the experience.
1 Wilcoxon 符号秩检验
1.1 概述
Wilcoxon 符号秩检验(Wilcoxon signed‑rank test)由 Frank Wilcoxon 提出,是一种非参数统计方法,主要用于两种情况。一种是配对样本,即比较同一组受试者在两种处理下(或前后测量)的结果,判断两者的分布位置是否有差异;另一种是单样本,主要是判断样本所来自的总体中位数是否等于某个指定值。它相当于参数检验中配对 t 检验或单样本 t 检验的稳健替代方案,不要求数据服从正态分布。
使用该检验时,数据应为成对差值 ,或
,各对差值相互独立,且在理论上差值来自连续分布。除此之外,最关键的一点前提在于,差值的大致分布需关于其中位数对称,因为如果对称性不成立,检验推断的中位数可能不再等于分布的中心,结果解释需谨慎。
以配对检验为例,其假设形式为:
:差值总体的中位数为 0(即两种处理无位置差异)
:双侧中位数≠0;单侧大于 0 或小于 0
1.2 原理与步骤
如果 成立,差值的正、负应当随机分布,且正差值与负差值的平均秩次应大致相等。
其大致步骤如下:设配对数据为 ,差值
首先,计算所有差值。若某对数据差值为 0 ,则将其剔除,样本量相应减少;
其次,对剩余差值的绝对值从小到大排序,并赋予秩次 ,若出现相同绝对值则取平均秩。
接着,根据原始差值的符号,为秩次加上正负号,得到符号秩。
然后,分别计算正符号秩之和 与负符号秩之和
,显然二者之和为
,丙选择检验统计量。
最后,确定 p 值。若为大样本则根据正态近似计算,若为小样本则查 Wilcoxon 符号秩检验表,给出双侧或单侧临界值。
1.3 与其他检验的对比
本部分主要将 Wilcoxon 符号秩检验与配对 t 检验、符号检验以及 Wilcoxon 秩和检验从适用场景、数据要求等方面进行比较。
对于适用场景,Wilcoxon 符号秩检验与配对 t 检验都比较适用于配对数值差异的场景,符号检验既适用于配对也适合单样本,Wilcoxon 秩和检验则只适用于独立的两样本;
对于数据要求,Wilcoxon 符号秩检验如前文所言需要其差值分布对称,配对 t 检验需要其差值服从正态分布,符号检验无分布假定,Wilcoxon 秩和检验则只需要数据分布形状相似即可;
除此之外,配对 t 检验对异常值比较敏感,Wilcoxon 符号秩检验则利用了差值的方向和大小,比单纯的符号检验功效更高。
2 关于复现
github链接(论文中也有):https://github.com/OttoMP/wind-forecasting-quantum
根据提供的 requirements 文件,创建 python3.9 的虚拟环境

并依次安装 cuda、tensorflow 以及其他依赖,在安装 tensorflow-quantum 时发现报错。

这个报错是因为 tensorflow-quantum==0.7.2 已经不在 PyPI 公开提供了,现在 PyPI 上只保留了 1.14.0 以上的版本,而这些新版本全都要求 Python ≥ 3.10,与论文为了兼容 TensorFlow 2.7 而必须用的 Python 3.9 冲突,导致 pip 找不到合适的包。
尝试解决办法:首先,打算手动从 TensorFlow Quantum 的官方 GitHub Release 页面下载对应你系统的预编译 .whl 文件,再本地安装,链接如下:
Release TensorFlow Quantum 0.7.2 · tensorflow/quantum · GitHub
但发现并无所需文件。
换种方法,在命令行中使用 curl 下载

但在环境中安装时报错 is invalid,检查 .whl 文件,发现文件大小仅几字节,显然下载未成功,重新下载则显示 connection was reset。


故选择从源码编译,需准备好 bazel 与 C++ 编译环境。前者可通过在命令行中输入 bazel version 判断是否下载成功,后者则可以在安装 VScode 时勾选组件。
然后拉取源码:

并进行编译,发现报错:

认为可能下载的 bazel.exe 文件目录不对,于是切换目录,发现仍然报错:

故拉取的源码和编译器缺一不可,于是采用绝对路径(直接到源码环境应该也可,但估计需要添加环境 path 变量):

可编译但编译不成功,估计是 bazel 版本比较新,改用 3.7.2(或其以上 4.x.x左右的版本)版本并重复上述操作。
3 总结
本周首先学习了 Wilcoxon 符号秩检验的内容,了解了它的作用和步骤,总体了解的比较浅显,感觉假设检验这个部分的知识学习不是很到位,后面考虑整体了解一下;其次尝试复现了上周的论文,卡在了环境搭建部分,主要是因为部分库的版本是之前的,现在不再提供,要下载一样的或者用其他替代都比较麻烦。