2016-08-24 2 views
2

После выполнения CDF я получил следующие значения P (образец из них)Сочетание значений P с использованием метода Fisher matlab?

[0.43 0.12 0.0021 0.05 0.017 0.001 0.025 0.038 0.35 0.29] 

Я хочу объединить мои P значения с помощью Fisher метода и получить выход следующим образом:

Выберите сначала 3 P значения и объединяет их и получить результат от этого (используя метод рыбалки). Например, мое первое совмещение P значение будет: 0.43 ,0.12 0.0021, а мой следующий P значение объединения будет 0.12, 0.0021 ,0.05 и так далее.

Может ли кто-нибудь сказать мне, как мы можем применить метод Fisher, используя MATLAB для решения этой проблемы?
Мне не удалось найти решение, используя MATLAB.

метод Фишер сочетает в себе крайние вероятности значения из каждого теста, обычно известные как «P-значения», в один тестовой статистику (X2), используя формулу:

documents говорит о методе рыболова, и я отмеченный в круге формулы которые могут быть использованы для объединения значения p с использованием метода рыба, пожалуйста, посмотрите :)

где pi - значение p для i-го теста гипотезы. Когда p-значения имеют тенденцию быть маленькими, тестовая статистика X2 будет большой, что говорит о том, что нулевые гипотезы неверны для каждого теста.

ответ

1

Я не думаю, что есть комбинированный тест вероятности Фишера построен в MATLAB, но это не должно быть трудно реализовать:

P = [0.43 0.12 0.0021 0.05 0.017 0.001 0.025 0.038 0.35 0.29]; 
k = length(P); 

первым мы сделаем вспомогательную матрицу, просуммировать элементы P, как мы хотим:

% the following matrix is used to sun each n elements in a row: 
n = 3; 
summer = diag(ones(k,1)); 
for d = 1:n-1 
    summer = summer + diag(ones(k-d,1),-d); 
end 

если мы запустим P*summer, мы получаем:

ans = 
    Columns 1 through 6 
     0.5521  0.1721  0.0691  0.068  0.043  0.064 
    Columns 7 through 10 
     0.413  0.678   0.64   0.29 

Далее, мы вычислим статистику по первой принимая ЛУ всех P и чем подвести их в 3-х (и умножить на -2):

% compute the combine fisher statistic: 
X = -2.*log(P(:).')*summer; 

результат:

X = 
    Columns 1 through 6 
     18.26  22.564  26.472  27.956  29.342  27.734 
    Columns 7 through 10 
     16.018  11.116  4.5754  2.4757 

Наконец вычислим р- значения из распределения хи-квадрат с 2*3 = 6 ДФ:

% get the p-values for all combinations: 
p_vals = chi2cdf(X(1:end-n+1),6,'upper'); 

И мы получаем:

p_vals = 
    Columns 1 through 6 
    0.005614 0.00095661 0.00018177 9.577e-05 5.2399e-05 0.00010546 
    Columns 7 through 8 
    0.013659  0.084865 
+0

Да, есть метод Fisher, и я хочу использовать его. Я дал дополнительную информацию о методе и ссылке на рыбалку, пожалуйста, посмотрите и ответьте, если возможно, соответственно :) –

+0

Я прочитал вашу ссылку и внедрил то, что там написано. Я не сказал, что нет «метода Фишера», но я не знаю о встроенной функции для этого. Если вы знаете, что есть, отправьте ссылку на документацию. Пожалуйста, перейдите к ответу, спросите, что не ясно, и посмотрите, соответствует ли оно вашим потребностям. Мое примечание, в конце концов, просто для дополнительной проверки. – EBH

+0

Вот что я сказал, и именно поэтому я написал вам код для этого теста в ответе. – EBH

Смежные вопросы