我有一个关于正态分布的问题(mu = 0
和sigma = 1
)。
让我说我首先以这种方式调用randn或normrnd
x = normrnd(0,1,[4096,1]); % x = randn(4096,1)
现在,为了评估x值与正态分布的拟合程度,我打电话给
[a,b] = normfit(x);
并获得图形支持
histfit(x)
现在谈到问题的核心:如果我对x如何适合给定的正态分布不满意,我怎样才能优化 x 以便更好地符合预期的正态分布分布 0 mean 和 1标准差 ??有时由于少数表示值(在这种情况下 4096 ), x 非常适合预期的高斯,所以我想操纵 x (线性或不,在这个阶段并不重要),以便获得更好的健康。
我想说我可以访问统计工具箱。
修改
我使用normrnd
和randn
制作了示例,因为我的数据已被假定并且预计会正常分发。但是,在这个问题中,这些功能只会有助于更好地理解我的担忧。
是否可以应用最小二乘拟合?
一般来说,我得到的分布类似于以下内容:
我
答案 0 :(得分:3)
也许,您可以尝试将输入数据标准化为mean = 0和sigma = 1。像这样:
y=(x-mean(x))/std(x);
答案 1 :(得分: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);