Keandalan kurva yang dipasang?

11

Saya ingin memperkirakan ketidakpastian atau keandalan kurva yang dipasang. Saya sengaja tidak menyebutkan jumlah matematis yang tepat yang saya cari, karena saya tidak tahu apa itu.

Di sini (energi) adalah variabel dependen (respons) dan (volume) adalah variabel independen. Saya ingin mencari kurva Energy-Volume, , dari beberapa bahan. Jadi saya membuat beberapa perhitungan dengan program komputer kimia kuantum untuk mendapatkan energi untuk beberapa volume sampel (lingkaran hijau dalam plot).V E ( V )EVE(V)

Kemudian saya melengkapi sampel data ini dengan fungsi Birch – Murnaghan : yang tergantung pada empat parameter: . Saya juga berasumsi bahwa ini adalah fungsi pemasangan yang benar, jadi semua kesalahan hanya berasal dari kebisingan sampel. Dalam apa yang berikut, fungsi dipasang akan ditulis sebagai fungsi .E 0 , V 0 , B 0 , B ' 0 ( E ) V

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

Di sini Anda dapat melihat hasilnya (pas dengan algoritma kuadrat terkecil). Variabel y-axis adalah dan variabel x-sumbu . Garis biru cocok dan lingkaran hijau adalah titik sampel.VEV

Birch – Murnaghan fit (biru) dari sampel (hijau)

Sekarang saya membutuhkan ukuran keandalan (paling tidak tergantung pada volume) dari kurva yang pas ini, , karena saya perlu menghitung kuantitas lebih lanjut seperti tekanan transisi atau entalpi.E^(V)

Intutisi saya memberi tahu saya bahwa kurva yang pas paling dapat diandalkan di tengah, jadi saya kira ketidakpastian (katakanlah rentang ketidakpastian) akan meningkat mendekati akhir data sampel, seperti dalam sketsa ini: masukkan deskripsi gambar di sini

Namun, ukuran seperti apa yang saya cari dan bagaimana saya bisa menghitungnya?

Lebih tepatnya, sebenarnya hanya ada satu sumber kesalahan di sini: Sampel yang dihitung berisik karena batas komputasi. Jadi jika saya akan menghitung satu set sampel data yang padat mereka akan membentuk kurva bergelombang.

Gagasan saya untuk menemukan perkiraan ketidakpastian yang diinginkan adalah menghitung 'kesalahan' berikut berdasarkan parameter saat Anda mempelajarinya di sekolah ( penyebaran ketidakpastian ):

ΔE0,ΔV0,ΔB0ΔB0

ΔE(V)=(E(V)E0ΔE0)2+(E(V)V0ΔV0)2+(E(V)B0ΔB0)2+(E(V)B0ΔB0)2
The dan , diberikan oleh software pas.ΔE0,ΔV0,ΔB0ΔB0

Apakah itu pendekatan yang dapat diterima atau saya salah melakukannya?

PS: Saya tahu bahwa saya juga bisa meringkas kotak-kotak residu antara sampel data saya dan kurva untuk mendapatkan semacam '' kesalahan standar '' tetapi ini tidak tergantung volume.

Timi
sumber
tidak ada parameter Anda yang eksponen, yang bagus. Perangkat lunak NLS apa yang Anda gunakan? Sebagian besar akan mengembalikan perkiraan untuk ketidakpastian parametrik (yang bisa sepenuhnya tidak realistis jika parameter Anda eksponen, tetapi ini bukan kasus Anda).
DeltaIV
Tidak ada A di sisi kanan persamaan Anda tetapi muncul di plot Anda. Ketika Anda mengatakan "empat parameter", maksud Anda parameter dalam arti statistik (dalam hal ini, di mana IVs Anda) atau apakah Anda maksud variabel (dalam hal mana parameter Anda)? Tolong jelaskan peran simbol - apa yang diukur dan apa yang tidak diketahui?
Glen_b -Reinstate Monica
1
Saya pikir V adalah A ^ 3. itulah yang saya gunakan dan plot saya terlihat identik dengannya.
dave fournier
@ Glen_b Saya hanya mengasumsikan sumbu Y adalah E dalam fungsi Birch-Murnaghan sedangkan sumbu x adalah V. Empat parameter adalah empat parameter dalam fungsi Birch-Murnaghan. Jika Anda menganggap bahwa Anda mendapatkan sesuatu yang tampak seperti apa yang dimilikinya.
dave fournier
Ah, tunggu, akhirnya aku mengerti. bukan operator ekspektasi (seperti yang saya harapkan untuk melihat pada LHS persamaan tanpa istilah kesalahan pada RHS), adalah variabel respon yang ditulis sebagai fungsi dalam bentuk . PETUNJUK BESAR untuk semua orang: Jangan perlihatkan persamaan dengan di sebelah kiri persamaan regresi kepada ahli statistik tanpa dengan hati-hati mendefinisikan apa yang Anda maksudkan, karena mereka mungkin akan menganggapnya sebagai harapan. E y ( x ) E ( )E()Ey(x)E()
Glen_b -Reinstate Monica

Jawaban:

8

Ini adalah masalah kuadrat biasa!

Mendefinisikan

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

model dapat ditulis ulang

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

β=(βi)

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

B0,B0wB0,B0,wE0β

(E0,B0,B0,V0)E

β^R

Angka

#
# 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)

β

Gambar 2

whuber
sumber
1
Meskipun benar bahwa algoritma untuk pemasangan model linier jauh lebih stabil secara numerik daripada yang untuk model nonlinear, tidak benar bahwa ada perbedaan dalam akurasi diagnostik selama algoritma pemasangan nonlinear bertemu. Saya memeriksa dan kami memiliki jumlah sisa kotak yang sama untuk setidaknya 4 sig ara. Juga parameterisasi linier yang Anda pilih sangat membingungkan sehingga tidak ada parameter yang signifikan menurut uji t. Semua milikku adalah. Bukan masalah besar, tapi lucu dan mungkin membingungkan pemain muda.
dave fournier
Juga, saya kira Anda tidak menjawab pertanyaan OP karena dia menyatakan dia menginginkan sesuatu seperti batas kepercayaan untuk fungsi entalpi-volume
dave fournier
1
β(E0,)(E^0)
Model dan tambang Anda identik independen dari parameterisasi. (Saya berbicara tentang model OLS.) Memang benar bahwa jika parameter tertentu masuk ke dalam model secara linier maka standar deviasi menghasilkan batas kepercayaan yang lebih baik untuk parameter itu. standar deviasi yang diperoleh melalui metode delta akan sama apakah digunakan untuk parametrize model atau dipecahkan sebagai variabel dependen. Dalam hal ini variabel dependen yang menarik adalah fungsi entalpi-volume-dan metode delta std dev akan sama apakah seseorang menggunakan parametrization atau punyaku.
dave fournier
1
β^
3

Ig

gtIg
Ini memberi Anda estimasi varians untuk variabel dependen itu. Ambil akar kuadrat untuk mendapatkan perkiraan standar deviasi. maka batas kepercayaan adalah nilai prediksi + - dua standar deviasi. Ini adalah barang standar. untuk kasus khusus dari regresi nonlinear, Anda dapat mengoreksi derajat kebebasan. Anda memiliki 10 pengamatan dan 4 parameter sehingga Anda dapat meningkatkan estimasi varians dalam model dengan mengalikannya dengan 10/6. Beberapa paket perangkat lunak akan melakukan ini untuk Anda. Saya menulis model Anda di AD Model di AD Model Builder dan menyesuaikannya dan menghitung varian (yang belum dimodifikasi). Mereka akan sedikit berbeda dari milik Anda karena saya harus menebak sedikit pada nilainya.
                    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

Ini dapat dilakukan untuk variabel dependen apa pun dalam Pembuat Model AD. Satu menyatakan variabel di tempat yang sesuai dalam kode seperti ini

   sdreport_number dep

dan menulis kode, evaluasi variabel dependen seperti ini

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

Catatan ini dievaluasi untuk nilai variabel independen 2 kali yang terbesar yang diamati dalam pemasangan model. Pas dengan model dan satu memperoleh deviasi standar untuk variabel dependen ini

19   dep          7.2535e+00 1.0980e-01

Saya telah memodifikasi program untuk memasukkan kode untuk menghitung batas kepercayaan untuk fungsi entalpi-volume File kode (TPL) terlihat seperti

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)));

Kemudian saya memasang kembali model untuk mendapatkan devs standar untuk perkiraan 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

Ini dihitung untuk nilai V yang Anda amati, tetapi dapat dengan mudah dihitung untuk nilai V. apa pun

Telah ditunjukkan bahwa ini sebenarnya adalah model linier yang ada kode R sederhana untuk melakukan estimasi parameter melalui OLS. Ini sangat menarik terutama bagi pengguna yang naif. Namun sejak karya Huber lebih dari tiga puluh tahun yang lalu kita tahu atau harus tahu bahwa seseorang mungkin hampir selalu menggantikan OLS dengan alternatif yang cukup kuat. Alasan mengapa hal ini tidak dilakukan secara rutin, saya percaya bahwa metode yang kuat pada dasarnya tidak linier. Dari sudut pandang ini, metode OLS menarik sederhana di R lebih merupakan jebakan, bukan fitur. Sebuah kemajuan dari pendekatan AD Model Builder dibangun untuk mendukung pemodelan nonlinear. Untuk mengubah kode kuadrat terkecil menjadi campuran normal yang kuat, hanya satu baris kode yang perlu diubah. Garis

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

diubah menjadi

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))));

Jumlah penyebaran berlebih dalam model diukur dengan parameter a. Jika a sama dengan 1.0, variansnya sama dengan untuk model normal. Jika ada inflasi varians oleh outlier kami berharap bahwa a akan lebih kecil dari 1,0. Untuk data ini, estimasi a adalah sekitar 0,23 sehingga variansnya sekitar 1/4 varians untuk model normal. Interpretasinya adalah bahwa outlier telah meningkatkan estimasi varians dengan faktor sekitar 4. Efeknya adalah meningkatkan ukuran batas kepercayaan untuk parameter untuk model OLS. Ini merupakan hilangnya efisiensi. Untuk model campuran normal, estimasi standar deviasi untuk fungsi volume entalpi adalah

 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

Orang melihat bahwa ada perubahan kecil dalam estimasi titik, sementara batas kepercayaan telah dikurangi menjadi sekitar 60% dari yang diproduksi oleh OLS.

Poin utama yang ingin saya sampaikan adalah bahwa semua perhitungan yang dimodifikasi terjadi secara otomatis begitu seseorang mengubah satu baris kode dalam file TPL.

dave fournier
sumber
2
I
1
E(EV)E(EV)E(HV)
1
@ jwimberley, Anda pada dasarnya mengatakan bahwa dave fourier memberikan rumus untuk interval kepercayaan dari rata-rata (bersyarat), sementara thyme mungkin tertarik pada interval prediksi untuk pengamatan baru. Mudah untuk menghitung yang terakhir untuk OLS. Bagaimana Anda menghitungnya dalam kasus ini?
DeltaIV
1
E=f(V)+ϵEE^ϵVϵϵ
jwimberley
1
@ jwimberley Saya hanya menunjukkan batas kepercayaan untuk nilai prediksi yang sesuai dengan nilai-nilai V yang diamati hanya karena mereka tersedia. Saya telah mengedit jawaban saya untuk menunjukkan cara mendapatkan batas kepercayaan untuk variabel dependen apa pun.
dave fournier
0

Validasi silang adalah cara sederhana untuk memperkirakan keandalan kurva Anda: https://en.wikipedia.org/wiki/Cross-validation_(statistics)

ΔE0,ΔV0,ΔB0ΔB

Anda dapat menghitung kesalahan validasi 1 kali lipat dengan membiarkan salah satu dari poin Anda tidak pas dan menggunakan kurva yang pas untuk memprediksi nilai dari poin yang ditinggalkan. Ulangi ini untuk semua poin sehingga masing-masing dibiarkan begitu saja. Kemudian, hitung kesalahan validasi kurva akhir Anda (kurva yang dilengkapi dengan semua titik) sebagai rata-rata kesalahan prediksi.

Ini hanya akan memberi tahu Anda seberapa sensitif model Anda untuk setiap titik data baru. Misalnya, tidak akan memberi tahu Anda seberapa akurat model energi Anda. Namun, ini akan menjadi estimasi kesalahan yang jauh lebih realistis hanya kesalahan pemasangan.

Selain itu, Anda dapat merencanakan kesalahan prediksi sebagai fungsi volume jika diinginkan.

Jman
sumber