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)

編集(ジュリアン・シュティルネマンに応えて):

再パラメータ化についてはよくわかりません。私の実際の問題は次のとおりです。理論的にはf(RT)= g(識別時間)+ h(選択時間)として記述できる反応時間(RT)があります。ここで、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も役に立ちません)。第二に:注意してください、あなたは非中心ノイズを考慮しています...ディーマーは処理できますが、デコンはできません。コードの例を次に示します。

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)を使用しても、推定はディーマーを使用した方が優れています。これは、適応推定によるものです。deconでも同様の結果が得られる可能性がありますが、パッケージで提供されている関数を使用して帯域幅パラメーターを調整する必要があります。あなたが与えたパラメータに関して、フーリエ変換は非常に「フラット」です。これにより、あらゆる目的の実装で適切な帯域幅パラメーターを選択することが非常に困難になります(deamerのように適応的に、またはdeconのように推定を使用して)。deconPdfの帯域幅パラメーターをいじってみても、おそらく数値の制限のために役に立ちません。問題は、モデルのより大きなコレクションの探索を可能にするために、ディーマー関数のコードを微調整する必要があります。これにより、推定時間が大幅に増加します。何らかの方法で問題を再パラメータ化することを検討する必要がありますか?

最高、ジュリアン・シュティルネマン

于 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

2回目の投稿に続いて:あなたの問題を完全に理解しているかどうかはわかりません。しかし、私が理解していることから、2つの可能性があります。

1)変換関数を使用しない場合、選択時間=RT-識別時間。データセットの各個人でRTと識別時間が両方とも観察される場合、選択時間は決定論的に既知であり、これはデコンボリューションとは関係ありません。

2)RTが1つのiidサンプルで観察され、選択時間が別の独立サンプルで観察された場合、はい、唯一の方法はデコンボリューション密度推定を検討することです。ただし、フィッティング方法を使用していくつかのパラメトリックな仮定を行ったとしても、RTまたはDTの密度は本当にわかりません。DTをノイズと見なすと、問題は次のようになります。RT= ST +ノイズ、識別時間のサンプルによって与えられるiidノイズの補助サンプル。観測されていないSTの密度を推定したい。この状況でデコンボリューションを実行できる唯一のパッケージは、deamerSE関数を備えたdeamer(私が知る限り)です。私があなたの問題を正しく述べたならば、あなたはマニュアルの例を見るべきです。また、変換せずに生データを使用することをお勧めします(少なくとも最初の分析では)。例:

deamerSE(RT, errors=DT)

ここでも、エラーは中央に配置されていません(正の値です)。したがって、エラーが生成したシフトを考慮して、前後に調整する必要があります...これは、ディーマーのマニュアルの例にもあります。

最高、ジュリアン・シュティルネマン

于 2012-09-17T22:44:53.540 に答える