У меня есть два набора данных, и я хотел бы знать, значительно ли они различаются или нет (это происходит из « Две группы существенно различаются? Тест для использования »).
Я решил использовать тест перестановки, выполнив в R следующее:
permutation.test <- function(coding, lncrna) {
coding <- coding[,1] # dataset1
lncrna <- lncrna[,1] # dataset2
### Under null hyphotesis, both datasets would be the same. So:
d <- c(coding, lncrna)
# Observed difference
diff.observed = mean(coding) - mean(lncrna)
number_of_permutations = 5000
diff.random = NULL
for (i in 1:number_of_permutations) {
# Sample from the combined dataset
a.random = sample (d, length(coding), TRUE)
b.random = sample (d, length(lncrna), TRUE)
# Null (permuated) difference
diff.random[i] = mean(b.random) - mean(a.random)
}
# P-value is the fraction of how many times the permuted difference is equal or more extreme than the observed difference
pvalue = sum(abs(diff.random) >= abs(diff.observed)) / number_of_permutations
pvalue
}
Тем не менее, p-значения не должны быть 0 в соответствии с этим документом: http://www.statsci.org/smyth/pubs/permp.pdf
Что вы мне порекомендуете сделать? Это способ расчета р-значения:
pvalue = sum(abs(diff.random) >= abs(diff.observed)) / number_of_permutations
Хороший путь? Или лучше делать следующее?
pvalue = sum(abs(diff.random) >= abs(diff.observed)) + 1 / number_of_permutations + 1
p-value
permutation-test
user2886545
источник
источник
a.random
b.random
b.random
a.random
coding
lncrna
Ответы:
обсуждение
Тест перестановки генерирует все соответствующие перестановки набора данных, вычисляет назначенную статистику теста для каждой такой перестановки и оценивает фактическую статистику теста в контексте результирующего распределения перестановок статистики. Распространенным способом оценки является отчет о доле статистики, которая (в некотором смысле) «как или более экстремальная», чем фактическая статистика. Это часто называют «р-значением».
Поскольку фактический набор данных является одной из этих перестановок, его статистика обязательно будет среди тех, которые находятся в распределении перестановок. Следовательно, значение p никогда не может быть нулевым.
Если набор данных не очень мал (обычно менее 20-30 общих чисел) или тестовая статистика имеет особенно хорошую математическую форму, практически невозможно создать все перестановки. (Пример, где все перестановки генерируются, появляется в Тесте перестановки в R ). Поэтому компьютерные реализации тестов перестановки обычно выбирают из распределения перестановок. Они делают это путем генерации некоторых независимых случайных перестановок и надеются, что результаты являются репрезентативной выборкой всех перестановок.
Следовательно, любые числа (такие как «p-значение»), полученные из такой выборки, являются только оценщиками свойств распределения перестановок. Вполне возможно - и часто случается, когда эффекты велики - что предполагаемое значение p равно нулю. В этом нет ничего плохого, но сразу возникает вопрос о том, насколько оценочное значение p может отличаться от правильного? Поскольку выборочное распределение пропорции (такой как предполагаемое значение p) является биномиальным, эту неопределенность можно устранить с помощью биномиального доверительного интервала .
Архитектура
Хорошо продуманная реализация будет внимательно следить за обсуждением во всех отношениях. Он будет начинаться с подпрограммы для вычисления статистики теста, так как эта будет сравнивать средние значения двух групп:
Напишите другую подпрограмму для генерации случайной перестановки набора данных и примените тестовую статистику. Интерфейс этого позволяет вызывающей стороне предоставлять статистику теста в качестве аргумента. Он будет сравнивать первые
m
элементы массива (предположительно эталонную группу) с остальными элементами (группа «обработка»).Тест перестановки выполняется сначала путем нахождения статистики для фактических данных (предполагается, что они здесь сохраняются в двух массивах
control
иtreatment
), а затем нахождения статистики для многих независимых случайных перестановок:Теперь вычислите биномиальную оценку значения p и доверительный интервал для него. Один метод использует встроенную
binconf
процедуру вHMisc
пакете:Нет ничего плохого в том, чтобы сравнить результат с другим тестом, даже если известно, что он не совсем применим: по крайней мере, вы можете получить представление о том, где должен лежать результат. В этом примере (сравнения средств) t-критерий Стьюдента обычно дает хороший результат:
Эта архитектура проиллюстрирована в более сложной ситуации с рабочим
R
кодом в разделе «Тестируют ли переменные одно и то же распределение» .пример
После использования предыдущего кода для запуска теста перестановки я нанес на график образец распределения перестановок вместе с вертикальной красной линией, чтобы отметить фактическую статистику:
Биноминальный расчет доверительного интервала привел к
3.16e-05
Комментарии
источник
(B - количество случайных перестановок, в которых получена статистика, большая или равная наблюдаемой, а M - общее количество выборок случайных перестановок).
источник