失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > F1 中位数 四分位距IQR等指标的统计检验

F1 中位数 四分位距IQR等指标的统计检验

时间:2023-05-12 02:44:38

相关推荐

F1  中位数 四分位距IQR等指标的统计检验

本文参考Cohen 19951的5.3节。

F1, 中位数,四分位距IQR等指标的统计检验

对于许多有趣的统计数据,例如剪裁平均值(Trimmed Mean),四分位间距(IQR)和F1-score,没有明确的样本分布公式。这时可以用到随机统计检验(Randomization Tests).

随机统计检验(Randomization Tests)

与传统的参数检验和bootstrap检验相比,随机统计检验可以在不参考总体参数(例如,中位数这个指标的统计分布)的情况下,判断两个样本的区别是否统计显著。下面给具体例子:

1. 举例:比较两组数据的IQR是否有显著差别

有两个班参加同一个考试。第一个班有25名学生,第二个班有20名学生。学生分数如下:

Sample 1:

48.35, 53.93, 55.48, 45.67, 52.82,49.47, 57.00, 53.61, 57.69, 51.34,44.98, 54.70, 59.32, 51.70, 50.73,46.84, 63.13, 52.50, 49.67, 54.07,44.96, 48.68, 53.94, 59.00, 50.92

Sample 2:

64.82, 51.69, 57.00, 58.17, 40.63,50.90, 48.77, 40.33, 50.76, 49.64,56.25, 65.68, 57.50, 47.45, 46.78,61.34, 53.66, 49.10, 54.49, 54.15

我们想知道样本2是否比样本1的组内差异更大(more variable, or, with larger standard deviation)。这里用四分位间距IQR来衡量组内差异。使用的python的scipy.stat.iqr计算出Sample 1和Sample 2的IQR分别为5.23和8.11。差额是dIQR=5.23−8.11=−2.88d_{IQR}=5.23-8.11=-2.88dIQR​=5.23−8.11=−2.88。为了确定这种差异偶然产生的概率,我们需要dIQRd_{IQR}dIQR​的值分布。与比较两组数的均值大小是否有显著差异不同,我们不能写出dIQRd_{IQR}dIQR​的解析分布(对于均值,可以将dmeand_{mean}dmean​转化成Standard Normal Distribution,参考z-test)。所以需要一些其他的方法,e.g., Randomization Tests.

现在考虑假设检验:H0H_0H0​:两个样本的IQR水平相同。如果H0H_0H0​是正确的,那么在样本之间随机交换分数几乎不会影响dIQRd_{IQR}dIQR​。这将导致以下过程:随机地对两组数进行Shuffle,以对dIQRd_{IQR}dIQR​的分布进行抽样。

2. 操作步骤:

设SAS_ASA​和SBS_BSB​是两个大小为NAN_ANA​和NBN_BNB​的样本。设θ=f(SA,SB)\theta=f(S_A,S_B)θ=f(SA​,SB​)是根据两个样本计算的某个统计量,例如样本的IQR。设SA+B=SA+SBS_{A+B}=S_A+S_BSA+B​=SA​+SB​,即SAS_ASA​和SBS_BSB​两个集合的并集。

执行KKK次:

彻底Shuffle SA+BS_{A+B}SA+B​的元素将SA+BS_{A+B}SA+B​的前NAN_ANA​元素分配给随机伪样本Ai∗A_i^*Ai∗​,并将其余的NBN_BNB​个元素赋给为Bi∗B_i^*Bi∗​。计算θi∗=f(Ai∗,Bi∗)\theta_i^*=f(A_i^*, B_i^*)θi∗​=f(Ai∗​,Bi∗​),并记录结果。

在H0H_0H0​假设下,θ\thetaθ与这个方法抽样出来的{θi∗}\{\theta_i^*\}{θi∗​}同分布。

对于上面的例子,通过执行这些过程,我们获得了500个dIQR∗d_{IQR}^*dIQR∗​的值。分布直方图如下所示。

分布的平均值为0.007825,标准差为2.478。如果Sample 2的IQR明显大于Sample 1,那么dIQR=−2.88d_{IQR}=-2.88dIQR​=−2.88应该是一个绝对值异常大的负数。但是,在分布中,只有12.6%的值小于-2.88,这意味着我们不能拒绝H0H_0H0​(在p<0.05p<0.05p<0.05的水平下)。为此,我们不能说Sample 2比Sample 1的IQR大得多。

from scipy.stats import iqrimport matplotlib.pyplot as pltimport numpy as nps_a = [48.35, 53.93, 55.48, 45.67,52.82,49.47, 57.00, 53.61, 57.69, 51.34,44.98, 54.70, 59.32, 51.70, 50.73,46.84, 63.13, 52.50, 49.67, 54.07,44.96, 48.68, 53.94, 59.00, 50.92]s_b = [64.82, 51.69, 57.00, 58.17, 40.63,50.90, 48.77, 40.33, 50.76, 49.64,56.25, 65.68, 57.50, 47.45, 46.78,61.34, 53.66, 49.10, 54.49, 54.15]print(iqr(s_a))print(iqr(s_b))K = 500thetas = []s_ab = np.array(s_a + s_b)for i in range(K):idx = np.random.permutation(len(s_ab))s_a_star, s_b_star = s_ab[idx[:len(s_a)]], s_ab[idx[len(s_a):]]thetas.append(iqr(s_a_star)-iqr(s_b_star)) plt.hist(thetas, bins=20)plt.show()

如果想要检验f1、中位数等,只需要更换f()f()f()function的形式就好。

3. 双样本ttt-test的随机形式

当测试两个样本的平均值时,原始样本为SAS_ASA​和SBS_BSB​,样本统计值为θ=xˉSA−xSBˉ\theta=\bar{x}_{S_A}-\bar{x_{S_B}}θ=xˉSA​​−xSB​​ˉ​。使用上面的过程,我们可以生成θi∗\theta_i^*θi∗​的分布。对于双尾检验,在p<0.05p<0.05p<0.05下,我们应该检查θ\thetaθ是否落在抽样分布的2.5%上下。

4. 其他随机Test方法(Computer-Intensive Statistical Methods)

Monte Carlo Tests

从正态分布(或者某个分布)中提取样本来重构样本数据。

检查一组样本中的某些统计数据是否显著大/小(异常)。

最好知道分布情况。

bootstrap方法

在有限的样本中bootstrap。

bootstrap两个样本,其他样本与随机试验相似。

5. 其他

采样次数:比如有SA+BS_{A+B}SA+B​中有nnn个样本,那理论上有2n2^n2n种shuffle方法。如果n<=20n<=20n<=20,那么直接采样2n2^n2n次,如果n>20n>20n>20,采样2202^{20}220次2。

Cohen, Paul R. Empirical methods for artificial intelligence. Vol. 139. Cambridge, MA: MIT press, 1995. ↩︎

Yeh, Alexander. “More accurate tests for the statistical significance of result differences.” Proceedings of the 18th conference on Computational linguistics-Volume 2. 2000. ↩︎

如果觉得《F1 中位数 四分位距IQR等指标的统计检验》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。