我有一个相当容易理解的问题。
我有一组数据,我想估计这些数据与标准正态分布的拟合程度。为此,我从我的代码开始:
[f_p,m_p] = hist(data,128);
f_p = f_p/trapz(m_p,f_p);
x_th = min(data):.001:max(data);
y_th = normpdf(x_th,0,1);
figure(1)
bar(m_p,f_p)
hold on
plot(x_th,y_th,'r','LineWidth',2.5)
grid on
hold off
图。 1将如下所示:
很容易看出合身很差,尽管钟形可以被发现。因此,主要问题在于我的数据的方差。
为了找出我的数据箱应该拥有的正确数量的出现次数,我这样做:
f_p_th = interp1(x_th,y_th,m_p,'spline','extrap');
figure(2)
bar(m_p,f_p_th)
hold on
plot(x_th,y_th,'r','LineWidth',2.5)
grid on
hold off
将产生以下图。 :
因此,问题是:如何扩展我的数据块以匹配高斯分布,如图2 ?
注意
我想强调一点:我不想找 最适合数据的分布; 问题是颠倒:从我的数据开始,我想以这样的方式操纵它,最终,它的分布合理地适合高斯分布。< / p>
不幸的是,目前,我对如何执行此数据“过滤”,“转换”或“操纵”没有真正的想法。
欢迎任何支持。
答案 0 :(得分:3)
您可能感兴趣的是基于排名的逆正态变换。基本上,您首先对数据进行排名,然后将数据转换为正态分布:
rank = tiedrank( data );
p = rank / ( length(rank) + 1 ); %# +1 to avoid Inf for the max point
newdata = norminv( p, 0, 1 );
答案 1 :(得分:2)
您尝试做的事情似乎与尝试查找一组数据随机性的问题相符。超高斯pdf是那些在高于0(或平均值,无论它可能是什么)的概率高于高斯分布的那些,因此更加“尖锐” - 就像你的例子。这种分布的一个例子是拉普拉斯分布。 Subgaussian pdfs正好相反。
数据集与高斯分布的接近度可以通过多种方式给出...通常可以通过使用四阶矩,峰度(http://en.wikipedia.org/wiki/Kurtosis - MATLAB函数kurt)或者信息理论测量,如negentropy(http://en.wikipedia.org/wiki/Negentropy)。如果你有很多异常值,Kurtosis有点狡猾,因为误差会增加到4的幂,所以negentropy更好。
如果您不理解“四阶时刻”这一术语,请阅读统计教科书。
在许多独立成分分析(ICA)的文本中给出了这些以及其他几种随机性度量(高斯性)的比较,因为它是一个核心概念。关于这方面的一个很好的资源是Hyvarinen和Oja的书“独立成分分析” - http://books.google.co.uk/books/about/Independent_Component_Analysis.html?id=96D0ypDwAkkC。
答案 2 :(得分:0)
我无法真正理解这个问题或者你最近的其他类似问题究竟是什么问题。
也许你的数据是正态分布的,你想让它正常分布,均值为0,标准差为1?
如果是,请从您的数据中减去mu
并将其除以sigma
,其中mu
是数据的平均值,sigma
是其标准偏差。如果您的原始数据是正态分布的,那么结果应该是通常以均值0和标准差1分布的数据。
统计工具箱中有一个函数zscore
可以为您完成此操作。
但也许你的意思是其他的东西?