ランダムサンプリングによる単純な積分方程式の解法


8

してみましょう非負関数です。ような を見つけることに興味があります。警告:私ができることは[0,1]のポイントでをサンプリングすることだけです。ただし、必要に応じて、fをランダムにサンプリングする場所を選択できます。 fz[0,1]F [ 0 1 ] F

0zf(x)dx=1201f(x)dx
f[0,1]f

質問:

  1. 有限個のサンプルの後にzの不偏推定を取得することは可能zですか?もしそうなら、kサンプル後のそのような推定値の可能な最小の分散は何ですか?
  2. そうでない場合、zを推定するために利用できる手順zと、それに関連する収束時間は何ですか。

コメントでDouglas Zareが指摘したように、関数がゼロに近いか非常に大きい場合、これを行うのは非常に困難です。幸いなことに、これを使用する必要がある関数は上と下からバインドされているため、1 \ leq f(x)\ leq 2と仮定しましょ1f(x)2。さらに、fがリプシッツであるか、それが役立つ場合は微分可能であると仮定することもできます。


1
これ以上の情報がないと、非常に悪い動作をする可能性があります。f1/32/3の間で0であり、\ int_0 ^ {1/3} f(x)〜dx \約1/2あると想像してくださいfを少し変更すると、中央値が1/3から2/3にジャンプします。01/32/301/3f(x) dx1/2.f1/32/3
Douglas Zare 2012

@robinsonに関する詳細情報を提供できますか?または、密度問題を解くことに興味がありますか?fff

@DouglasZare-コメントありがとうございます。私の編集を参照してください。
ロビンソン2012

@Procrastinator-もう少し情報を追加して質問を編集しました。
ロビンソン2012

3
(+1)アップデート用。左側を右側で除算すると、これはサポートされている未知の確率分布の中央値を見つけることに帰着することがわかります。[0,1]
枢機卿

回答:


6

枢機卿が彼のコメントで指摘したように、あなたの質問は次のように言い換えることができます。

単純な代数によって、積分方程式は次のように書き換えることができる ここでとして定義された確率密度関数である g g x = f x

0zg(x)dx=12,
g
g(x)=f(x)01f(t)dt.

ましょ密度とランダム変数である。定義により、なので、積分方程式は あなたの問題は次のように述べることができることをその意味:G P { X Z } = Z 0 G X XgP { X Z } = 1P{Xz}=0zg(x)dx

P{Xz}=12,

「を密度確率変数にしましょうの中央値をます。」g XXgX

中央値を推定するには、値のサンプル描画する任意のシミュレーション法を使っし、あなたの推定値としてサンプル中央値を取ります。XXX

1つの可能性は、Metropolis-Hastingsアルゴリズムを使用して、目的の分布を持つポイントのサンプルを取得することです。Metropolis-Hastingsアルゴリズムでの受け入れ確率の表現のため、密度の正規化定数の値を知る必要はありません。したがって、この統合を行う必要はありません。g01f(t)dtg

以下のコードは、Indepence Samplerと呼ばれるMetropolis-Hastingsアルゴリズムの特に単純な形式を使用しています。これは、分布がチェーンの現在の値に依存しない提案を使用しています。私は独立した統一提案を使用しました。比較のために、スクリプトはモンテカルロの最小値と標準的な最適化で見つかった結果を出力します。サンプルポイントはベクトルchainに格納されますが、シミュレーションのいわゆる「バーンイン」期間を形成する最初のポイントを破棄します。10000

BURN_IN = 10000
DRAWS   = 100000

f = function(x) exp(sin(x))

chain = numeric(BURN_IN + DRAWS)

x = 1/2

for (i in 1:(BURN_IN + DRAWS)) {
    y = runif(1) # proposal
    if (runif(1) < min(1, f(y)/f(x))) x = y
    chain[i] = x
}

x_min = median(chain[BURN_IN : (BURN_IN + DRAWS)])

cat("Metropolis minimum found at", x_min, "\n\n")

# MONTE CARLO ENDS HERE. The integrations bellow are just to check the results.

A = integrate(f, 0, 1)$value

F = function(x) (abs(integrate(f, 0, x)$value - A/2))

cat("Optimize minimum found at", optimize(F, c(0, 1))$minimum, "\n")

結果は次のとおりです。

Metropolis minimum found at 0.6005409 
Optimize minimum found at 0.601365

このコードは、本当に必要なものの開始点としてのみ使用されます。したがって、注意して使用してください。


f

f

f/f

離散時間マルコフ連鎖をカバーする、確率過程の入門コースを受講しましたか?
Zen

1
ところで:世界の先延ばし屋、団結!しかし、今日ではありません...
Zen

3

|1Nn=1Nf(xn)01f(u)du|ω(f;DN(x1,,xN))
ω(f;t)=sup{|f(u)f(v)|:u,v[0,1],|uv|t,t>0}
DN(x1,,xN)=supu|1Nn1{xn[0,u)}u|=12N+maxn|xn2n12N|
x1,,xNセミオープン間隔、そのルベーグ測度。最初の式は定義で、2番目の式は 1Dシーケンスのプロパティです(同じ本の定理2.6)。[0,u)u[0,1]

したがって、明らかに積分近似の誤差を最小限に抑えるには、少なくとも方程式のRHSでは、をとる必要があります。ランダム評価をねじ込むと、関数の重要な機能にランダムなギャップが生じるリスクがあります。xn=(2n1)/2N

このアプローチの大きな欠点は、この均一に分散されたシーケンスを生成するために値にコミットする必要があることです。それが提供する近似の品質に満足できない場合は、の値を2倍にして、以前に作成された間隔のすべての中点をヒットするだけです。NN

ポイントの数を徐々に増やすことができるソリューションが必要な場合は、その本を読み続け、ファンデルコープトシーケンスと根本的な逆行列について学ぶことができます。ウィキペディアの低不一致シーケンスを参照してください。詳細はすべて提供されています。

更新:を解くには、部分和定義します 検索よう および補間を見つけるのは この補間は、が連続であることを前提としています。さらにが2階微分可能である場合、2次展開を積分してとを組み込み、 3次方程式を解くことにより、この近似z

Sk=1Nn=1kf(2n12N).
k
Sk12SN<Sk+1,
ffSk1Sk+2
zN=2k12N+SN/2SkN(Sk+1Sk).
f()f()Sk1Sk+2z

1
これの要点が好きです。OPの質問を解決するために提案する戦略をより明確にすることは有益だと思います。現在のところ、答えは(私には)質問の方程式のRHSを計算する方法を扱っているかのように読み取られます。
枢機卿

1
SNf

はい; このリーマン和にこの最適性の正当化があることは興味深いですが。
StasK 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.