首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对数据进行高斯分布拟合

对数据进行高斯分布拟合
EN

Stack Overflow用户
提问于 2015-07-21 17:51:16
回答 2查看 3.2K关注 0票数 2

我有一个包含1440值(值在0-1之间)的向量y,它看起来像高斯分布。因此,我想找到一个最适合高斯分布的模型。

代码语言:javascript
运行
复制
x=1:1440;
[sigma_,mu_] = gaussfit(x,y);
norm = normpdf(x,mu_,sigma_);

我的问题是,范数中的值比y中的值小得多,也就是说,norm中的值是10-3的顺序,而y中的值是在0 1之间。

然后我必须添加一个额外的步骤,以便在0和1之间对范数的值进行归一化。

代码语言:javascript
运行
复制
norm_data = (norm - min(norm)) / ( max(norm) - min(norm) );

我的程序正确吗?( sigma和µ的估计,normpdf,归一化)是否有一种方法可以直接拟合到表示概率的原始数据?

可以从here下载y

EN

回答 2

Stack Overflow用户

发布于 2015-07-21 17:58:31

假设您正在使用此gaussfit,如果您检查函数的头部:

代码语言:javascript
运行
复制
% REMARKS:
% The function does not always converge in which case try to use initial
% values sigma0, mu0. Check also if the data is properly scaled, i.e. p.d.f
% should approx. sum up to 1

这意味着在拟合之前,你需要确保sum(y)==1+err是错误的小东西。

您的ysum(y)470.1964,这与1相去甚远。在拟合数据之前,对数据进行归一化,使之等于1。

编辑

实际上,如果数据不是(或多或少,它接受0.5-1.5范围内的数据),函数确实会标准化。并且工作得非常好。由于y在函数内部是标准化的,如果您想要将结果normy进行比较,则需要标准化y或反规范化norm

代码语言:javascript
运行
复制
 % normalize y
 plot(x,norm,x,y./sum(y))
 % denormalize norm
 plot(x,norm*sum(y),x,y)

在任何一种情况下(但规模不同):

票数 1
EN

Stack Overflow用户

发布于 2015-07-21 19:23:52

gaussfit(x,y)对数据进行归一化高斯拟合。如果你的数据没有被标准化,这是不能工作的。如何恰当地拟合它的问题已经回答了here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31535729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档