Z score to p values
110 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
lou
el 7 de Dic. de 2016
Comentada: Germano Gallicchio
el 28 de Feb. de 2024
I have a large matrix 1xN containing z values. I would like to know how to turn these z scores to p values using normcdf function?
How to obtain p values both for one-tailed and two-tailed p values using normcdf?
Many thanks in advance!
0 comentarios
Respuesta aceptada
Star Strider
el 7 de Dic. de 2016
If I remember correctly, the probability of a one-tailed test is twice the probability of a two-tailed test, so:
p_one = 2*normcdf(z_vector);
p_two = normcdf(z_vector);
11 comentarios
Noah
el 23 de Jul. de 2021
Note that the accepted answer is backwards, unless you mean something strange by your hypothesis. The probability of one-tailed test is HALF the probability of a two-tailed test. The area under a bell curve on one side is half the area on both sides.
p_oneTailed = normcdf(z_vector);
p_twoTailed = 2*normcdf(z_vector);
Más respuestas (1)
Ziwei Liu
el 18 de Ag. de 2023
Two-tailed p value should actually be 2 * (1 - normcdf(z)).
normcdf(z) gives the area under curve on the left side of z. This is not p value. One-tailed p value should be the area on the right side, which is (1 - normcdf(z)).Two-tailed p value should be the double of that.
You can use the arrayfun function to compute p value for each entry in your z score matrix. i.e. p = arrayfun(@(x) 2*(1-normcdf(x)), ZScoreMatrix).
1 comentario
Germano Gallicchio
el 28 de Feb. de 2024
For this to work with negative z scores, you also need to take the absolute value of z:
z = [-2.58 -1.96 -1.65 0 1.65 1.96 2.58]; % vector of z scores
p = 2 * (1 - normcdf(abs(z))); % vector of associated pvalues
disp([z' p'])
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!