gpt4 book ai didi

Python实现以排列数为输入的Permutation Test

转载 作者:太空狗 更新时间:2023-10-30 00:26:28 34 4
gpt4 key购买 nike

R 著名的置换测试库,即 perm .我感兴趣的示例是:

 x <- c(12.6, 11.4, 13.2, 11.2, 9.4, 12.0)
y <- c(16.4, 14.1, 13.4, 15.4, 14.0, 11.3)
permTS(x,y, alternative="two.sided", method="exact.mc", control=permControl(nmc=30000))$p.value

打印 p 值的结果:0.01999933。请注意,函数 permTS 允许我们输入排列数 = 30000。Python中有类似的实现吗?

我在看 Python 的 perm_stat ,但这不是我要找的,而且看起来是 buggy 。

最佳答案

这是使用蒙特卡洛方法进行置换测试的可能实现:

def exact_mc_perm_test(xs, ys, nmc):
n, k = len(xs), 0
diff = np.abs(np.mean(xs) - np.mean(ys))
zs = np.concatenate([xs, ys])
for j in range(nmc):
np.random.shuffle(zs)
k += diff < np.abs(np.mean(zs[:n]) - np.mean(zs[n:]))
return k / nmc

请注意,考虑到算法的蒙特卡洛性质,您不会在每次运行时得到完全相同的数字:

>>> xs = np.array([12.6, 11.4, 13.2, 11.2, 9.4, 12.0])
>>> ys = np.array([16.4, 14.1, 13.4, 15.4, 14.0, 11.3])
>>> exact_mc_perm_test(xs, ys, 30000)
0.019466666666666667

关于Python实现以排列数为输入的Permutation Test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24795535/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com