非線形回帰問題における識別可能性


8

次のモデルで作業しているとします

yi=α(1exp(βti))+γ(1exp(δti))+εi

ゼロで平均IIDガウスであり、私はのベストフィット値見つけようとしている。εiα,β,γ,δ

具体的には、これはRHSの第1項と第2項に従って時間とともに成長する2つの亜種を含む一部の細菌種の総量のモデルであると言いますが、ここでは総個体数のみを測定します。注:これは実際の設定ではありませんが、質問には十分です。

たとえば、常にとを交換するだけで、正確に同じ密度/尤度を取得できるため、モデルは通常の意味で識別できません。αγ

ご想像のとおり、これでMCMCを実行すると、ひどく広い事後検定が行われ、非線形最小二乗アプローチは初期の推測に非常に敏感です-尤度関数には大きなプラトーがあります。

この段階では、より良い実験計画はオプションではありません。明らかに、亜種を個別に測定することが最良のオプションです。

この問題で私ができることはありますか、それともより良い実験デザインが唯一の選択肢ですか?


1
同じ構造の2つの用語があるのはなぜですか?あなたが言ったように、彼らは誤認されています。
アンナSdTC 2017

1
それらは、測定された数量の2つの「サブ数量」を表します。私はこのモデルを定式化しませんでした。いくつかのデータに当てはめるために与えられました、そして私にそれを与えた人々はそれを変更したくないと言いました。できないことを伝える前に、自分にできることは何もないことを確認したかったのです。
2017

1
このモデルに基づくことはできないと思います。最初のステップでこれらの指数項が1つしかなく、2番目のステップで「サブ量」を計算する、ある種の2ステップ推定を実行できますか?
アンナSdTC 2017

1
うまくいくかもしれません。私は間違いなくいくつかのパラメーターを修正する必要があります。または(負ではない)のいずれかで指数関数的な前に(「大きな」レートパラメーターを指定して)置くとどうなりますか?どうにかして正則化を試みるという線に沿って考える...αγ
2017

1
一般的な情報として、非線形最小二乗法として「Levenberg-Marquardt」(LM)と「信頼領域反射」(TRR)があります。それらの1つを試しましたか?TRRではパラメーターに境界を設定できるのに対し、LMではそれができないことを知っています。これは、あなたの問題のために、私はあなたが両方の用語を区別できるようにするより多くの何かを持っている必要があると思います 母集団が1つだけの測定値を特定し、Annaが指摘したように2段階の推定を行うか、各亜種の特異性を考慮してモデルを変更することができます。そうでなければ、このモデルの有用性はわかりません。
Learn_and_Share

回答:


5

特定のモデルが2つの記述を持つことができるという些細な意味を除いて、識別可能性の問題はありません。本当の問題は、モデルのフィッティングの難しさのように見えますが、それは、識別可能性の欠如ではなく、モデルのパラメーター化の方法が原因です。

この問題にも平凡な解決策があります。一般性を失うことなく、その宣言します。本当にうるさくなりたい場合は、場合、主張します。βδβ=δαγ

残念ながら、これには、これらの制約を尊重するためにモデルを適合させるための手順が必要です。ただし、ここでの制約の導入はそれほど悪いことではありません。アプリケーションが明らかにすべてのパラメーターがとにかく負ではないためです。パラメーター空間には既に鋭い境界があります。もう1つの制約を含めても、モデルの適合方法を変更する必要はありません。


制約付き最適化を非制約付き最適化に変換する1つのよく知られた方法は、新しいパラメーター空間で境界が無限に押し出されるように問題を再パラメーター化することです。ここでそれを達成する多くの方法があります。パラメータが何を意味するかを考慮することで、ガイドが得られます。特に、は、関数によって達成される最大値 for。与えられた場合、必然的におよびν=α+γ

tg(t;α,β,γ,δ)=α(1eβt)+γ(1eδt)
t0ν0ανγ=να。負でない値の合計が固定された全体である場合、角度の観点から全体の比率をパラメーター化するために機能することがよくあります。さらに、、、およびが正であることを確認する簡単な方法は、それらを指数関数にすることです。つまり、それらの対数をパラメーターとして使用します。最後に、、をある角度x二乗余弦になるように設定します。したがって、関数を当てはめることで問題を再パラメーター化する可能性がありますνβδδβδβ

tf(t;n,a,b,d)=en(1cos(a)2exp(ebt)sin(a)2exp(ebcos(d)2t)).

これらのパラメーターの推定値(ちなみに、角度とあいまいさのために「識別可能」ではありません)から、元のパラメーターを次のように復元できます。ad

α=encos(a)2β=ebγ=ensin(a)2δ=ebcos(d)2.

指数関数とトリガー関数のプロパティは、すべての制約が保持されることを保証します:、、および。(倍精度浮動小数点数は天文学的に小さくなる可能性があるため、これらの制約ではと間に実際的な違いはありません。)α>0βδ>0γ>0>

この明確に定義された意味では、モデルを適合させるために使用されるパラメーターが識別可能でなくても、モデルは識別可能です。


MCMCを使用することもできますが、目的が曲線の当てはめだけの場合は、Newton-Raphsonなどの数値ソルバーを使用する方が簡単です。 秘訣は良い初期値見つけることです の最大値はわずかな過大評価になります。だから、おそらく始め。各コンポーネントが全体に大きな貢献をすると仮定してで始めることができます。予想される減衰率に基づいて、とについて妥当な推測を行います。たとえば、の範囲が妥当である場合、を最大の一部とするyienn=log(max(yi)/2)a=π/4ebedtbtおよびおそらく任意にます。小さい開始値を使用する可能性があります。(多くの場合、これらの選択に応じてパラメーター推定の異なるを取得しますが、通常、それらは関数自体にそれほど影響を与えません。)d=π/4f

多くの状況で、このアプローチは非常にうまく機能します。 エラーの分散がと同じかそれ以上の場合(大量のデータがないと信号をまったく識別しにくい場合)を除き、近似は少量のデータでも機能します:すべて必要なのは4つです。maxyi

モデルがどのように適合しているかに関係なく、通常はパラメーターに大きな不確実性があることに注意してください。この曲線のファミリーは、本質的に2パラメーターの指数ファミリー小さな摂動です。多くの状況では、2つのパラメーター(振幅と最長の減衰率)は妥当な精度で識別できますが、他の2つのパラメーターは、この指数形状からの小さな変動を反映しているため、通常は非常に不確かです。tAeBtAB

図

図は、挑戦的な適合の例を示しています。 下にある曲線は黒で示されています。最終的には、非常にゆっくりと最大に達します。灰色の点としてプロットされているデータポイントのみが使用可能です。ランダムエラーの標準偏差はで、その最大値のかなりの割合です。エラーの多くは正の値で、フィットした赤の曲線が少し高くなります。近似曲線の2つの指数成分は、灰色の破線と点線で示されています。時間までにしきい値に急速に上昇することが示されています。もう1つは、他の指数関数的なしきい値への上昇を反映しています。4/3241/21/3t=11。(データポイント以上になるまで、付近でその鋭い "ショルダー"を再現する希望はほとんどありません。以下のコードを変更して試してください。)t=11000n

特定の問題での成功は、エラーの大きさに依存します。サンプリングされるの値の範囲。これらの値の間隔。使用可能な値の数。開始値の選択。それにも関わらず、これは一般に扱いにくい問題であるように見えます。さらに、どのような最尤フィッターも同様に処理して、残差の二乗の合計を最小化し、さらに、パラメーターの信頼領域を提供します。t

これは、Rこの提案をテストするために使用したコードです。これは図を再現し、簡単に変更できます(最初に変数の値を変更します)。

#
# Describe the underlying model
#
set.seed(17)
alpha <- 1
beta <- 2
gamma <- 1/3
delta <- 1/10
sigma <- 1/2  # Error SD.
n <- 24
x.max <- 20   # Largest value of t.
#
# The original parameterization.
#
g <- function(x, alpha, beta, gamma, delta) {
  alpha * (1 - exp(-beta * x)) + gamma * (1 - exp(-delta * x))
}
#
# The re-parameterization.  `f.1` and `f.2` are the two exponential components.
#
f <- function(x, nu, t.a, log.b, t.d) {
  n <- exp(nu)
  a <- cos(t.a)^2
  alpha <- n*a
  gamma <- n*(1-a)
  beta <- exp(log.b)
  delta <- cos(t.d)^2 * beta
  n - alpha * exp(-beta * x) - gamma * exp(-delta * x)
}
f.1 <- function(x, nu, t.a, log.b, t.d) {
  n <- exp(nu)
  a <- cos(t.a)^2
  alpha <- n*a
  beta <- exp(log.b)
  alpha * (1 - exp(-beta * x))
}
f.2 <- function(x, nu, t.a, log.b, t.d) {
  n <- exp(nu)
  a <- cos(t.a)^2
  gamma <- n*(1-a)
  beta <- exp(log.b)
  delta <- cos(t.d)^2 * beta
  gamma * (1 - exp(-delta * x))
}
#
# The objective to minimize is the mean squared residual.
# This is equivalent to finding the MLE for Gaussian errors.
#
obj <- function(theta, x, y) {
  crossprod(y - f(x, theta[1], theta[2], theta[3], theta[4])) / length(x)
}
#
# Create data and plot them.
#
x <- seq(0, x.max, length.out=n)
y <- g(x, alpha, beta, gamma, delta) + rnorm(length(x), 0, sigma)
plot(x,y, pch=16, col="#00000040", xlab="t")
#
# Fit the curve.
#
theta <- c(nu=log(max(y)/2), t.a=pi/4, log.b=log(max(x)/10), t.d=pi/4)
fit <- nlm(obj, theta, x=x, y=y, gradtol=1e-14)
theta.hat <- fit$estimate
#
# Plot relevant curves.
#
curve(g(x, alpha, beta, gamma, delta), add=TRUE, lwd=2)
curve(f(x, theta.hat[1], theta.hat[2], theta.hat[3], theta.hat[4]),
      add=TRUE, col="Red", lwd=2)
curve(f.1(x, theta.hat[1], theta.hat[2], theta.hat[3], theta.hat[4]),
      add=TRUE, col="Gray", lty=2, lwd=2)
curve(f.2(x, theta.hat[1], theta.hat[2], theta.hat[3], theta.hat[4]),
      add=TRUE, col="Gray", lty=3, lwd=2)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.