Solved – Testing goodness of fit

goodness of fithypothesis testingMATLAB

I am using MATLAB 2012a to run 3 tests. With my data, I obtain very small values, and for the Anderson–Darling (A–D) tests, the results are not even normalized.
Please verify my code. I am also using the A–D script which is found at this link.

sample= N;

h1=histfit(sample,30,'weibull');
xdata1 = get(h1(2), 'XData');
ydata1 = get(h1(2), 'YData');
[~,p_weibull_cs,stats_weibull_cs] = chi2gof(ydata1);
[~,p_weibull_ks,stats_weibull_ks] = kstest(ydata1);
p_weibull_ad = AnDartest(ydata1);

@Tom Lane,

I did modify my code and am currently working like this,;

pd3 = fitdist(sample, 'weibull');
dist3 = makedist('Weibull','a',pd3.ParameterValues(1),'b',pd3.ParameterValues(2))
[h_chi_weibull, p_chi_weibull, stats_chi_weibull]= chi2gof(sample,'CDF',pd3)
[h_ad_weibull, p_ad_weibull, adstat_weibull,cv_ad_weibull]= adtest(sample,'Distribution','weibull')

[h_ks_weibull, p_ks_weibull, ksstat_weibull,cv_ks_weibull]= kstest(sample,'CDF',dist3)

NOW MY PROBLEM IS THE CHI TEST IS RETURNING ONLY 1 OR 0, NOT VALUES IN BETWEEN..

Best Answer

Your ydata1 variable is the heights of the histogram bins. Then with kstest you test to see if those bin heights could come from a standard normal distribution. With chi2gof you test to see if those bin heights could come from a fitted normal distribution, with the degrees of freedom adjusted as an approximate way to take the fitting into account. My guess is that you don't want to do either of those things.

My guess is that you really want to test sample against a Weibull distribution. I suggest you test log(sample) against an extreme value distribution using the lillietest function, because this function takes the fitting into account, and because the log transform converts Weibull to extreme value.

I'm not acquainted with the Anderson-Darling script.