2

我有一个形式的模型:y = x + 噪声。我知道“y”和噪声的分布,并希望得到“x”的分布。所以我尝试用 R 对分布进行去卷积。我发现了 2 个包(decon 和 deamer),我认为这两种方法应该或多或少相同,但我不明白为什么用 DeconPdf 去卷积会给我一个类似于正态分布的东西和用 deamerKE 去卷积给了我一个均匀的分布。这是一个示例代码:

library(fitdistrplus) # for rweibull
library(decon) # for DeconPdf
library(deamer) # for deamerKE

set.seed(12345)
y <- rweibull(10000, shape=5.780094, scale=0.00204918)
noise <- rnorm(10000, mean=0.002385342, sd=0.0004784688)
sdnoise <- sd(noise)

est <- deamerKE(y, noise.type="Gaussian", 
                mean(noise), sigma=sdnoise)
plot(est)

estDecon <- DeconPdf(y, sdnoise, error="normal", fft=TRUE)
plot(estDecon)

编辑(回应Julien Stirnemann):

我不确定重新参数化。我的实际问题是:我有反应时间 (RT),理论上可以描述为 f(RT) = g(辨别时间) + h(选择时间),其中 f,g 和 h 可以是这些时间值的转换。我的数据集中有“RT”和“辨别时间”值。我对选择时间或 h(选择时间)感兴趣。通过核密度估计,我发现威布尔分布最适合 1/RT 值,而正态分布最适合 1/(判别时间)。这就是为什么我可以将我的问题写成 1/RT = 1/(鉴别时间)+ h(选择时间)或 y = x + 噪声(我认为噪声是 1/(鉴别时间))。模拟这些反应时间给了我以下具有以下参数的分布:

y <- rweibull(10000, shape=5.780094, scale=0.00204918)
noise <- rnorm(10000, mean=0.002385342, sd=0.0004784688)

重新参数化是什么意思?使用不同的值,例如比例参数?

4

3 回答 3

3

你的帖子有几个问题。第一:在非参数反卷积问题中,您通常不“知道”“y”的分布。相反,您有一个假设用加性噪声观察到的“y”样本,“x”是未观察到的。不对“y”或“x”做任何假设,而只对“噪声”做任何假设。您的演示文稿似乎暗示您正在考虑一个参数问题(对于这个问题,deamer 或 decon 都没有任何帮助)。第二:小心,你正在考虑一个非中心的噪音...... deamer 可以处理但不能处理。这是一个代码示例:

library(decon) # for DeconPdf
library(deamer) # for deamerKE

set.seed(12345)
shape=5; scale=1; mu=0; sd=0.2

x <- rweibull(5000, shape=shape, scale=scale)
noise <- rnorm(5000, mean=mu, sd=sd)
y=x+noise
curve(dweibull(x,shape,scale),lwd=2, from = 0, to = 2)

est <- deamerKE(y, noise.type="Gaussian", mu=mu, sigma=sd, from=0, to=2)
lines(est)

estDecon <- DeconPdf(y, sd, error="normal", fft=TRUE)
lines(estDecon, lty=2)

legend('topright', lty=c(1,1,2), lwd=c(2,1,1), 
    legend=c("true", "deamerKE", "DeconPdf"))

正如您从图中看到的那样,即使使用中心噪声(在我的示例中为 mu=0),使用 deamer 的估计效果更好:这是因为自适应估计。虽然你可能使用 decon 获得类似的结果,但是你必须使用包中提供的函数来调整带宽参数。关于您提供的参数,傅里叶变换非常“平坦”。这使得任何通用实现都很难选择适当的带宽参数(在 deamer 中自适应地或在 decon 中使用估计)。在 deconPdf 中使用带宽参数也无济于事,可能是因为数字限制。您的问题需要对 deamer 函数的代码进行一些微调,以允许探索更大的模型集合。这也将显着增加估计时间。您是否应该考虑以某种方式重新参数化您的问题?

最佳,朱利安·斯特内曼

于 2012-09-17T18:14:58.147 回答
2

作为对您上一条评论的回答:错误改变了观察值。我猜你希望去卷积的信号在 0 到 0.3 之间。这是一些使用deamer的代码:

library(actuar) # for rinvweibull
library(deamer)
set.seed(123)
RT <- rinvweibull(30000, shape=5.53861156, scale=488)/1000
RT <- RT[RT<1.5]
noise <- 1/rnorm(30000, mean=0.0023853421, sd=0.0004784688)/1000
noise <- noise[noise<1.5]

ST <- deamerSE(RT, errors=noise, from=0, to=0.3)
plot(ST)

这就是使用非参数反卷积(无论实现、包等)所获得的结果。仅供参考,您的信噪比极低……您观察到的实际上几乎只是噪声。这会对您感兴趣的密度估计产生很大影响,尤其是在使用非参数方法时,就像大海捞针一样。您应该重新考虑估计密度,而不是尝试只获得少数感兴趣的数量......

祝你好运,朱利安·斯特内曼

于 2012-09-18T15:54:31.443 回答
1

在您的第二篇文章之后:我不确定我是否完全理解您的问题。但是,据我了解,有两种可能性:

1)不使用任何变换函数,选择时间=RT-判别时间。如果在数据集的每个个体上都观察到 RT 和辨别时间,则选择时间是确定性已知的——这与反卷积无关。

2)如果在一个独立同分布样本中观察到 RT,而在另一个独立样本中观察到选择时间,那么是的,唯一的出路是考虑去卷积密度估计。但是,尽管您使用拟合方法做出了一些参数假设,但您确实不知道 RT 或 DT 的密度。将 DT 视为噪声,您的问题是:RT = ST + 噪声,以及由您的判别时间样本给出的 iid 噪声辅助样本。您希望估计未观察到的 ST 的密度。在这种情况下,唯一可以执行反卷积的包是带有 deamerSE 功能的 deamer(据我所知)。如果我正确地陈述了您的问题,您应该查看手册中的示例。我还建议使用未经转换的原始数据(至少在第一次分析中)。一个例子:

deamerSE(RT, errors=DT)

在这里,您的错误再次没有居中(它是积极的),因此您将不得不调整从和到,以解释错误产生的转变......这也在 deamer 手册的示例中。

最佳,朱利安·斯特内曼

于 2012-09-17T22:44:53.540 回答