Kolmogorov-Smirnov 检验 MATLAB 中的正态性 - 数据规范化?
Kolmogorov-Smirnov test for normality in MATLAB - data normalisation?
我在 MATLAB 中使用 Kolmogorov-Smirnov 检验来确定数据矩阵每一列的正态性,然后再执行广义线性回归。一个示例数据向量是:
data = [8126,3163,9129,5399,8682,1126,1053,7805,2989,2758,3277,1152,6994,6833];
测试运行并给了我一个结果。但是,当我绘制经验累积分布函数(cdf)(蓝色)和标准正态cdf(红色)进行视觉比较时,这样的数据向量的比例使得图形没有用:
用于绘制此图的代码是:
[h,p,ksstat,cv] = kstest(data);
[f,x_values] = ecdf(data);
figure()
F = plot(x_values,f);
set(F,'LineWidth',2);
hold on
G = plot(x_values,normcdf(x_values,0,1),'r-');
set(G,'LineWidth',2);
legend([F G],...
'Empirical CDF','Standard Normal CDF',...
'Location','SE');
这是否意味着我的测试结果无效?如果是,我可以将数据标准化吗?
dataN=(data-min(data))./(max(data)-min(data));
同时保持测试有效性?
感谢您的宝贵时间,
劳拉
感谢 Luis Mendo 我解决了这个问题。 normcdf
需要数据向量的均值和标准差作为输入,我没有从我正在使用的示例代码中更改它。编辑后的代码是:
[h,p,ksstat,cv] = kstest(data);
[f,x_values] = ecdf(data);
figure()
F = plot(x_values,f);
set(F,'LineWidth',2);
hold on
variableMean = mean(data);
variableSD = std(data);
G = plot(x_values,normcdf(x_values,variableMean,variableSD),'r-');
set(G,'LineWidth',2);
legend([F G],...
'Empirical CDF','Standard Normal CDF',...
'Location','SE');
我在 MATLAB 中使用 Kolmogorov-Smirnov 检验来确定数据矩阵每一列的正态性,然后再执行广义线性回归。一个示例数据向量是:
data = [8126,3163,9129,5399,8682,1126,1053,7805,2989,2758,3277,1152,6994,6833];
测试运行并给了我一个结果。但是,当我绘制经验累积分布函数(cdf)(蓝色)和标准正态cdf(红色)进行视觉比较时,这样的数据向量的比例使得图形没有用:
用于绘制此图的代码是:
[h,p,ksstat,cv] = kstest(data);
[f,x_values] = ecdf(data);
figure()
F = plot(x_values,f);
set(F,'LineWidth',2);
hold on
G = plot(x_values,normcdf(x_values,0,1),'r-');
set(G,'LineWidth',2);
legend([F G],...
'Empirical CDF','Standard Normal CDF',...
'Location','SE');
这是否意味着我的测试结果无效?如果是,我可以将数据标准化吗?
dataN=(data-min(data))./(max(data)-min(data));
同时保持测试有效性?
感谢您的宝贵时间,
劳拉
感谢 Luis Mendo 我解决了这个问题。 normcdf
需要数据向量的均值和标准差作为输入,我没有从我正在使用的示例代码中更改它。编辑后的代码是:
[h,p,ksstat,cv] = kstest(data);
[f,x_values] = ecdf(data);
figure()
F = plot(x_values,f);
set(F,'LineWidth',2);
hold on
variableMean = mean(data);
variableSD = std(data);
G = plot(x_values,normcdf(x_values,variableMean,variableSD),'r-');
set(G,'LineWidth',2);
legend([F G],...
'Empirical CDF','Standard Normal CDF',...
'Location','SE');