我有2组浮点数,A组和B组。它们都是40 * 40的矩阵。我想找出哪一组更接近正态分布。我知道如何在matlab中使用probplot()来绘制一组的概率。但是,我不知道如何找出分布的适合度水平。
在python中,当人们使用problot时,参数R ^ 2显示数据分布与正态分布的对比情况。 R ^ 2值越接近值1,适合度越好。因此,我可以简单地使用该函数来比较两组数据的R ^ 2值。但是,由于某些机器问题,我不能在我当前的机器中使用python。是否有类似于matlab中的R ^ 2值的参数或函数?
非常感谢,
答案 0 :(得分:1)
使用函数fit
可以使曲线或曲面拟合数据并获得拟合优度,即sse,rsquare,dfe,adjrsquare,rmse。 More info here. ..
答案 1 :(得分:1)
@nate(+1)的方法绝对是解决这个问题的一种可能方式。但是,我的统计学家被迫提出以下备选方案(唉,需要统计工具箱 - 但如果您有学生版本,则可以使用此方法):
鉴于您的数据是正常的(不是多元正常),请考虑使用Jarque-Bera测试。
Jarque-Bera测试零假设,即给定数据集是由正态分布生成的,而不是由其他分布生成的替代数据集。如果Jarque-Bera检验统计量小于某个临界值,那么我们就不能拒绝原假设。
那么这对拟合优度问题有何帮助?嗯,测试统计数据越大,数据越“非正常”。测试统计量越小,数据越“正常”。
因此,假设您已将矩阵转换为两个向量A
和B
(根据您在问题中提供的维度,每个向量应为1600 x 1),您可以执行以下操作:
%# Build sample data
A = randn(1600, 1);
B = rand(1600, 1);
%# Perform JB test
[ANormal, ~, AStat] = jbtest(A);
[BNormal, ~, BStat] = jbtest(B);
%# Display result
if AStat < BStat
disp('A is closer to normal');
else
disp('B is closer to normal');
end
作为以这种方式做事的一点点好处,ANormal
和BNormal
会告诉您是否可以拒绝或不能拒绝A
或{{1}中的样本的原假设来自正态分布!具体来说,如果B
为1,则您无法拒绝空值(即,测试统计信息表明ANormal
可能是从“正常”中提取的)。如果A
为0,那么ANormal
中的数据可能不会从正态分布中生成。
注意:我在此处提倡的方法仅在A
和A
大小相同时才有效,但您在问题中表明它们是: - )