# signrank
Wilcoxon 符号秩检验
函数库: TyStatistics
# 语法
p,h,stats = signrank(x, y=zero(x); alpha::Number=0.05, method="", tail="both")
# 说明
p,h,stats = signrank(x, y=zero(x); alpha::Real=0.05, method="", tail="both") 返回符号测试的 p 值,附加选项由一个或多个关键字参数指定。示例
# 示例
测试单个总体的零中位数
检验零中位数的假设。
生成示例数据。
using TyMath
using TyStatistics
rng = mt19937ar(5489) # for reproducibility
x = randn(rng,1,25) .+ 1.30;
检验 x 中数据的中位数为零的假设。
p,h, = signrank(x)
p = 3.2228773354575424e-5
h = true
在默认的 5% 显着性水平下,值 h = 1 表示检验拒绝零中位数的原假设。
检验配对样本差异的中位数
检验配对样本之间差异的零中值假设。
生成示例数据。
using TyMath
using TyStatistics
rng = mt19937ar(5489) # for reproducibility
x = lognrnd(rng,2,.25,10,1);
y = x + trnd(rng,2, 10, 1)
检验 x – y 的中位数为零的假设。
p,h = signrank(x,y)
p = 0.322265625
h = false
结果表明检验未能拒绝在默认的 5% 显着性水平下差值中位数为零的原假设。
大样本的符号秩检验
对大样本执行左侧符号测试。
加载示例数据。
using TyStatistics
datadir = pkgdir(TyStatistics) * ("/examples/HypothesisTests/LocationTests/signtest_tests/signtest_test4_data.jl")
include(datadir)
检验零假设,即参加辅导计划前后学生成绩差异的中位数为 0,而替代假设小于 0。
p,h,stats = signrank(gradespaired[:,1],gradespaired[:,2],tail = "left")
p = 0.004686249943563512
h = true
stats = TyStatisticsCore.__Internal__.Signrank
signedrank: Float64 2017.5
zval: Float64 -2.598159311793331
由于样本量大于 15,signrank 使用近似方法计算 p 值,同时返回 z 统计量的值。 值 h = 1 表示检验拒绝原假设,即在 5% 的显着性水平下,成绩中位数之间没有差异。 有足够的统计证据可以得出结论,辅导计划前的平均成绩低于辅导计划后的平均成绩。
使用确切的方法重复测试。
p,h,stats = signrank(gradespaired[:,1],gradespaired[:,2],tail = "left",method = "exact")
p = 0.004483143007835018564962277919205220365538449658687005777470406964885230038930786
h = true
stats = TyStatisticsCore.__Internal__.Signrank
signedrank: Float64 2017.5
zval: Float64 1.0
单一总体中位数的双侧检验
检验总体中位数与指定值不同的假设。
加载示例数据。
using TyStatistics
datadir = pkgdir(TyStatistics) * ("/examples/HypothesisTests/LocationTests/signrank_tests/signrank_test5_data.jl")
include(datadir)
数据包含第 1 列到第 3 列中三种不同类型汽车的每加仑英里数。
检验第二列中汽车类型的中位里程不同于 33 的假设。
p,h,stats = signrank(mileage[:,2],33)
p = 0.03125
h = true
stats = TyStatisticsCore.__Internal__.Signrank
signedrank: Float64 21.0
zval: Float64 1.0
在 5% 的显着性水平上,结果表明第二类汽车的中位里程不同于 33。请注意,signrank 使用精确方法计算小样本的 p 值,并且不返回 z 统计量。
单个总体中位数的右侧检验
检验总体中位数与指定值不同的假设。
加载示例数据。
using TyStatistics
datadir = pkgdir(TyStatistics) * ("/examples/HypothesisTests/LocationTests/signrank_tests/signrank_test5_data.jl")
include(datadir)
数据包含第 1 列到第 3 列中三种不同类型汽车的每加仑英里数。
检验第二行中汽车类型的平均里程数大于 33 的假设。
p,h,stats = signrank(mileage[:,2],33,tail = "right")
p = 0.015625
h = true
stats = TyStatisticsCore.__Internal__.Signrank
signedrank: Float64 21.0
zval: Float64 1.0
使用近似方法在 1% 的显着性水平上重复相同的测试。
p,h,stats = signrank(mileage[:,2],33,tail = "right",alpha = 0.01,method = "approximate")
p = 0.01801584310911679
h = false
stats = TyStatisticsCore.__Internal__.Signrank
signedrank: Float64 21.0
zval: Float64 2.096569673443837
这个结果 h = 0 表明不能在 1% 的显着性水平上拒绝原假设。
# 输入参数
x — 样本数据
向量
样本数据,指定为向量。
数据类型 : Real
y — 样本数据
向量
样本数据,指定为向量。y的长度必须和x一样。
数据类型 : Real
m — 中位数的假设值
标量
中位数的假设值,指定为标量。
示例:signrank(x,10)
数据类型 : Real
# 关键字参数
将可选参数对指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是相应的值。 名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
alpha — 显着性水平
0.05(默认) | 0 到 1 范围内的标量值
假设检验的显着性水平,指定为以逗号分隔的对组,其中包含alpha和 0 到 1 范围内的标量值。alpha 的默认值为 0.05。 h 的显着性水平为 100 * alpha%。
示例:alpha = 0.01
数据类型 : Real
method — p值计算方法
"exact" | "approximate"
p 值计算方法,指定为以逗号分隔的对组,其中包含 method 和以下项之一:
| method可选值 | 说明 |
|---|---|
| "exact" | p 值 p 的精确计算。 未指定方法时,x、x – m 或 x – y 中 15 个或更少观察值的默认值。 |
| "approximate" | 计算 p 值 p 时的正态近似。 当未指定method时,x、x – m 或 x – y 中超过 15 个观察值的默认值,因为在大样本上精确方法可能很慢。 |
如果观测值少于 100 个,则默认计算方法为"exact";如果观测值超过 100 个,则默认计算方法为"approximate"。
示例 : method = "exact"
tail — 检验的类型
"both" (default) | "right" | "left"
测试类型,指定为以逗号分隔的对,其中包含 'Tail' 和以下项之一:
| tail可选值 | 说明 |
|---|---|
| "both" | 双侧假设检验,这是默认检验类型。 · 对于单样本检验,备择假设表明 x 中的数据来自中位数不同于 0 或 m 的连续分布。 · 对于双样本检验,备择假设表明 x – y 中的数据来自中位数不为 0 的分布。 |
| "right" | 右尾假设检验。· 对于单样本检验,备择假设表明 x 中的数据来自中位数大于 0 或 m 的连续分布。 · 对于双样本检验,备择假设表明 x – y 中的数据来自中位数大于 0 的分布。 |
| "left" | 左尾假设检验。 · 对于单样本检验,备择假设表明 x 中的数据来自中位数小于 0 或 m 的连续分布。 · 对于双样本检验,备择假设表明 x – y 中的数据来自中位数小于 0 的分布。 |
示例 : tail = "left"
# 输出参数
p — 检验的 p 值
非负标量
检验的 p 值,返回为从 0 到 1 的非负标量。p 是在原假设下观察到检验统计量等于或大于观察值的概率。 signrank 通过将最重要的一侧值加倍来计算两侧 p 值。
h - 假设检验的结果
true | false
假设检验的结果,作为逻辑值返回。
如果 h = 1,这表示在 100 * Alpha% 显着性水平下拒绝原假设。
如果 h = 0,这表示无法拒绝 100 * Alpha% 显着性水平的原假设。
stats — 测试统计
结构体
测试统计信息,作为结构返回。 stats中存储的测试统计信息有:
signrank:符号秩检验统计值
zval:[z-statistic](仅针对大样本计算)。
# 详细信息
Wilcoxon 符号秩检验
当观察值配对时,Wilcoxon 符号秩检验是针对两个总体的非参数检验。 在这种情况下,检验统计量 W 是两个样本(即 x – y)中观察值之间正差的秩和。 当您对一个样本使用检验时,W 是观察值与假设中值 M0 之间正差的秩和(当您使用 signrank(x) 时为 0,使用 signrank(x,m 时为 m )).
z-Statistic
对于大样本,signrank 使用 z 统计量来近似 p 值。
signrank 检验统计量是大于 0(对于 signrank(x) 或 signrank(x-y))或 m(对于 signrank(x,m))的元素数。 因此,具有连续性校正的符号检验的 z 统计量为:
其中 n 是差值 x – y 或 x – m 的样本量。 对于双样本情况,signrank 使用 tie_rank,tieadj = tiedrank(abs(diffxy),0,0,epsdiff) 来获得平局调整值 tieadj。
# 算法
signrank 将 x 和 y 中的 NaN 视为缺失值并忽略它们。
对于双样本情况,signrank 使用基于值 epsdiff = eps(x) + eps(y) 的容差。 signrank 计算差值的绝对值 (abs(d[i]),其中 d[i] = x[i] – y[i])并将它们与 epsdiff 进行比较。 绝对值小于 epsdiff (abs(d[i]) < epsdiff[i]) 的值被视为平局。
# 参考文献
[1] Gibbons, J. D., and S. Chakraborti. Nonparametric Statistical Inference, 5th Ed., Boca Raton, FL: Chapman & Hall/CRC Press, Taylor & Francis Group, 2011.
[2] Hollander, M., and D. A. Wolfe. Nonparametric Statistical Methods. Hoboken, NJ: John Wiley & Sons, Inc., 1999.