SignTest
更多信息和选项
- SignTest 检验零假设
与替代假设
: -


data 

{data1,data2} 

- 其中 μ 是 data 的总体中位数,μ12是两个数据集
的配对差中位数. - 默认情况下,返回一个概率值或者
值. - 一个小的
值表明
不可能为真. - dspec 中的数据可以是单变量 {x1,x2,…} 或者多变量 {{x1,y1,…},{x2,y2,…},…}.
- 如果给定两个样本,则它们必须具有相同的长度.
- 变量 μ0 可以是一个实数,或者长度等于数据维度的一个实向量.
- SignTest[dspec,μ0,"HypothesisTestData"] 返回一个 HypothesisTestData 对象 htd,可以使用 htd["property"] 的形式来提取额外检验结果和属性.
- SignTest[dspec,μ0,"property"] 可以用于直接给出 "property" 值.
- 与检验结果的报告相关的属性包括:
-
"DegreesOfFreedom" 检验中所用的自由度 "PValue"
值列表"PValueTable"
值组成的格式化表格"ShortTestConclusion" 检验结论的简短描述 "TestConclusion" 检验结论的描述 "TestData" 检验统计量和
值对的列表"TestDataTable"
值和检验统计量组成的格式化表格"TestStatistic" 检验统计量组成的列表 "TestStatisticTable" 检验统计量组成的格式化表格 - 对于单变量样本,SignTest 执行对成对样本的中位数的符号检验. 假设检验统计量服从BinomialDistribution[n,1/2],其中 n 是 dspec 中不等于 μ0 的元素数目.
- 对于多变量样本,SignTest 使用空间符号对成对样本执行一个仿射不变检验. 假设检验统计量服从一个 ChiSquareDistribution[dim],其中 dim 是 dspec 的维度.
- 可以使用以下选项:
-
AlternativeHypothesis "Unequal" 备择假设的不等性 MaxIterations Automatic 多变量中位数检验的最大迭代 Method Automatic 用于
-值的方法SignificanceLevel 0.05 用于诊断和报告的分界点 - 对于 SignTest,选择一个临界值
,使得当且仅当
时,否定
. 用于 "TestConclusion" 和 "ShortTestConclusion" 属性的
值由 SignificanceLevel 选项控制. 默认情况下,
设为 0.05.
范例
打开所有单元 关闭所有单元基本范例 (4)
data = RandomVariate[NormalDistribution[], 100];SignTest[data]data = RandomVariate[MultinormalDistribution[{0, 0, 0}, IdentityMatrix[3]], 10^3];SignTest[data, {.5, .5, .5}]SignTest[data, {.5, .5, .5}, "TestStatistic"]data = RandomVariate[MultinormalDistribution[{2, 0}, {{1, .75}, {.75, 1}}], 1000];SignTest[Transpose@data, 2]SignTest[Transpose@data, 2, "TestDataTable"]创建一个 HypothesisTestData 对象,用以进行重复属性提取:
data = RandomVariate[StudentTDistribution[4], 100];ℋ = SignTest[data, Automatic, "HypothesisTestData"]ℋ["Properties"]ℋ["TestData"]ℋ["TestDataTable", "PValue", "TestStatistic"]范围 (13)
检验 (10)
data1 = RandomVariate[NormalDistribution[0, 1], 500];
data2 = RandomVariate[NormalDistribution[3, 1], 500];SignTest[data1]SignTest[data2]使用 Automatic 等价于检验中位数是否为0:
data = RandomVariate[NormalDistribution[0, 1], 500];SignTest[data, 0]SignTest[data, Automatic]data1 = RandomVariate[NormalDistribution[3, 1], 500];
data2 = RandomVariate[NormalDistribution[0, 1], 500];SignTest[data1, 3]SignTest[data2, 3]data = RandomVariate[MultinormalDistribution[{.1, 0, -.05, 0}, IdentityMatrix[4]], 10^3];SignTest[data]SignTest[data, {0.1, 0, -.05, 0}]data1 = RandomVariate[NormalDistribution[0, 1], 100];
data2 = RandomVariate[NormalDistribution[1, 1], 100];
data3 = RandomVariate[NormalDistribution[0, 2], 100];SignTest[{data1, data2}, 0]SignTest[{data1, data3}, 0]data1 = RandomVariate[NormalDistribution[3, 1], 100];
data2 = RandomVariate[NormalDistribution[0, 1], 100];SignTest[{data1, data2}, 3]SignTest[{data2, data1}, 3]data1 = RandomVariate[MultinormalDistribution[{.5, 0, -.5, 0}, IdentityMatrix[4]], 10^2];data2 = RandomVariate[MultinormalDistribution[{-.5, 0, .5, 0}, IdentityMatrix[4]], 10^2];SignTest[{data1, data2}]SignTest[{data1, data2}, {1, 0, -1, 0}]创建一个 HypothesisTestData 对象,用以进行重复属性提取:
data = RandomVariate[NormalDistribution[], {2, 10^4}];ℋ = SignTest[data, 0, "HypothesisTestData"];ℋ["Properties"]从 HypothesisTestData 对象中提取某些属性:
data = RandomVariate[NormalDistribution[], {2, 10^4}];ℋ = SignTest[data, 0, "HypothesisTestData"];ℋ["PValue"]ℋ["TestStatistic"]data = RandomVariate[NormalDistribution[], {2, 10^4}];ℋ = SignTest[data, 0, "HypothesisTestData"];ℋ["PValue", "TestStatistic"]报告 (3)
data = RandomVariate[NormalDistribution[], {2, 20}];ℋ = SignTest[data, 0, "HypothesisTestData"];ℋ["TestDataTable"]data = RandomVariate[NormalDistribution[], {1000, 25}];res = Table[SignTest[v, 0, "TestData"], {v, data}];ListPlot[res, Filling -> Axis]data = RandomVariate[NormalDistribution[], {2, 10^2}];ℋ = SignTest[data, 0, "HypothesisTestData"];ℋ["PValueTable"]ℋ["PValue"]ℋ["TestStatisticTable"]ℋ["TestStatistic"]选项 (9)
AlternativeHypothesis (3)
data = RandomVariate[NormalDistribution[], {2, 100}];SignTest[data, 0, AlternativeHypothesis -> "Unequal"]SignTest[data, 0, AlternativeHypothesis -> Automatic]data = RandomVariate[NormalDistribution[], {2, 100}];SignTest[data, 0, AlternativeHypothesis -> "Unequal"]SignTest[data, 0, AlternativeHypothesis -> "Less"]SignTest[data, 0, AlternativeHypothesis -> "Greater"]data1 = RandomVariate[NormalDistribution[2.9, 1], 1000];
data2 = RandomVariate[NormalDistribution[0, 1], 1000];Mean[data1 - data2]SignTest[{data1, data2}, 3, AlternativeHypothesis -> "Less"]SignTest[{data1, data2}, 2.9, AlternativeHypothesis -> "Less"]MaxIterations (2)
data1 = RandomVariate[BinormalDistribution[.5], 25];
data2 = RandomVariate[BinormalDistribution[.5], 25];SignTest[{data1, data2}, Automatic, MaxIterations -> 500]SignTest[{data1, data2}, Automatic, MaxIterations -> Automatic]BlockRandom[SeedRandom[2];
data1 = RandomVariate[BinormalDistribution[.5], 25];
data2 = RandomVariate[BinormalDistribution[.5], 25];]SignTest[{data1, data2}, Automatic, MaxIterations -> 1]SignTest[{data1, data2}, Automatic, MaxIterations -> Automatic]Method (3)
默认情况下,使用单变量数据的 BinomialDistribution 计算
值:
data = RandomVariate[NormalDistribution[], {2, 100}];SignTest[data, 0, Method -> Automatic]SignTest[data, 0, Method -> "Permutation"]data = RandomVariate[NormalDistribution[], {2, 500}];SignTest[data, 0, Method -> "Asymptotic"]SignTest[data, 0, Method -> "Permutation"]data = RandomVariate[NormalDistribution[], {35, 2}];SignTest[data, 0, Method -> "Asymptotic"]SignTest[data, 0, Method -> "Permutation"]SignificanceLevel (1)
对于 "TestConclusion" 和 "ShortTestConclusion" 也可使用显著性水平:
BlockRandom[SeedRandom[1];data = RandomVariate[NormalDistribution[0, 1], {2, 100}]];ℋ1 = SignTest[data, .2, "HypothesisTestData", SignificanceLevel -> .05];ℋ2 = SignTest[data, .2, "HypothesisTestData", SignificanceLevel -> .001];ℋ1["TestConclusion"]//TraditionalFormℋ2["TestConclusion"]//TraditionalFormℋ1["ShortTestConclusion"]ℋ2["ShortTestConclusion"]应用 (2)
对 8 个病人进行新的睡眠辅助方法检验. 对某个晚上,分别记录每个病人服用药物和服用安慰剂入睡所花的分钟数:
sleepAid = {12, 9, 11, 21, 17, 22, 18, 11};
placebo = {21, 16, 8, 36, 28, 20, 29, 22};SmoothHistogram[{sleepAid, placebo}]SignTest 没有检测到睡眠辅助药物和安慰剂的不同:
SignTest[{sleepAid, placebo}, 0, "TestDataTable"]DistributionFitTest /@ {sleepAid, placebo}一个效能更好的 PairedTTest 显示服用睡眠辅助药物,入睡所花时间更短:
PairedTTest[{sleepAid, placebo}, 0, "TestDataTable"]10 个数学和科学成绩很低的学生被要求参加为期两个星期的强化数学和科学集训项目. 在项目后,举行一个测验,该测验与原考试类似. 这些学生在两次考试的数学和科学部分的得分如下:
preMath = {64, 51, 45, 37, 60, 67, 51, 59, 65, 53};
preSci = {58, 46, 62, 40, 58, 34, 69, 31, 26, 58};
postMath = {84, 68, 73, 72, 78, 72, 70, 65, 81, 78};
postSci = {66, 69, 64, 70, 60, 57, 59, 68, 59, 56};pre = Transpose[{preMath, preSci}];
post = Transpose[{postMath, postSci}];ContourPlot[Evaluate@PDF[SmoothKernelDistribution[N[post - pre]], {m, s}], {m, -8, 50}, {s, -25, 50}, PlotRange -> All]SignTest[{Transpose[{preMath, preSci}], Transpose[{postMath, postSci}]}, 0, "TestDataTable"]对每个分量的 Bonferroni-corrected 检验,表明数学成绩本身对所检测到的进步起作用:
α = .05;SignTest[{preSci, postSci}, 0, "ShortTestConclusion", SignificanceLevel -> α / 2]SignTest[{preMath, postMath}, 0, "ShortTestConclusion", SignificanceLevel -> α / 2]属性和关系 (6)
从概念上讲,SignTest 计算一个数据集中正号的数目:
data = RandomVariate[BinomialDistribution[10, .5], 100];μ = 10 * .5;sgn = Sign[data - μ];T = Count[sgn, 1]对于单变量数据,忽略零,检验统计量服从 BinomialDistribution:
n = Count[sgn, Except[0]];Probability[x <= T, xBinomialDistribution[n, .5]]SignTest[data, μ, "TestDataTable", AlternativeHypothesis -> "Less"]对于定位而言,SignTest 通常没有其它假设检验强大:
data = RandomVariate[NormalDistribution[.5, 1], {1000, 25}];Subscript[p, sign] = Table[SignTest[i], {i, data}];
Subscript[p, sr] = Table[SignedRankTest[i, VerifyTestAssumptions -> None], {i, data}];
Subscript[p, T] = Table[TTest[i, VerifyTestAssumptions -> None], {i, data}];Probability[x < .05, xSubscript[p, sign]]//NProbability[x < .05, xSubscript[p, sr]]//NProbability[x < .05, xSubscript[p, T]]//NSpatialSign[d_] := With[{norm = Norm[d]}, If[norm == 0, ConstantArray[0, Length[d]], d / norm]]data1 = RandomVariate[MultinormalDistribution[{0, 0}, IdentityMatrix[2]], 100];
data2 = RandomVariate[MultinormalDistribution[{2, 1}, IdentityMatrix[2]], 100];{ListPlot[SpatialSign /@ data1, AspectRatio -> 1, PlotRange -> {{-1, 1}, {-1, 1}}], ListPlot[SpatialSign /@ data2, AspectRatio -> 1, PlotRange -> {{-1, 1}, {-1, 1}}]}t1 = SignTest[data1, {0, 0}, "TestStatistic"]t2 = SignTest[data2, {0, 0}, "TestStatistic"]检验统计量服从 ChiSquareDistribution:
p = Dimensions[data1][[2]]Probability[x > t1, xChiSquareDistribution[p]]SignTest[data1]data = RandomVariate[MultinormalDistribution[{0, 0}, IdentityMatrix[2]], 100];𝒯 = AffineTransform[{{{1, 2}, {3, 4}}, {1, 2}}];SignTest[data, {0, 0}, "TestDataTable"]SignTest[𝒯[data], 𝒯[{0, 0}], "TestDataTable"]只有当输入是一个 TimeSeries 时,符号检测才会作用于值(values):
ts = TemporalData[TimeSeries, {{{1.224578634529677, 0.47929635789978015, 0.6572781300178168,
0.21496048742669355, 0.7299608014554928, -0.2495111111278263, -1.3286551762002712,
0.552725018274874, 0.19272112205837066, 1.1809144012420882, -1.1671 ... 40938613662046, 1.052394590214582, 0.9345044123980388, 0.38537803109557855,
-0.48660931166089394, -0.71203560340161}}, {{0, 100, 1}}, 1, {"Continuous", 1},
{"Discrete", 1}, 1, {ValueDimensions -> 1, ResamplingMethod -> None}}, False, 10.1];SignTest[ts]SignTest[ts["Values"]]当输入是一个 TemporalData 时,符号检测一起作用于所有值:
td = TemporalData[Automatic, {{{-0.25275046867718637, -0.7175779198306353, -1.9370139837317764,
0.006665621735740701, -0.3730807122324292, 0.6740106823161018, 0.8562214990564344,
0.955785083955732, 1.7020898014886303, 1.8523009430646802, 0.244 ... 3951759101545, -1.1611722313627828, 1.1602446901533021,
1.1052173095128992, 1.1089143920161917, -0.13837156328402}}, {{0, 100, 1}}, 2,
{"Continuous", 2}, {"Discrete", 1}, 1, {ValueDimensions -> 1, ResamplingMethod -> None}}, False,
10.1];SignTest[td]data = td["ValueList"]//Flatten;
SignTest[data]{data1, data2} = td["ValueList"];SignTest[{data1, data2}]巧妙范例 (2)
data1 = RandomVariate[NormalDistribution[], {2500, 100}];
data2 = RandomVariate[NormalDistribution[], {2500, 100}];T1 = MapThread[SignTest[{#1, #2}, 0, "TestStatistic"]&, {data1, data2}];T2 = MapThread[SignTest[{#1, #2}, 1, "TestStatistic"]&, {data1, data2}];SmoothHistogram[{T1, T2}, Filling -> Axis, PlotLegends -> {"SubscriptBox[H, 0] is True", "SubscriptBox[H, 0] is False"}]三维空间中,空间符号的分布表明:从零均值向量的较大偏离,通常产生更多的高度集中的空间符号和较大的符号统计量:
SpatialSign[d_] := With[{norm = Norm[d]}, If[norm == 0, ConstantArray[0, Length[d]], d / norm]]data = Table[RandomVariate[MultinormalDistribution[{a, -.5a, a}, IdentityMatrix[3]], 500], {a, {0, 1, 2, 4}}];sPointPlot[data_] := Show[Graphics3D[{Directive[Yellow, Specularity[White, 20]], Sphere[{0, 0, 0}]}], ListPointPlot3D[SpatialSign /@ data, PlotRange -> {{-1, 1}, {-1, 1}, {-1, 1}}], Boxed -> False, PlotLabel -> TextCell[SignTest[data, 0, "TestStatistic"], "Section"], Background -> GrayLevel[0]]GraphicsGrid[Partition[sPointPlot /@ data, 2]]相关指南
-
▪
- 假设检验
文本
Wolfram Research (2010),SignTest,Wolfram 语言函数,https://reference.wolfram.com/language/ref/SignTest.html.
CMS
Wolfram 语言. 2010. "SignTest." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/SignTest.html.
APA
Wolfram 语言. (2010). SignTest. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/SignTest.html 年
BibTeX
@misc{reference.wolfram_2026_signtest, author="Wolfram Research", title="{SignTest}", year="2010", howpublished="\url{https://reference.wolfram.com/language/ref/SignTest.html}", note=[Accessed: 11-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_signtest, organization={Wolfram Research}, title={SignTest}, year={2010}, url={https://reference.wolfram.com/language/ref/SignTest.html}, note=[Accessed: 11-September-2026]}