根据数据估算噪声参数

问题描述

我有兴趣从(x,y)数据中提取噪声参数,其中x是已知的输入值,y是相应的信号,而且我通常非常了解噪声生成过程的功能形式。

###
library(MASS)
n <- 100000
x <- runif(n,min = 50,max = 1000)
y1 <- rnorm(n,5) + rnegbin(x / 4,theta = 100)
plot(x[1:100000*100],y1[1:100000*100]) #plot every 1ooth datapoint only,for speed
y2 <- x / 7.5 + rnorm(n,50,2) + rnorm(n,0.1 * x / 7.5)
plot(x[1:100000*100],y2[1:100000*100])
y3 <- x + rnorm(n,5) + rnorm(n,0.1 * x)
plot(x[1:100000*100],y3[1:100000*100])
y4 <- rnorm(n,5) + (rnegbin((x + rnorm(n,5)),theta = 100)) / 2
plot(x[1:100000*100],y4[1:100000*100])
###

在(x,y1)示例中,y数据是根据负二项式模型(theta = 100)加上一些恒定的(高纯正)高斯噪声(avg = 0,stdev = 5)生成的(噪声)计数从输入值x。此外,在生成计数之前,过程中的某个步骤会将信号按比例缩小4倍。

在(x,y2)的示例中,信号是通过不同类型的过程生成的,其中响应因子为1 / 7.5,因此首先将y值按该因子进行缩放,然后将恒定的高斯背景噪声(avg = 50,stdev = 2),再加上更多与y(= x / 7.5)成正比的高斯噪声。

我想我的主要问题是:是否有一个函数将(x,y)数据以及用户指定的噪声模型作为输入,并针对示例y1给出最佳估计,四个参数:theta,恒定噪声avg,恒定噪声stdev和缩放因子?

为简化起见,如示例(x,y3),我可以在拟合之前手动缩放信号,使信号(平均)与输入成正比,并且算法不应考虑任何缩放会影响因素,但假设在平均值上,y与x成正比(斜率= 1),因此无需考虑此参数,从而简化了拟合过程。

还有更复杂的示例(x,y4)。在这里,信号是通过复杂的过程产生的,信号最初与x成比例(无缩放),添加了恒定的高斯噪声(avg = 0,stdev = 5),然后从已经有噪声的输入中产生噪声计数,信号除以2,然后添加更恒定的高斯噪声(avg = 0,stdev = 5)。

在面向数据处理的R中,所有这些似乎都是可行的事情,但是我还没有找到合适的解决方案。总体而言,我还是不是一个非常有经验的程序员(特别是R),并且我没有开发算法的经验,因此我的想法可能完全不对,在这种情况下,我很抱歉。

这些玩具示例中提出的噪声水平和精确模型可能并不现实,但是我只是想说明一下,我想找到一种方法来对有些复杂且用户指定的多参数噪声场景进行建模。在很多情况下,我非常准确地知道哪种处理过程会生成感兴趣的真实数据,因此这不是问题,我可以写下该函数。瓶颈是要知道要使用什么适当的R函数/程序包(R中提供了类似的东西)以及如何正确使用它们,因此我可以提取表征这些参数的参数(这是我的主要兴趣)程序。

如果没有可以解决很多问题的通用解决方案,那么我当然也对仅专注于一种数据类型的算法和函数感兴趣(例如,线性回归)。最后,如果不能选择拟合复杂的噪声模型,那么我也想从一个简单的方法开始,例如仅拟合负二项式,在某些情况下,其他噪声源可以忽略不计,因此可以做到。像这样

y5 <- rnegbin(x,theta = 100)

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...