scipy.stats.median_test¶
- scipy.stats.median_test(*args, ties='below', correction=True, lambda_=1, nan_policy='propagate')[源代码]¶
进行情绪的中位数测试。
检验两个或更多样本是否来自具有相同中位数的总体。
让我们
n = len(args)
为样本数。计算所有数据的“总中位数”,并通过将每个样本中的值分类为高于或低于总中值来形成列联表。列联表,以及 correction 和 lambda_ ,被传递给scipy.stats.chi2_contingency
计算检验统计量和p值。- 参数
- 样本1,样本2,.array_like
这组样本。必须至少有两个样品。每个样本必须是包含至少一个值的一维序列。样品不需要具有相同的长度。
- ties字符串,可选
确定如何在列联表中对等于总中位数的值进行分类。字符串必须是以下之一::
"below": Values equal to the grand median are counted as "below". "above": Values equal to the grand median are counted as "above". "ignore": Values equal to the grand median are not counted.
默认值为“下方”。
- correction布尔值,可选
如果为True, and 只有两个样本,在计算与列联表相关的测试统计量时,应用Yates的连续性校正。默认值为True。
- lambda_浮点或字符串,可选
默认情况下,此测试中计算的统计量是皮尔逊卡方统计量。 lambda_ 允许使用Cressie-Read功率散度系列中的统计数据。看见
power_divergence
有关详细信息,请参阅。默认值为1(皮尔逊卡方统计量)。- nan_policy{‘Propagate’,‘RAISE’,‘OMIT’},可选
定义输入包含NaN时的处理方式。‘Propagate’返回NaN,‘Raise’抛出错误,‘omit’执行忽略NaN值的计算。默认值为“Propagate”。
- 退货
- stat浮动
测试统计数据。返回的统计信息由 lambda_ 。默认的是皮尔逊的卡方统计。
- p浮动
测试的p值。
- m浮动
大中游。
- tablendarray
列联表。表格的形状是(2,n),其中n是样本数。第一行保存高于中位数的值的计数,第二行保存低于中位数的值的计数。该表允许进一步分析,例如,
scipy.stats.chi2_contingency
,或使用scipy.stats.fisher_exact
如果有两个样本,则无需重新计算表。如果nan_policy
为“Propagate”,并且输入中有NaN,则table
是None
。
参见
kruskal
计算独立样本的Kruskal-Wallis H检验。
mannwhitneyu
对样本x和y计算Mann-Whitney秩检验。
注意事项
0.15.0 新版功能.
参考文献
- 1
莫德,A.M.“统计学理论导论”。麦格劳-希尔(1950),第394-399页。
- 2
“生物统计分析”,第五版。普伦蒂斯·霍尔(2010)。请参见第8.12节和第10.15节。
示例
一位生物学家进行了一项实验,实验中有三组植物。第一组有16株植物,第二组有15株植物,第三组有17株植物。每种植物都会结出许多种子。每组的种子计数为::
Group 1: 10 14 14 18 20 22 24 25 31 31 32 39 43 43 48 49 Group 2: 28 30 31 33 34 35 36 40 44 55 57 61 91 92 99 Group 3: 0 3 9 22 23 25 25 33 34 34 40 45 46 48 62 67 84
下面的代码将Mod的中值测试应用于这些样本。
>>> g1 = [10, 14, 14, 18, 20, 22, 24, 25, 31, 31, 32, 39, 43, 43, 48, 49] >>> g2 = [28, 30, 31, 33, 34, 35, 36, 40, 44, 55, 57, 61, 91, 92, 99] >>> g3 = [0, 3, 9, 22, 23, 25, 25, 33, 34, 34, 40, 45, 46, 48, 62, 67, 84] >>> from scipy.stats import median_test >>> stat, p, med, tbl = median_test(g1, g2, g3)
中位数是
>>> med 34.0
列联表是
>>> tbl array([[ 5, 10, 7], [11, 5, 10]])
p 太大了,不能得出中位数不同的结论:
>>> p 0.12609082774093244
“G-test”可以通过以下方式执行
lambda_="log-likelihood"
至median_test
。>>> g, p, med, tbl = median_test(g1, g2, g3, lambda_="log-likelihood") >>> p 0.12224779737117837
中位数在数据中出现了几次,所以我们会得到不同的结果,例如,
ties="above"
使用的是:>>> stat, p, med, tbl = median_test(g1, g2, g3, ties="above") >>> p 0.063873276069553273
>>> tbl array([[ 5, 11, 9], [11, 4, 8]])
此示例说明,如果数据集不大,并且存在等于中位数的值,则p值可能会对 ties 。