pdu*_*ois 5 python testing statistics r
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
Run Code Online (Sandbox Code Playgroud)
哪个打印结果与p值:0.01999933.请注意,函数permTS允许我们输入排列数= 30000.在Python中是否存在类似的实现?
我正在看Python perm_stat,但它不是我正在寻找的,似乎是错误的.
beh*_*uri 15
这是使用monte-carlo方法进行置换测试的可能方法:
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
Run Code Online (Sandbox Code Playgroud)
请注意,鉴于算法的蒙特卡罗性质,您在每次运行时都不会得到完全相同的数字:
>>> 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
Run Code Online (Sandbox Code Playgroud)