Привет, я пытаюсь использовать тест Колмогорова, который я собираюсь использовать в своей статье, я генерирую набор данных A, затем я случайным образом сделал набор образцов из A. Затем я хотел сравнить эти два набора образцов с kstest. но это показало мне, что у них нет одинакового распределения.

вот мой простой код:

clc
clear all
close all
n_s = 1000;
mother_random_variable = lognrnd(0.3,0.5,[1,100000]);               %data lognormal
S = mother_random_variable(randi(numel(mother_random_variable),1,n_s))          %sample
S_y = [S]';                             %selected data 
S_mean=mean(S_y);               %mean sample
S_var=std(S_y);                 %variance sammple
test_cdf = [S_y,cdf('Lognormal',S_y,S_var,S_mean)];        %make cdf 
kstest(S_y,'CDF',test_cdf)                  %ktest
plot(sort(S_y),logncdf(sort(S_y)),'r--')
hold on
cdfplot(S_y)

они имеют одинаковое распределение и разные результаты. Я обнаружил более странный результат, когда сравниваю свой набор данных с самим собой. Его результат показывает мне, что они не имеют одинакового распределения.

clc
clear all
close all
n_s = 1000;
mother_random_variable = lognrnd(0.3,0.5,[1,100000]); %data
S=mother_random_variable; % I named data with S for simpler code
S_y = [S]';     %selected data 
S_mean=mean(S_y);
S_var=std(S_y);
test_cdf = [S_y,cdf('Lognormal',S_y,S_var,S_mean)];
kstest(S_y,'CDF',test_cdf)
plot(sort(S_y),logncdf(sort(S_y)),'r--')
hold on
cdfplot(S_y)

Есть ли у вас какие-либо идеи.

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Только взглянув на ваш второй блок кода, у меня есть некоторые комментарии и предложения.

1) Параметрами логнормального распределения являются среднее значение и стандартное отклонение в указанном порядке. В вашем коде вы вводите их в обратном порядке, когда вызываете функцию cdf(), и это создает совершенно другое распределение, чем вы намеревались сделать.

y = cdf('Lognormal', S_y, S_var, S_mean);    % your code, incorrect
y = cdf('Lognormal', S_y, S_mean, S_var);    % correct

2) Это всего лишь предложение, но лучше использовать функцию makedist(), а не вводить параметры вручную в cdf().

doc cdf
pd = makedist('Lognormal', 'mu', S_mean, 'sigma', S_var); 
y = cdf(pd, S_y);   % instead of cdf('Lognormal', S_y, S_mean, S_var)

3) «когда я сравниваю свой набор данных с самим собой, его результат показывает мне, что они не имеют одинакового распределения». Но вы не сравниваете свои данные с собой. Вы сравниваете свои данные с результатами кумулятивной функции распределения ваших данных. На приведенном ниже графике показано распределение значений из ваших данных (вверху) и распределение значений из CDF. Очевидно, что эти распределения различаются, и kstest() правильно отклоняет нулевую гипотезу.

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ