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.