フィットした曲線の信頼性は?


11

当てはめられた曲線の不確実性または信頼性を推定したいと思います。それが何であるかわからないので、私は探している正確な数学的量を意図的に挙げていません。

ここで、(エネルギー)は従属変数(応答)であり、(ボリューム)は独立変数です。ある物質のエネルギー-体積曲線を見つけたいのですが。そこで、量子化学のコンピュータープログラムを使用していくつかの計算を行い、いくつかのサンプルボリューム(プロットの緑の円)のエネルギーを取得しました。V E V EVE(V)

次に、これらのデータサンプルをBirch–Murnaghan関数で近似しました: これは4つのパラメータ:。また、これは正しいフィッティング関数であると想定しているため、すべてのエラーはサンプルのノイズに起因するだけです。以下では、フィットされた関数が関数として記述されます。E 0V 0B 0B ' 0EV

E(E|V)=E0+9V0B016{[(V0V)231]3B0+[(V0V)231]2[64(V0V)23]},
E0,V0,B0,B0(E^)V

ここでは、結果を確認できます(最小二乗アルゴリズムに適合)。y軸の変数はで、x軸の変数はです。青い線はフィットで、緑の円はサンプルポイントです。VEV

サンプルのバーチ–ムルナガンフィット(青)(緑)

この近似曲線の信頼性の測定(ボリュームに応じて)が必要になりました。これは、遷移圧力やエンタルピーなどの追加の量を計算する必要があるためです。E^(V)

私の直感は、近似曲線が中央で最も信頼できることを教えてくれます。したがって、このスケッチのように、サンプルデータの終わり近くで不確実性(たとえば、不確実性の範囲)が増加するはずです。 ここに画像の説明を入力してください

しかし、私が探しているこのような測定値は何ですか?どのように計算できますか?

正確には、実際には1つのエラーソースしかありません。計算されたサンプルは、計算上の制限によりノイズが多くなります。したがって、データサンプルの密なセットを計算すると、それらはでこぼこの曲線を形成します。

望ましい不確実性の推定値を見つけるための私の考えは、学校で学習するときにパラメーターに基づいて次の「誤差」を計算することです(不確実性の伝播):

ΔE0ΔV0ΔB0ΔB'0

ΔE(V)=(E(V)E0ΔE0)2+(E(V)V0ΔV0)2+(E(V)B0ΔB0)2+(E(V)B0ΔB0)2
と、フィッティング・ソフトウェアによって与えられます。ΔE0,ΔV0,ΔB0ΔB0

それは許容できるアプローチですか、それとも間違っていますか?

PS:データサンプルと曲線の間の残差の2乗を合計して、ある種の「標準エラー」を取得することもできますが、これはボリュームに依存しません。


どのパラメーターも指数ではありません。これは良いことです。どのNLSソフトウェアを使用しましたか?ほとんどは、パラメトリック不確実性の推定値を返します(パラメーターが指数である場合、これは完全に非現実的な場合がありますが、これは当てはまりません)。
DeltaIV 2016年

方程式の右側にAはありませんが、プロットには表示されます。「4つのパラメータ」とは、統計的な意味でのパラメータ(この場合、IVの場所)を意味しますか、それとも、変数(この場合、パラメータの場所)を意味しますか?シンボルの役割を明確にしてください-測定されるものと未知数とは何ですか?
Glen_b-2016

1
VはA ^ 3だと思います。それは私が使用したものであり、私の計画は彼と同じに見えました。
デイブフルニエ2016年

@Glen_b X軸がVである間に、Birch–Murnaghan関数でY軸がEであると仮定しました。4つのパラメーターは、Birch–Murnaghan関数での4つのパラメーターです。あなたが彼が持っているもののように見えるものを手に入れると仮定した場合。
デイブフルニエ2016年

ああ、待って、やっと手に入れた。は期待演算子ではありません(RHSでエラー項のない方程式のLHSで見られると思います)、は形式の関数として記述された応答変数です。誰にでも重要なヒント:回帰式の左側にを含む方程式を統計学者に見せないでください。意味を明確に定義しないでください。期待どおりだと思われる可能性が高いからです。E()Ey(x)E()
Glen_b-モニカを復元する

回答:


8

これは通常の最小二乗問題です!

定義

x=V2/3, w=V01/3,

モデルは書き換え可能

E(E|V)=β0+β1x+β2x2+β3x3

ここで、係数は、元の係数と代数的に関連しています。β=(βi)

16β=(16E0+54B0w39B0B0w3144B0w5+27B0B0w5126B0w727B0B0w736B0w9+9B0B0w9).

これは、代数的または数値的に解くのが簡単です、およびが正である解を選びます。これを行う唯一の理由は、、および推定値をそれらが物理的に意味があることを確認することです。フィットのすべての分析は、に関して実行できます。、W B 0B ' 0W E 0 βB0,B0wB0,B0,wE0β

このアプローチは、非線形近似よりもはるかに単純であるだけでなく、より正確でもあります。非線形近似によって返される分散共分散行列は、サンプリング分布の局所二次近似にすぎません一方、(測定における正規分布誤差の場合はいずれにせよ)OLSの結果は近似値ではありません。E(E0,B0,B0,V0)E

信頼区間、予測区間などは、これらの値を見つける必要なしに通常の方法で取得できます。推定とそれらの分散共分散行列に関してそれらを計算します。(Excelでもこれを実行できます!)以下に例を示し、その後にそれを生成した(単純な)コードを示します。β^R

図

#
# The data.
#
X <- data.frame(V=c(41, 43, 46, 48, 51, 53, 55.5, 58, 60, 62.5),
                E=c(-48.05, -48.5, -48.8, -49.03, -49.2, -49.3, -49.35, 
                    -49.34, -49.31, -49.27))
#
# OLS regression.
#
fit <- lm(E ~ I(V^(-2/3)) + I(V^(-4/3)) + I(V^(-6/3)), data=X)
summary(fit)
beta <- coef(fit)
#
# Prediction, including standard errors of prediction.
#
V0 <- seq(40, 65)
y <- predict(fit, se.fit=TRUE, newdata=data.frame(V=V0))
#
# Plot the data, the fit, and a three-SEP band.
#
plot(X$V, X$E, xlab="Volume", ylab="Energy", bty="n", xlim=c(40, 60))
polygon(c(V0, rev(V0)), c(y$fit + 3*y$se.fit, rev(y$fit - 3*y$se.fit)),
        border=NA, col="#f0f0f0")
curve(outer(x^(-2/3), 0:3, `^`) %*% beta, add=TRUE, col="Red", lwd=2)
points(X$V, X$E)

元のパラメーター推定値の同時分布に興味がある場合は、OLSソリューションから簡単にシミュレーションできます。多変量正規化を生成し、それらをパラメーターに変換するだけです。以下は、そのような実現の2000の散布図行列です。強い曲線性は、デルタ法が悪い結果をもたらす可能性が高い理由を示しています。β

図2


1
線形モデルをフィッティングするアルゴリズムは非線形モデルのアルゴリズムよりも数値的に安定していることは事実ですが、非線形フィッティングアルゴリズムが収束している限り、診断の精度に違いがあることは事実ではありません。私がチェックしたところ、少なくとも4つのシグマと同じ残差平方和があります。また、選択した線形パラメーター化は非常に混乱しているため、t検定によると、どのパラメーターも有意ではありません。私のすべてです。それほど大したことではありませんが、面白いし、若いプレイヤーを混乱させるかもしれません。
dave fournier

また、エンタルピーボリューム関数の信頼限界のようなものを望んでいると彼女が言ったので、OPの質問に答えなかったと思います
dave fournier

1
β(E0,)(E^0)
whuber

あなたのモデルと私のものは、パラメータ化に関係なく同一です。(私はOLSモデルについて話しています。)特定のパラメーターがモデルに線形に入る場合、標準偏差がそのパラメーターのより良い信頼限界を生成することは事実です。デルタ法で得られた標準偏差は、モデルのパラメーター化に使用されても、従属変数として解決されても同じです。この場合、対象となる従属変数はエンタルピーボリューム関数であり、そのデルタメソッドstd devは、パラメーター化を使用しても、鉱山を使用しても同じです。
デイブフルニエ2016年

1
β^

3

Ig

gtIg
これにより、その従属変数の推定分散が得られます。平方根をとって、推定標準偏差を取得します。その場合、信頼限界は予測値+-2つの標準偏差です。これは標準的な尤度のものです。非線形回帰の特殊なケースでは、自由度を修正できます。10個の観測値と4つのパラメーターがあるため、10/6を乗算することでモデルの分散の推定を増やすことができます。いくつかのソフトウェアパッケージがこれを行います。ADモデルビルダーのADモデルにモデルを記述し、それを適合させ、(変更されていない)分散を計算しました。私は値を少し推測しなければならなかったので、それらはあなたのものと少し異なります。
                    estimate   std dev
10   pred_E      -4.8495e+01 7.5100e-03
11   pred_E      -4.8810e+01 7.9983e-03
12   pred_E      -4.9028e+01 7.5675e-03
13   pred_E      -4.9224e+01 6.4801e-03
14   pred_E      -4.9303e+01 6.8034e-03
15   pred_E      -4.9328e+01 7.1726e-03
16   pred_E      -4.9329e+01 7.0249e-03
17   pred_E      -4.9297e+01 7.1977e-03
18   pred_E      -4.9252e+01 1.1615e-02

これは、ADモデルビルダーの従属変数に対して実行できます。このようなコードの適切な場所で変数を宣言します

   sdreport_number dep

そして、このような従属変数を評価するコードを書きます

dep=sqrt(V0-cube(Bp0)/(1+2*max(V)));

これは、モデルのフィッティングで観察された最大のものの2倍の独立変数の値に対して評価されることに注意してください。モデルを当てはめると、この従属変数の標準偏差が得られます

19   dep          7.2535e+00 1.0980e-01

プログラムを変更して、エンタルピーボリューム関数の信頼限界を計算するためのコードを含めました。コード(TPL)ファイルは次のようになります。

DATA_SECTION
 init_int nobs
 init_matrix data(1,nobs,1,2)
 vector E
 vector V
 number Vmean
LOC_CALCS
 E=column(data,2);
 V=column(data,1);
 Vmean=mean(V);

PARAMETER_SECTION
 init_number E0
 init_number log_V0_coff(2)
 init_number log_B0(3)
 init_number log_Bp0(3)
 init_bounded_number a(.9,1.1)
 sdreport_number V0
 sdreport_number B0
 sdreport_number Bp0
 sdreport_vector pred_E(1,nobs)
 sdreport_vector P(1,nobs)
 sdreport_vector H(1,nobs)
 sdreport_number dep
 objective_function_value f
PROCEDURE_SECTION
  V0=exp(log_V0_coff)*Vmean;
  B0=exp(log_B0);
  Bp0=exp(log_Bp0);
  if (current_phase()<4)
  f+=square(log_V0_coff) +square(log_B0);

  dvar_vector sv=pow(V0/V,0.66666667);
  pred_E=E0 + 9*V0*B0*(cube(sv-1.0)*Bp0
    + elem_prod(square(sv-1.0),(6-4*sv)));

  dvar_vector r2=square(E-pred_E);
  dvariable vhat=sum(r2)/nobs;
  dvariable v=a*vhat;
  f=0.5*nobs*log(v)+sum(r2)/(2.0*v);

  // code to calculate the  enthalpy-volume function
  double delta=1.e-4;
  dvar_vector svp=pow(V0/(V+delta),0.66666667);
  dvar_vector svm=pow(V0/(V-delta),0.66666667);
  P = -((9*V0*B0*(cube(svp-1.0)*Bp0
      + elem_prod(square(svp-1.0),(6-4*svp))))
      -(9*V0*B0*(cube(svm-1.0)*Bp0
      + elem_prod(square(svm-1.0),(6-4*svm)))))/(2.0*delta);
  H=E+elem_prod(P,V);

dep=sqrt(V0-cube(Bp0)/(1+2*max(V)));

次に、モデルを再フィットして、Hの推定値の標準開発者を取得しました。

29   H           -3.9550e+01 5.9163e-01
30   H           -4.1554e+01 2.8707e-01
31   H           -4.3844e+01 1.2333e-01
32   H           -4.5212e+01 1.5011e-01
33   H           -4.6859e+01 1.5434e-01
34   H           -4.7813e+01 1.2679e-01
35   H           -4.8808e+01 1.1036e-01
36   H           -4.9626e+01 1.8374e-01
37   H           -5.0186e+01 2.8421e-01
38   H           -5.0806e+01 4.3179e-01

これらは観測されたV値に対して計算されますが、任意のV値に対して簡単に計算できます。

これは、実際には線形モデルであり、OLSを介してパラメーター推定を実行する単純なRコードがあることが指摘されています。これは、特に初心者ユーザーにとって非常に魅力的です。ただし、30年以上前のHuberの作業以来、ほぼ常にOLSを中程度に堅牢な代替物に置き換える必要があることを知っているか知っている必要があります。これが日常的に行われていない理由は、堅牢なメソッドは本質的に非線形であるためです。この観点から見ると、Rのシンプルで魅力的なOLSメソッドは、機能というよりは罠のようなものです。ADモデルビルダーアプローチの利点は、非線形モデリングの組み込みサポートです。最小二乗コードを堅牢な通常の混合に変更するには、コードの1行のみを変更する必要があります。この線

    f=0.5*nobs*log(v)+sum(r2)/(2.0*v);

に変更されます

f=0.5*nobs*log(v)
  -sum(log(0.95*exp(-0.5*r2/v) + 0.05/3.0*exp(-0.5*r2/(9.0*v))));

モデルの過剰分散の量は、パラメーターaで測定されます。aが1.0の場合、分散は通常のモデルの場合と同じです。外れ値による分散のインフレがある場合、aは1.0未満になると予想されます。これらのデータの場合、aの推定値は約0.23なので、分散は通常のモデルの分散の約1/4になります。解釈では、外れ値により分散の推定値が約4倍に増加したとされています。これにより、OLSモデルのパラメーターの信頼限界のサイズが大きくなります。これは効率の低下を表しています。正規混合モデルの場合、エンタルピー-体積関数の推定標準偏差は次のとおりです。

 29   H           -3.9777e+01 3.3845e-01
 30   H           -4.1566e+01 1.6179e-01
 31   H           -4.3688e+01 7.6799e-02
 32   H           -4.5018e+01 9.4855e-02
 33   H           -4.6684e+01 9.5829e-02
 34   H           -4.7688e+01 7.7409e-02
 35   H           -4.8772e+01 6.2781e-02
 36   H           -4.9702e+01 1.0411e-01
 37   H           -5.0362e+01 1.6380e-01
 38   H           -5.1114e+01 2.5164e-01

信頼限界がOLSによって生成されたものの約60%に削減されている一方で、ポイント推定値に小さな変更があることがわかります。

私が言いたいのは、TPLファイルのコードの1行を変更すると、変更されたすべての計算が自動的に行われるということです。


2
I

1
E(EV)E(EV)E(HV)

1
@jwimberley、あなたは基本的にデイブフーリエが(条件付き)平均の信頼区間の式を与えたと言っていますが、タイムは新しい観測の予測区間に興味があるかもしれません。OLSの後者を計算するのは簡単です。この場合、それをどのように計算しますか?
DeltaIV 2016年

1
E=f(V)+ϵEE^ϵVϵϵ
jwimberley 2016年

1
@jwimberleyそれらが利用可能であるという理由だけで、観測されたV値に対応する予測値の信頼限界のみを示しました。従属変数の信頼限界を取得する方法を示すために私の回答を編集しました。
dave fournier

0

交差検証は、曲線の信頼性を推定する簡単な方法です。https//en.wikipedia.org/wiki/Cross-validation_(statistics)

ΔE0,ΔV0,ΔB0ΔB

1点検証エラーを計算するには、ポイントの1つをフィッティングから除外し、フィッティングされた曲線を使用して、残されたポイントの値を予測します。すべてのポイントについてこれを繰り返し、各ポイントが1回残されるようにします。次に、最終的な曲線の検証エラー(すべてのポイントで近似された曲線)を予測エラーの平均として計算します。

これは、モデルが新しいデータポイントに対してどれだけ敏感であるかを示すだけです。たとえば、エネルギーモデルがどれほど不正確であるかはわかりません。ただし、これは単なるより現実的なエラー推定値であり、単なるフィッティングエラーです。

また、必要に応じて、予測誤差をボリュームの関数としてプロットできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.