Ig
−gtIg
Bu size bu bağımlı değişken için tahmini varyansı verir. Tahmini standart sapmayı elde etmek için karekök alın. güven sınırları öngörülen değer + - iki standart sapmadır. Bu standart olabilirlik. doğrusal olmayan regresyonun özel durumu için, serbestlik derecelerini düzeltebilirsiniz. 10 gözlem ve 4 parametreniz var, böylece 10/6 ile çarparak modeldeki varyans tahminini artırabilirsiniz. Birkaç yazılım paketi bunu sizin için yapacak. Modelinizi AD Model Builder'da AD Modelinde yazdım ve sığdırdım ve (değiştirilmemiş) varyansları hesapladım. Sizinkinden biraz farklı olacaklar çünkü değerlerde biraz tahmin etmek zorunda kaldım.
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
Bu, AD Model Builder'daki herhangi bir bağımlı değişken için yapılabilir. Koddaki uygun noktada bir değişken bildirilir
sdreport_number dep
ve bağımlı değişkeni bu şekilde değerlendirmek için kod yazar
dep=sqrt(V0-cube(Bp0)/(1+2*max(V)));
Bunun, model bağlantısında gözlenen en büyük değişkenin 2 katı bağımsız değişkenin bir değeri için değerlendirildiğine dikkat edin. Modele uyun ve biri bu bağımlı değişken için standart sapmayı elde eder
19 dep 7.2535e+00 1.0980e-01
Entalpi-hacim işlevi için güven sınırlarını hesaplamak için kod dahil etmek için programı değiştirdim Kod (TPL) dosyası gibi görünüyor
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)));
Daha sonra H tahminleri için standart geliştiricileri almak için modeli yeniden taktım.
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
Bunlar gözlemlenen V değerleriniz için hesaplanır, ancak V'nin herhangi bir değeri için kolayca hesaplanabilir.
Bunun aslında parametre tahminini OLS yoluyla gerçekleştirmek için basit R kodunun bulunduğu doğrusal bir model olduğu belirtildi. Bu özellikle saf kullanıcılar için çok çekici. Bununla birlikte, Huber'in otuz yıl önce çalışmasından bu yana, muhtemelen neredeyse her zaman OLS'yi orta derecede sağlam bir alternatifle değiştirmesi gerektiğini biliyoruz veya bilmeliyiz. Bunun rutin olarak yapılmamasının nedeni, sağlam yöntemlerin doğası gereği doğrusal olmadığına inanıyorum. Bu bakış açısından, R'deki basit çekici OLS yöntemleri bir özellikten ziyade bir tuzaktır. AD Model Builder yaklaşımının bir avantajı, doğrusal olmayan modelleme için yerleşik desteğidir. En küçük kareler kodunu sağlam bir normal karışıma değiştirmek için, kodun yalnızca bir satırının değiştirilmesi gerekir. Çizgi
f=0.5*nobs*log(v)+sum(r2)/(2.0*v);
olarak değiştirildi
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))));
Modellerdeki aşırı dağılım miktarı a parametresi ile ölçülür. 1.0'a eşitse, varyans normal modelle aynıdır. Aykırı değerlerin varyans enflasyonu varsa, a'nın 1.0'dan küçük olmasını bekliyoruz. Bu veriler için a'nın tahmini yaklaşık 0.23'tür, böylece varyans normal model için varyansın 1 / 4'ü kadardır. Yorum, aykırı değerlerin tahmin tahminini yaklaşık 4 kat artırdığıdır. Bunun etkisi, OLS modeli için parametreler için güven sınırlarının boyutunu arttırmaktır. Bu verimlilik kaybını temsil eder. Normal karışım modeli için entalpi-hacim fonksiyonu için tahmini standart sapmalar:
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
Güven tahminleri OLS tarafından üretilenlerin yaklaşık% 60'ına düşürülmüşken, nokta tahminlerinde küçük değişiklikler olduğu görülmektedir.
Yapmak istediğim ana nokta, TPL dosyasındaki bir kod satırını değiştirdiğinde, değiştirilen tüm hesaplamaların otomatik olarak gerçekleşmesidir.