0

こんにちは、一連の観察結果があり ますobs= https://drive.google.com/file/d/0B3vXKJ_zYaCJVlhqd3FJT0xtWFk/view?usp=sharing

それらがガンマ分布に由来することを証明したいと思います。

そのために私は:

%estimate parameters gamma distribution    
paramEsts_gamma = gamfit(obs);   
% estimate cdf gamma distribution (objects)
gamma_cdf=makedist('Gamma','a',paramEsts_gamma(1),'b',paramEsts_gamma(2));

% test with kstest if data comes from a gamma distribution
    [h_gamma_ks,p_gamma_ks,kstat_gamma_ks,cv_gamma_ks] = kstest(obs,'CDF',gamma_cdf)

% test with chi2gofif data comes from a gamma distribution
    pd_gamma = fitdist(obs,'Gamma');
    [h_gamma_chi,p_gamma_chi,st_gamma_chi] = chi2gof(obs,'CDF',pd_gamma)

私の問題は、pvalue の NaN を取得することp_gamma_chiです....どこで間違いを犯すのでしょうか? ありがとう

ここで、分布を視覚的に確認するためのいくつかのコード

%% Plot cdf
% empirical cdf
[f_emp,x_values] = ecdf(obs);
f_gamma = gamcdf(x_values,paramEsts_gamma(1),paramEsts_gamma(2));

     figure
     hold on;
     F = plot(x_values,f_emp);
     set(F,'LineWidth',2);

     G = plot(x_values,f_gamma,'r-');
     set(G,'LineWidth',2);


     legend([F G],...
        'Empirical CDF','Gamma CDF',...
        'Location','SE');
4

1 に答える 1

0

コードの出力が示すようst_gamma_chi.df = 0に、これは自由度 0 ( dof) を意味します。

dof = N - n - 1

ここで
N、あなたの場合は周波数の数N = length(st_gamma_chi.edges)-1 = 3です。
nあなたの場合、適合パラメータの数ですn = 2

したがって、デフォルトのオプションでは自由度が 0 になります。たとえば、周波数が計算されるビンの数を増やすことで、この問題を改善できます。

[h_gamma_chi,p_gamma_chi,st_gamma_chi] = chi2gof(obs,'CDF',pd_gamma, 'NBins', 20)

しかし、これはカイ 2 乗検定の理解を免除するものではありません。

于 2014-11-17T11:56:11.937 に答える