Страница 1 из 1

Пермутационный t-критерий

Добавлено: 21 фев 2013, 21:46
Dryomys
Кто-нибудь знает, в R он есть в виде отдельной функции? Нужно сравнить средние двух выборок рандомизационным методом.

Re: Пермутационный t-критерий

Добавлено: 23 фев 2013, 00:17
MYS
boot package вашу проблему не решает?

http://cran.r-project.org/web/packages/boot/index.html

Re: Пермутационный t-критерий

Добавлено: 23 фев 2013, 06:39
gamm
Dryomys писал(а):Кто-нибудь знает, в R он есть в виде отдельной функции? Нужно сравнить средние двух выборок рандомизационным методом.
у вас заголовок поста неправильный: t-критерий параметрический, перестановочные критерии непараметрические, и то, и другое вместе не бывает.

А так, либо руками, либо используя boot, строим интервал и смотрим, есть в нем ноль или нет

Код: Выделить всё

library(boot)
x1<-rnorm(50,0,1)
x2<-rnorm(50,1,1)
ind<-rep(1:2,each=50)
tmp<-data.frame(x=c(x1,x2),series=ind) # имя series - фиксированное
abc.ci(tmp, mean.diff)

Re: Пермутационный t-критерий

Добавлено: 23 фев 2013, 09:52
Dryomys
MYS, спасибо, буду разбираться! Я в пакете coin рылась по совету книжки Kabacoff R. - R in Action - 2011
gamm ничего подобного. Можно тут использовать пермутации, как раз смысл в том, что в данном случае не нужно заморачиваться с приведением данных к нормальному виду. Например: считаем t-критерий как обычно, потом 1000 раз считаем с помощью пермутаций, рисуем распределение и смотрим, куда попал наш, вычисленный по исходным данным. Кстати, для параметрического коэффициента корреляции Пирсона в пакете coin функция есть.

Re: Пермутационный t-критерий

Добавлено: 23 фев 2013, 14:08
gamm
Dryomys писал(а):gamm ничего подобного. Можно тут использовать пермутации, как раз смысл в том, что в данном случае не нужно заморачиваться с приведением данных к нормальному виду. Например: считаем t-критерий как обычно, потом 1000 раз считаем с помощью пермутаций, рисуем распределение и смотрим, куда попал наш, вычисленный по исходным данным.
1) о каком "приведении к нормальному виду" вы говорите - по крайне мере в критерии Стьюдента его нет.
2) критерий Стьюдента - параметрический. Т.е. распределение статистики известно при выполнении определенных условий. Если условия выполнены, то он работает. Если нет - то приведенная вами процедура просто не имеет смысла.
3) при выполнении перестановочных тестов оценивается распределение статистики, в данном случае разности средних. Придумать можно, конечно, сколь угодно бессмысленную процедуру, но опубликовать такое в приличном издании вряд ли удастся. Просто посмотрите, как это сделано в пакете boot.
Dryomys писал(а):Кстати, для параметрического коэффициента корреляции Пирсона в пакете coin функция есть.
для корреляции сам коэффициент корреляции и есть статистика (в отличие от t-статистики, для которой исходной статистикой, которую собственно и проверяют, является разность средних).

Re: Пермутационный t-критерий

Добавлено: 24 фев 2013, 04:55
gamm
поскольку эта фраза заинтересовала
Dryomys писал(а): Кстати, для параметрического коэффициента корреляции Пирсона в пакете coin функция есть.
посмотрел пакет coin. Там того, что вы предлагаете, естественно нет, там вообще параметрический (точный) критерий, распределение вероятностей для которого в некоторых случаях вычисляется с использованием перестановочных тестов. Никто там коэффициент корреляции не вычисляет, там вычисляется некоторая статистика, которая (при разных модификациях) может использоваться для проверки разных гипотез, там их дюжина. Так что название поправьте.

Re: Пермутационный t-критерий

Добавлено: 07 мар 2013, 13:10
Dryomys
искомая функция нашлась на сайте Пьера Лежандра adn.biol.umontreal.ca/~numericalecology/Rcode/
Всем большое спасибо за комментарии!

Re: Пермутационный t-критерий

Добавлено: 07 мар 2013, 19:36
gamm
Dryomys писал(а):искомая функция нашлась на сайте Пьера Лежандра adn.biol.umontreal.ca/~numericalecology/Rcode/
1) приведенная функция не решает вашу задачу
Нужно сравнить средние двух выборок рандомизационным методом.
поскольку это парный тест (сравнение показателя объекта до treatment и после).

2) тов. Лежандр не прав даже в этом случае, что видно из приведенного ниже примера (который нужно запустить):

Код: Выделить всё

set.seed(123)
p.x<-rnorm(20)
p.y<-rnorm(20)
p.xy<-p.y - p.x
res.sd<-c()
for(i in 1:1000) {
  ind<-rbinom(100,1,0.5)
  p.xy1<-p.xy*(1-2*ind)
  res.sd<-c(res.sd,sd(p.xy1))
}
p.sd<-sd(p.xy)
hist(res.sd,breaks=30,xlim=range(c(p.sd,res.sd)))
lines(c(p.sd,p.sd),c(0,1000),col="red")
СКО, на которое делится разность при перестановках, всегда меньше, чем СКО исходной выборки, что даст смещенное p-value ("перестановочные" разности будут смещены по модулю в большую сторону - немного, но смещены). Сравнивать нужно просто средние ...