Я тоже посчитал этот пример из Руниона с 5 и 5, при помощи оригинальных функций на R. Первая использует разность средних, вторая - статистику Уэлча (может быть предпочтительнее в случае выборок разных объемов с разными дисперсиями). В выдаче первый элемент списка - наблюдаемая статистика, второй - стастистика при всех сочетаниях (обратите внимание что первая и последнее числа всегда равны по модулю, это и есть та самая ранее мною упомянутая паразитическая пара, ограничивающая минимальный достигаемый уровень значимости), третий - p. В данном примерe в обоих тестах p равны, и больше минимально возможного 2/252, следовательно упор в "технический порог" не произошел, и результаты адекватно отражают ошибку первого рода (хотя и в довольно грубом приближении, поскольку в вычислении опирается на ступенчатую эмпирическую функцию распределения). Это же можно понять, видя что в середине второго элемента списка есть числа, большие или равные по модулю первому и последнему. В противном случае можно было бы котировать что p-значение теста вследствие принципиального изъяна алгоритма его вычисления отражает не реальную ситуацию с данными, а погоду на Луне

Код
exactmeandifftest<-function(x, y) #Тестовая статистика - разность средних арифметических
{
if(length(y)>length(x))
{
x_<-y
y_<-x}
else
{
x_<-x
y_<-y
}
k<-length(x_)
xy<-c(x_, y_)
n<-length(xy)
id<-1:n
combmat<-combn(id, k)
recmeandiff<-function(X, xy)
{
x<-xy[X]
y<-xy[-X]
meandiff<-mean(x)-mean(y)
return(meandiff)
}
diffobs<-mean(x_)-mean(y_)
diffsim<-apply(combmat, 2, recmeandiff, xy=xy)
absdiffobs<-abs(diffobs)
absdiffsim<-abs(diffsim)
res<-as.numeric(round(absdiffsim[2:length(absdiffsim)], digits=6)>=round(absdiffobs, digits=6))
p<-(1+sum(res))/(ncol(combmat))
return(list(diffobs, diffsim, p))
}
__________________________________________
exactwelchtest<-function(x, y) #Тестовая статистика - статистика Уэлча
{
if(length(y)>length(x))
{
x_<-y
y_<-x}
else
{
x_<-x
y_<-y
}
k<-length(x_)
xy<-c(x_, y_)
n<-length(xy)
id<-1:n
combmat<-combn(id, k)
recmeandiff<-function(X, xy)
{
x<-xy[X]
y<-xy[-X]
t<-(mean(x)-mean(y))/sqrt((var(x)/length(x))+(var(y)/length(y)))
return(t)
}
tobs<-(mean(x_)-mean(y_))/sqrt((var(x_)/length(x_))+(var(y_)/length(y_)))
tsim<-apply(combmat, 2, recmeandiff, xy=xy)
abstobs<-abs(tobs)
abstsim<-abs(tsim)
res<-as.numeric(round(abstsim[2:length(abstsim)], digits=6)>=round(abstobs, digits=6))
p<-(1+sum(res))/(ncol(combmat))
return(list(tobs, tsim, p ))
}
x<-c(0.18, 0.27, 0.19, 0.36, 0.43)
y<-c(0.41, 0.38, 0.73, 0.49, 0.58)
exactmeandifftest(x, y)
[[1]]
[1] -0.232
[[2]]
[1] -0.232 -0.240 -0.252 -0.112 -0.208 -0.172 -0.212 -0.224 -0.084 -0.180 -0.144 -0.232
[13] -0.092 -0.188 -0.152 -0.104 -0.200 -0.164 -0.060 -0.024 -0.120 -0.144 -0.156 -0.016
[25] -0.112 -0.076 -0.164 -0.024 -0.120 -0.084 -0.036 -0.132 -0.096 0.008 0.044 -0.052
[37] -0.136 0.004 -0.092 -0.056 -0.008 -0.104 -0.068 0.036 0.072 -0.024 -0.016 -0.112
[49] -0.076 0.028 0.064 -0.032 0.016 0.052 -0.044 0.096 -0.176 -0.188 -0.048 -0.144
[61] -0.108 -0.196 -0.056 -0.152 -0.116 -0.068 -0.164 -0.128 -0.024 0.012 -0.084 -0.168
[73] -0.028 -0.124 -0.088 -0.040 -0.136 -0.100 0.004 0.040 -0.056 -0.048 -0.144 -0.108
[85] -0.004 0.032 -0.064 -0.016 0.020 -0.076 0.064 -0.100 0.040 -0.056 -0.020 0.028
[97] -0.068 -0.032 0.072 0.108 0.012 0.020 -0.076 -0.040 0.064 0.100 0.004 0.052
[109] 0.088 -0.008 0.132 0.048 -0.048 -0.012 0.092 0.128 0.032 0.080 0.116 0.020
[121] 0.160 0.072 0.108 0.012 0.152 0.140 -0.140 -0.152 -0.012 -0.108 -0.072 -0.160
[133] -0.020 -0.116 -0.080 -0.032 -0.128 -0.092 0.012 0.048 -0.048 -0.132 0.008 -0.088
[145] -0.052 -0.004 -0.100 -0.064 0.040 0.076 -0.020 -0.012 -0.108 -0.072 0.032 0.068
[157] -0.028 0.020 0.056 -0.040 0.100 -0.064 0.076 -0.020 0.016 0.064 -0.032 0.004
[169] 0.108 0.144 0.048 0.056 -0.040 -0.004 0.100 0.136 0.040 0.088 0.124 0.028
[181] 0.168 0.084 -0.012 0.024 0.128 0.164 0.068 0.116 0.152 0.056 0.196 0.108
[193] 0.144 0.048 0.188 0.176 -0.096 0.044 -0.052 -0.016 0.032 -0.064 -0.028 0.076
[205] 0.112 0.016 0.024 -0.072 -0.036 0.068 0.104 0.008 0.056 0.092 -0.004 0.136
[217] 0.052 -0.044 -0.008 0.096 0.132 0.036 0.084 0.120 0.024 0.164 0.076 0.112
[229] 0.016 0.156 0.144 0.120 0.024 0.060 0.164 0.200 0.104 0.152 0.188 0.092
[241] 0.232 0.144 0.180 0.084 0.224 0.212 0.172 0.208 0.112 0.252 0.240 0.232
[[3]]
[1] 0.03174603
Код
exactwelchtest (x, y)
[[1]]
[1] -2.909105
[[2]]
[1] -2.90910520 -3.12771621 -3.51153439 -1.04349839 -2.37346442 -1.77498894 -2.45287581
[8] -2.71320887 -0.76031333 -1.89337368 -1.40556386 -2.90910520 -0.83879342 -2.01905570
[15] -1.50502427 -0.96000454 -2.22387014 -1.66294052 -0.53371828 -0.21036451 -1.12946492
[22] -1.40556386 -1.55642433 -0.14002801 -1.04349839 -0.68343776 -1.66294052 -0.21036451
[29] -1.12946492 -0.76031333 -0.31664339 -1.26375113 -0.87870243 0.06994974 0.38821179
[36] -0.46051974 -1.31011711 0.03496685 -0.83879342 -0.49699792 -0.06994974 -0.96000454
[43] -0.60796735 0.31664339 0.64553873 -0.21036451 -0.14002801 -1.04349839 -0.68343776
[50] 0.24567075 0.57070110 -0.28109135 0.14002801 0.46051974 -0.38821179 0.87870243
[57] -1.83333333 -2.01905570 -0.42426407 -1.40556386 -1.00146067 -2.15319621 -0.49699792
[64] -1.50502427 -1.08615375 -0.60796735 -1.66294052 -1.21821918 -0.21036451 0.10496474
[71] -0.76031333 -1.71822619 -0.24567075 -1.17347238 -0.79933966 -0.35234428 -1.31011711
[78] -0.91909591 0.03496685 0.35234428 -0.49699792 -0.42426407 -1.40556386 -1.00146067
[85] -0.03496685 0.28109135 -0.57070110 -0.14002801 0.17515579 -0.68343776 0.57070110
[92] -0.91909591 0.35234428 -0.49699792 -0.17515579 0.24567075 -0.60796735 -0.28109135
[99] 0.64553873 1.00146067 0.10496474 0.17515579 -0.68343776 -0.35234428 0.57070110
[106] 0.91909591 0.03496685 0.46051974 0.79933966 -0.06994974 1.26375113 0.42426407
[113] -0.42426407 -0.10496474 0.83879342 1.21821918 0.28109135 0.72168784 1.08615375
[120] 0.17515579 1.60903597 0.64553873 1.00146067 0.10496474 1.50502427 1.35736936
[127] -1.35736936 -1.50502427 -0.10496474 -1.00146067 -0.64553873 -1.60903597 -0.17515579
[134] -1.08615375 -0.72168784 -0.28109135 -1.21821918 -0.83879342 0.10496474 0.42426407
[141] -0.42426407 -1.26375113 0.06994974 -0.79933966 -0.46051974 -0.03496685 -0.91909591
[148] -0.57070110 0.35234428 0.68343776 -0.17515579 -0.10496474 -1.00146067 -0.64553873
[155] 0.28109135 0.60796735 -0.24567075 0.17515579 0.49699792 -0.35234428 0.91909591
[162] -0.57070110 0.68343776 -0.17515579 0.14002801 0.57070110 -0.28109135 0.03496685
[169] 1.00146067 1.40556386 0.42426407 0.49699792 -0.35234428 -0.03496685 0.91909591
[176] 1.31011711 0.35234428 0.79933966 1.17347238 0.24567075 1.71822619 0.76031333
[183] -0.10496474 0.21036451 1.21821918 1.66294052 0.60796735 1.08615375 1.50502427
[190] 0.49699792 2.15319621 1.00146067 1.40556386 0.42426407 2.01905570 1.83333333
[197] -0.87870243 0.38821179 -0.46051974 -0.14002801 0.28109135 -0.57070110 -0.24567075
[204] 0.68343776 1.04349839 0.14002801 0.21036451 -0.64553873 -0.31664339 0.60796735
[211] 0.96000454 0.06994974 0.49699792 0.83879342 -0.03496685 1.31011711 0.46051974
[218] -0.38821179 -0.06994974 0.87870243 1.26375113 0.31664339 0.76031333 1.12946492
[225] 0.21036451 1.66294052 0.68343776 1.04349839 0.14002801 1.55642433 1.40556386
[232] 1.12946492 0.21036451 0.53371828 1.66294052 2.22387014 0.96000454 1.50502427
[239] 2.01905570 0.83879342 2.90910520 1.40556386 1.89337368 0.76031333 2.71320887
[246] 2.45287581 1.77498894 2.37346442 1.04349839 3.51153439 3.12771621 2.90910520
[[3]]
[1] 0.03174603