3
我使用MATLAB中的Kolmogorov-Smirnov测试来确定在执行广义线性回归之前数据矩阵的每列的正态性。示例数据向量是:Kolmogorov-Smirnov在MATLAB中的正态性测试 - 数据规范化?
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));
同时保持测试有效性?
谢谢您的时间,
劳拉
您正在绘制零均值和标准偏差为1的高斯CDF。因此,对于成千上万的数据值,CDF非常接近1.您可能需要使用根据您的数据估计的平均值和标准偏差;或规范化的数据,然后你可以保持高斯CDF零均值和单位标准差 –
当然!感谢您的建议Luis - 改变平均值和标准偏差修复了问题 – Laura
随时!你可能想回答你自己(我不确定你是如何准确地应用mean和std dev)并接受答案,所以问题不会显示为未答复 –