如何在Matlab中使用probplot()获得数据的适应度?

时间:2012-10-29 00:19:00

标签: matlab plot matplotlib python-2.7 probability

我有2组浮点数,A组和B组。它们都是40 * 40的矩阵。我想找出哪一组更接近正态分布。我知道如何在matlab中使用probplot()来绘制一组的概率。但是,我不知道如何找出分布的适合度水平。

在python中,当人们使用problot时,参数R ^ 2显示数据分布与正态分布的对比情况。 R ^ 2值越接近值1,适合度越好。因此,我可以简单地使用该函数来比较两组数据的R ^ 2值。但是,由于某些机器问题,我不能在我当前的机器中使用python。是否有类似于matlab中的R ^ 2值的参数或函数?

非常感谢,

2 个答案:

答案 0 :(得分:1)

使用函数fit可以使曲线或曲面拟合数据并获得拟合优度,即sse,rsquare,dfe,adjrsquare,rmse。 More info here. ..

答案 1 :(得分:1)

@nate(+1)的方法绝对是解决这个问题的一种可能方式。但是,我的统计学家被迫提出以下备选方案(唉,需要统计工具箱 - 但如果您有学生版本,则可以使用此方法):

鉴于您的数据是正常的(不是多元正常),请考虑使用Jarque-Bera测试。

Jarque-Bera测试零假设,即给定数据集是由正态分布生成的,而不是由其他分布生成的替代数据集。如果Jarque-Bera检验统计量小于某个临界值,那么我们就不能拒绝原假设。

那么这对拟合优度问题有何帮助?嗯,测试统计数据越大,数据越“非正常”。测试统计量越小,数据越“正常”。

因此,假设您已将矩阵转换为两个向量AB(根据您在问题中提供的维度,每个向量应为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

作为以这种方式做事的一点点好处,ANormalBNormal会告诉您是否可以拒绝或不能拒绝A或{{1}中的样本的原假设来自正态分布!具体来说,如果B为1,则您无法拒绝空值(即,测试统计信息表明ANormal可能是从“正常”中提取的)。如果A为0,那么ANormal中的数据可能不会从正态分布中生成。

注意:我在此处提倡的方法仅在AA大小相同时才有效,但您在问题中表明它们是: - )