2016-08-24 2 views
2

Nach CDF tun (Probe von ihnen)Kombinieren von P-Werten mit der Fisher-Methode Matlab? Ich erhielt folgenden Wert von <code>P</code>

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

Ich mag meine P Werte mit Hilfe von Fisher Verfahren kombinieren und die Ausgabe in der folgenden Art und Weise erhalten:

Select erste 3 P Werte und kombiniert sie und erhalten Ergebnis daraus (Fischer-Methode). Zum Beispiel wäre mein erster P Kombinationswert: 0.43 ,0.12 0.0021 und mein nächster P Kombinationswert wäre 0.12, 0.0021 ,0.05 und so weiter.

Kann mir jemand sagen, wie wir Fisher-Methode mit MATLAB für dieses Problem anwenden können?
Ich konnte keine Lösung mit MATLAB finden.

Fishers Methode Extremwert Wahrscheinlichkeiten von jedem Test kombiniert, die gemeinhin als „p-Wert“ bekannt ist, in eine Teststatistik (X2) mit der Formel:

documents über Fischer Methode erzählt und ich markierte die Formel im Kreis das kann für die Kombination der p-Wert über die Fischer-Methode verwendet werden, bitte einen Blick :)

wo Pi ist der p-Wert für die ith Hypothesentest. Wenn die p-Werte dazu neigen, klein zu sein, wird die Teststatistik X2 groß sein, was nahelegt, dass die Nullhypothesen für jeden Test nicht zutreffen.

Antwort

1

Ich glaube nicht, dass es ein Fishers ist kombiniert Wahrscheinlichkeitstest in MATLAB gebaut, aber es sollte es nicht schwer zu implementieren:

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

zuerst werden wir einen Helfer Matrix bilden, die die Elemente Summe in P wie wir wollen:

% 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 

wenn wir P*summer laufen, erhalten wir:

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 

Als nächstes berechnen wir die Statistik, indem zuerst die ln aller P nehmen und als sie in (von -2 und multiplizieren) die 3 Summe:

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

das Ergebnis:

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 

Schließlich berechnen wir die p- Werte aus einer Chi-Quadrat-Verteilung mit 2*3 = 6 df:

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

Und wir bekommen:

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

ja es gibt eine Fisher Methode und ich möchte diese verwenden. Ich habe mehr Informationen über Fisher-Methode und Link gegeben. Bitte schauen Sie und geben Sie eine Antwort, wenn möglich, entsprechend :) –

+0

Ich habe Ihren Link gelesen und implementiert, was dort geschrieben ist. Ich habe nicht gesagt, dass es keine "Fisher-Methode" gibt, aber dass ich dafür keine eingebaute Funktion kenne. Wenn Sie wissen, dass dies der Fall ist, veröffentlichen Sie einen Link zur Dokumentation. Bitte gehen Sie über die Antwort, fragen Sie nach, was nicht klar ist, und sehen Sie, ob es Ihren Bedürfnissen entspricht. Meine Notiz ist am Ende nur für zusätzliche Überprüfung. – EBH

+0

Das ist, was ich gesagt habe, und deshalb schrieb ich Ihnen den Code für diesen Test in der Antwort. – EBH

Verwandte Themen