Пермутировать пакет в R - PullRequest
0 голосов
/ 16 марта 2012

Я наткнулся на пакет Permute с форума StackOverflow. Я пытаюсь выполнить перестановки как часть моего проекта. Я пытался использовать mt.sample.rawp() из пакета multtest. Но есть некоторые спецификации, которые мне требуются, которые я не могу сделать с вышеупомянутой функцией. Я хотел бы знать, могу ли я использовать ваш пакет для этого. Я объясню мою проблему. Я новичок в R, поэтому извиняюсь, если мои знания R cmd слабые.

У меня есть набор данных, и я хочу выполнить перестановки над метками классов (CL) и вычислить необработанное p-значение. У меня есть мой собственный t-тест, который является модифицированным t-тестом необходимо для моего проекта. Я должен быть в состоянии выполнить перестановку с помощью этого модифицированного t-теста моего.

Кроме того, это немного похоже на один из вопросов, которые вы решили с помощью своего пакета. У меня есть 2 метки класса, но когда я переставляю, у меня есть значение индекса для каждой выборки в моих данных, и поэтому перестановка должна выполняться не для каждой строки в данных, а перестановка метки класса (CL) для каждого индекса в данных.

Пример моих данных:

Sample  1 2 3 4 5 6 7 8 
Index   1 1 2 2 3 3 4 4 
CL      0 0 1 1 1 1 0 0 

Я не могу показать это в матричном формате здесь. Каждый заголовок - это столбец в моем наборе данных. Любые фрагменты или справочные коды, которые я мог бы использовать. Заранее спасибо за ваше время и помощь.

1 Ответ

2 голосов
/ 17 марта 2012
require(permute) ## load package

## data
dat <- data.frame(Sample = 1:8, Index = rep(1:4, each = 2),
                  CL = c(0,0,1,1,1,1,0,0))

Теперь нам нужен управляющий объект, который определяет, как должны быть расслоены перестановки. Для этого используйте permControl():

> ctrl <- with(dat, permControl(strata = Index))
> ctrl

No. of permutations: 199  

**** STRATA ****
Permutations are stratified within: Index 
Strata unpermuted

**** SAMPLES ****
Permutation type: free 
Mirrored permutations for Samples?: No 
Use same permutation within strata?: No

Далее мы генерируем перестановки, здесь я создаю набор из 10 перестановок индексов строк

> set.seed(10)
> perms <- shuffleSet(nrow(dat), nset = 10, control = ctrl)
> perms
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
 [1,]    2    1    3    4    5    6    7    8
 [2,]    2    1    4    3    5    6    7    8
 [3,]    1    2    3    4    6    5    8    7
 [4,]    1    2    4    3    6    5    8    7
 [5,]    1    2    3    4    6    5    8    7
 [6,]    1    2    3    4    5    6    7    8
 [7,]    1    2    3    4    5    6    7    8
 [8,]    1    2    3    4    5    6    7    8
 [9,]    2    1    4    3    5    6    7    8
[10,]    2    1    3    4    5    6    7    8

Строки perms являются перестановками, а столбцы ссылаются на строки исходных данных.

Если вам нужна только одна перестановка за раз, например, когда вы используете цикл для проверки перестановки, используйте shuffle() вместо shuffleSet(), например:

> set.seed(10)
> perm <- shuffle(nrow(dat), control = ctrl)
> perm
[1] 2 1 3 4 5 6 7 8

Чтобы использовать набор случайных чисел perms, просто внесите в индекс dat:

> dat[perms[1, ], ]
  Sample Index CL
1      1     1  0
2      2     1  0
4      4     2  1
3      3     2  1
5      5     3  1
6      6     3  1
8      8     4  0
7      7     4  0
> dat[perms[2, ], ]
  Sample Index CL
1      1     1  0
2      2     1  0
3      3     2  1
4      4     2  1
5      5     3  1
6      6     3  1
7      7     4  0
8      8     4  0
> dat[perms[3, ], ]
  Sample Index CL
2      2     1  0
1      1     1  0
3      3     2  1
4      4     2  1
6      6     3  1
5      5     3  1
7      7     4  0
8      8     4  0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...