KS TEST fails at 0.05 but passes at 0.01

7 ビュー (過去 30 日間)
Muhammad Abdullah
Muhammad Abdullah 2024 年 10 月 15 日
コメント済み: the cyclist 2024 年 10 月 17 日
Hello, I need some help in verifying the KSTEST method, which i implemented in the code. I have attached the data file and compared the theoretical CDF with ECDF using beta distribution. the KSTEST fails at 95% of significance while it passes at 99% (tight range). Can any one please check whether my method of implementing KS test is correct or wrong? and if my way interpretation is wrong then?
R = load('R.txt')
figure
h1 = histogram(R(1:end),20,'Normalization','cdf');
[f,x] = ecdf(R);
pd_12 = betacdf(x,a_mle,b_mle); % theoretical
[h2,p,ksstat] = kstest(R,'CDF', makedist('Beta','a',a_mle,'b',b_mle),'Alpha',0.01)
J = plot(x,pd_12,'b','Linewidth',2); grid on;
hold on
plot(x,f,'LineStyle', '-', 'Color', 'r','Linewidth',2)
legend('Histogram of data','Theoretical Beta CDF','ECDF of data','Location','best')
  2 件のコメント
the cyclist
the cyclist 2024 年 10 月 15 日
編集済み: the cyclist 2024 年 10 月 15 日
We need a_mle and b_mle to test your code. Is it the coefficients from
betafit(R)
?
Muhammad Abdullah
Muhammad Abdullah 2024 年 10 月 16 日
a_mle = 1.6941, b_mle = 4.1671, determined from betafit(R)

サインインしてコメントする。

採用された回答

the cyclist
the cyclist 2024 年 10 月 15 日
R = load('R.txt');
coeff = betafit(R);
a_mle = coeff(1);
b_mle = coeff(2);
[~,x] = ecdf(R);
pd_12 = betacdf(x,a_mle,b_mle); % theoretical
[h_05,p_05,ksstat_05] = kstest(R,'CDF', makedist('Beta','a',a_mle,'b',b_mle),'Alpha',0.05)
h_05 = logical
1
p_05 = 0.0142
ksstat_05 = 0.0262
[h_01,p_01,ksstat_01] = kstest(R,'CDF', makedist('Beta','a',a_mle,'b',b_mle),'Alpha',0.01)
h_01 = logical
0
p_01 = 0.0142
ksstat_01 = 0.0262
It is unclear to me what you mean by "pass" and "fail" the test, or by "tight range".
The P-value of the K-S test is equal to 0.0142. Therefore,
  • if alpha is 0.05, the null hypothesis is rejected (h=1)
  • if alpha is 0.01, the null hypothesis is not rejected (h=0)
So, I guess you were interpreting the output incorrectly?
  7 件のコメント
Muhammad Abdullah
Muhammad Abdullah 2024 年 10 月 17 日
I am using beta, weibull, lognormal distribution, KSTEST results show that it is beta distribution, but wanted to see whether at some range of elements, the null hypothesis be true for all three distributions.
the cyclist
the cyclist 2024 年 10 月 17 日
It's a strange way to think about it. If you exclude elements that would have been expected from random draws from those distributions, then it makes the null distributions less likely to be accepted.
That being said, if you want to limit R to only those values smaller than R_threshold, then
R_limited = R(R < R_threshold)
is that set of values.

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!

Translated by