2013-03-19 473 views
5

我有一个关于正态分布的问题(使用mu = 0sigma = 1)。操作数据以更好地拟合高斯分布

让我们说,我先打电话randn或normrnd这样

x = normrnd(0,1,[4096,1]); % x = randn(4096,1) 

现在,评估x值如何般配正态分布,我叫

[a,b] = normfit(x); 

,并有图形支持

histfit(x) 

现在来到这个问题的核心:如果我对如何不满意如何X适合给定的正态分布,如何优化X为了更好地适应预期正态分布0意味着1标准偏差 ??有时会因为一些表示值(在这种情况下,即),X适合真的很差预期高斯,所以我想操纵X线性或不的,它并没有真正的问题在这一阶段),以获得更好的健身。

我想说我可以访问统计工具箱。

编辑

  1. 我所做的例子有normrndrandn引起我的数据应该和预期有正常的分布。但是,在这个问题中,这些功能只会有助于更好地理解我的关注。

  2. 是否可以应用最小二乘拟合?

  3. 一般来说我得到的分布是类似以下内容: enter image description here

+1

也许你会更好的运气比用伪随机数,如果你的数据集是小准随机数。 http://www.mathworks.com/help/stats/generating-quasi-random-numbers.html – Dan 2013-03-19 10:28:28

+0

如果您向我们展示您的发行版的外观,那将有所帮助。 – Memming 2013-03-19 14:59:01

+0

你上传的内容看起来很适合我。你可能只需要更多的样本。 – Memming 2013-03-19 15:14:14

回答

3

也许,你可以去尝试标准化输入数据有均值= 0和sigma = 1 。就像这样:

y=(x-mean(x))/std(x); 
+0

我正在玩这个琐碎的技巧,这并没有真正解决问题。顺便说一句,谢谢你的支持 – fpe 2013-03-19 13:00:11

+2

你应该用'std'而不是'var'来标准化。也可以使用'zscore'。 – Memming 2013-03-19 14:57:39

+1

你是完全正确的。 – tashuhka 2013-03-19 17:15:49

1

如果你正在寻找一个非线性变换,将让你看起来分布正常,可以先估计累积分布,然后取功能成分与标准的正常CDF的逆。通过这种方式,您可以通过可逆变换将几乎任何分布转换为法线。看看下面的示例代码。

x = randn(1000, 1) + 4 * (rand(1000, 1) < 0.5); % some funky bimodal distribution 
xr = linspace(-5, 9, 2000); 
cdf = cumsum(ksdensity(x, xr, 'width', 0.5)); cdf = cdf/cdf(end); % you many want to use a better smoother 
c = interp1(xr, cdf, x); % function composition step 1 
y = norminv(c); % function composition step 2 
% take a look at the result 
figure; 
subplot(2,1,1); hist(x, 100); 
subplot(2,1,2); hist(y, 100); 
+0

如果你不平滑经验CDF,这将是正常的,但做这种操纵的重点是什么? :) – Memming 2013-03-19 15:22:37