Very small p value

23 views (last 30 days)
Micah
Micah on 10 Nov 2011
I am using chi2gof to test whether my data is distributed normally. Graphically, it looks very normal, and I have fitted a normal curve to it that 'looks' good.
[h,p]=chi2gof(histdata)
h =
1
p =
0
Chi2gof reports the p value as zero - any advice on calculating the actual p value? I need to know if it is p < 0.0001 or p < 0.0000001 or whatever.

Accepted Answer

Wayne King
Wayne King on 10 Nov 2011
Hi Micah, A couple things to try:
Set the format to long.
format long
[h,p] = chi2gof(histdata)
It may be that the p-value is really essentially zero, I mean if the p-value is 10^{-6}, are you really going to report that? You may as well just say p<0.001
Another thing is return the stats from chi2gof() and check that.
[h,p,st] = chi2gof(histdata);
1-chi2cdf(st.chi2stat,st.df)
Does that also just say 0?

More Answers (1)

Peter Perkins
Peter Perkins on 11 Nov 2011
Micah, in recent versions of the Statistics Toolbox, chi2gof will definitely compute very small p-values correctly. In older versions, it is possible for the p-value to round down to zero if it is very small (but it'd have to be much smaller than the 1e-4 you give as an example). If you have an older version, you can still probably compute the p-value by getting the chi-squared statistic and the degrees of freedom from the third output from chi2gof, and compute the p-value as
p = gammainc(chi2stat/2,df/2,'upper')

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!