与R(解构和迪默封装)去卷积(Deconvolution with R (decon and dea

2019-07-31 15:31发布

我有以下形式的模型:Y = X +噪声。 我所知道的“Y”和噪声的分布和想有“x”的分布。 所以,我试图与R.反卷积分布,我发现2包(解构和迪默),我认为这两种方法应该或多或少相同的,但我不明白为什么有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)

编辑 (响应朱利安Stirnemann ):

我不知道如何重新参数化。 我的实际问题是:我有理论上可以被描述为f(RT)反应时间(RT)= G(辨别时间)+ H(选择时间),其中f,g和h是可以是那些时间值的变换。 我有“RT”和“歧视时间”在我的数据集的值。 而我感兴趣的选择时间或可能H(选择时间)。 与核密度估计我发现Weibull分布拟合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)

你是什​​么意思与重新参数化? 例如,使用的尺度参数的值不同?

Answer 1:

作为一个回答你最后的评论:错误转移的观测值。 要卷积的信号是介于0和0.3〜我猜。 下面是使用迪默一些代码:

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)

这是你会得到什么用非参数解卷积(不管实现,包等)。 只为你的信息,你的信噪比极低......你看到什么是真正的几乎只有噪音。 这对你有兴趣的密度估计强烈影响,使用非参数方法就像试图找到大海捞针时尤其如此。 你应该重新考虑估计密度,而不是试图让只有少数关注数量...

祝你好运,朱利安Stirnemann



Answer 2:

有在您的文章的几个问题。 第一:在非参数解卷积问题,你通常不会'知道“Y”的分布。 而您有承担与加性噪声观察到“Y”的样品,“x”为未观察到的。 任何假设是在“Y”或者只在“噪音”的“x”,但制作。 您的演示文稿似乎暗示着你正在考虑的参数问题(因为这既不迪默或去污是任何帮助)。 第二:要小心,你正在考虑一个非中心的噪音......这迪默可以对付,但不是解构。 下面是代码的示例:

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在我的例子),估计是与迪默更好:这是因为自适应估计的。 你也许可以得到与解构类似的结果,虽然,但你必须调整在使用本产品提供的功能的带宽参数。 关于你给的参数中,傅里叶变换非常“平面”。 这使得它很难对任何的通用实现来选择合适的带宽参数(或自适应地在迪默或使用估计在解构)。 在deconPdf带宽参数玩耍并没有帮助,可能是因为数字的限制。 您的问题将需要在迪默功能的代码进行一些微调,以允许更大的模型收藏探索。 这也将显着增加估计时间。 你能更应考虑重新设定参数,以某种方式问题了吗?

最好,朱利安Stirnemann



Answer 3:

按照你的第二个职位:我不知道我完全理解你的问题。 不过,从我个人理解,两种可能性:

1)不使用任何变换函数,选择时间= RT - 歧视时间。 如果RT和歧视的时间都在你的数据集的每一个人观察,选择时间确定地知道 - 这无关与反褶积。

2)如果RT在一个IID样品和选择时间观察到的另一个独立的样品中,然后是,唯一出路是考虑解卷积密度估计。 然而,尽管你已经使用拟合方法取得了一定的参数假设,你真的不知道RT或DT的密度。 考虑DT为噪声,你的问题是:RT = ST +噪声,与您的判别时间样本给定IID噪声的辅助样本。 要估计ST的密度是不可观测的。 可在这种情况下,执行反卷积唯一的包是一个deamerSE功能迪默(据我所知)。 如果我说你的问题正确,你应该看看手册中的例子。 我还建议使用(至少在第一次分析),而不转换的原始数据。 一个例子:

deamerSE(RT, errors=DT)

这里再次不集中的错误(这是肯定的),所以你必须从调整和,占已产生错误的转变......这也是在迪默手册的例子。

最好,朱利安Stirnemann



文章来源: Deconvolution with R (decon and deamer package)