Uygun bir eğrinin güvenilirliği?


11

Uygun bir eğrinin belirsizliğini veya güvenilirliğini tahmin etmek istiyorum. Ne olduğunu bilmediğim için kasıtlı olarak aradığım kesin bir matematik miktarını adlandırmıyorum.

Burada (enerji) bağımlı değişkendir (yanıt) ve V (hacim) bağımsız değişkendir. Enerji-Hacim eğrisini bulmak istiyorum, E ( V )EVE(V)Bazı malzemelerin . Bu yüzden bazı numune hacimleri için enerji elde etmek için bir kuantum kimya bilgisayar programı ile bazı hesaplamalar yaptım (arsadaki yeşil daireler).

Sonra bu veri örneklerini Huş-Murnaghan işleviyle yerleştirdim : : Dört parametre bağlı olan E 0 , V 0 , B 0 , B ' 0 . Ayrıca bunun doğru montaj fonksiyonu olduğunu varsayıyorum, bu yüzden tüm hatalar sadece örneklerin gürültüsünden geliyor. Daha sonra gelende, monte fonksiyonu ( E ) bir fonksiyonu olarak yazılır V .

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

Burada sonucu görebilirsiniz (en küçük kareler algoritması ile uydurma). Y ekseni değişkeni ve x ekseni değişkeni V'dir . Mavi çizgi uyum ve yeşil daireler örnek noktalarıdır.EV

Huş ağacı-Murnaghan örneği (mavi) (yeşil)

Şimdi bu Oturtulan eğrinin (hacim bağlı olarak en iyi) güvenilirlik bir ölçüde E^(V) bir geçiş basınçları veya entalpileri gibi başka miktarlarını hesaplamak için gerekir, çünkü,.

Benim niyetim bana uygun eğrinin ortada en güvenilir olduğunu söyler, bu yüzden belirsizlik (belirsizlik aralığı diyelim) örnek verilerin sonuna yakın, bu çizimde olduğu gibi artması gerektiğini tahmin ediyorum: resim açıklamasını buraya girin

Ancak, aradığım bu tür bir önlem nedir ve nasıl hesaplayabilirim?

Kesin olmak gerekirse, burada sadece tek bir hata kaynağı vardır: Hesaplanan örnekler hesaplama sınırları nedeniyle gürültülüdür. Bu yüzden yoğun bir veri örneği kümesi hesaplarsam, engebeli bir eğri oluştururlar.

İstediğim belirsizlik tahminini bulma fikrim, okulda öğrendiğiniz parametrelere dayalı olarak aşağıdaki '' hatayı '' hesaplamaktır (belirsizliğin yayılması ):

Δe0,ΔV0,ΔB0veΔ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 , uydurma yazılımı tarafından verilir.

Bu kabul edilebilir bir yaklaşım mı yoksa yanlış mı yapıyorum?

Not: Bir çeşit `` standart hata '' elde etmek için veri örneklerimle eğri arasındaki artıkların karelerini de özetleyebileceğimi biliyorum, ancak bu hacme bağlı değil.


parametrelerinizin hiçbiri iyi bir üs değildir. Hangi NLS yazılımını kullandınız? Çoğu, parametrik belirsizlik için bir tahmin döndürecektir (parametreleriniz üsse tamamen gerçekçi olmayabilir, ancak bu sizin durumunuz değildir).
DeltaIV

Denkleminizin sağ tarafında A yoktur, ancak grafiğinizde görünür. "Dört parametre" derken, istatistiksel anlamda parametreler mi (bu durumda IV'leriniz nerede) veya değişkenler mi (hangi durumda parametreleriniz nerede) anlamına mı geliyorsunuz? Lütfen sembollerin rollerini açıklığa kavuşturun - ölçülen nedir ve bilinmeyen nedir?
Glen_b

1
Bence V A ^ 3. kullandığım şey bu ve komplo onunla aynı görünüyordu.
dave fournier

@Glen_b X ekseni V iken Huş-Murnaghan işlevinde Y ekseninin E olduğunu varsaydım. Dört parametre Birch-Murnaghan işlevindeki dört parametredir. Eğer sahip olduğu gibi görünen bir şey aldığını varsayarsan.
dave fournier

Ah, bekle, sonunda anladım. bir beklenti operatörü değildir (RHS'de hata terimi olmayan bir denklemin LHS'sinde görmeyi beklediğim gibi), E , y ( x ) biçiminde bir işlev olarak yazılan yanıt değişkenidir . Herkese BÜYÜK İPUCU: Ne demek istediğinizi dikkatlice tanımlamaksızın bir istatistikçiye bir regresyon denkleminin solunda E ( ) ile bir denklem göstermeyin , çünkü bunun muhtemelen bir beklenti olduğunu varsayacaklardır. E()Ey(x)E()
Glen_b-Monica

Yanıtlar:


8

Bu sıradan bir en küçük kareler sorunudur!

tanımlanması

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

model yeniden yazılabilir

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

katsayıları burada cebirsel ile orijinal katsayıları ile ilgilidirβ=(βi)

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

B0,B0wB0,B0,wE0β

(E0,B0,B0,V0)E

β^R

şekil

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

β

şekil 2


1
Doğrusal modellerin takılması için algoritmaların, doğrusal olmayan modellerden çok daha sayısal olarak kararlı olduğu doğru olsa da, doğrusal olmayan montaj algoritması yakınsadığı sürece, teşhisin doğruluğunda bir fark olduğu doğru değildir. Kontrol ettim ve en az 4 sig incir için aynı kalan karelere sahibiz. Ayrıca, seçtiğiniz doğrusal parametreleştirme çok karıştırılmıştır, böylece parametrelerin hiçbiri t testine göre anlamlı değildir. Hepsi benim. Gerçekten büyük bir anlaşma değil, eğlenceli ve genç oyuncuyu karıştırabilir.
dave fournier

Ayrıca, sanırım OP'nin sorusuna cevap vermediniz çünkü entalpi-hacim fonksiyonu için güven sınırları gibi bir şey istediğini söyledi
dave fournier

1
β(E0,)(E^0)

Modeliniz ve benimki parametreleştirmeden bağımsızdır. (OLS modelinden bahsediyorum.) Belirli bir parametre modele doğrusal olarak girerse, standart sapmaların bu parametre için daha iyi güven sınırları ürettiği doğrudur. delta yöntemi ile elde edilen standart sapmalar, modeli parametreleştirmek için kullanılmasına veya bağımlı bir değişken olarak çözülmesine bakılmaksızın aynı olacaktır. Bu durumda, ilgili bağımlı değişken entalpi-hacim-işlevidir ve delta yöntemi std dev, parametrelerinizi veya benimkini kullansa da aynı olacaktır.
dave fournier

1
β^

3

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.


2
I

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

1
@jwimberley, temelde dave fourier'in (koşullu) ortalamanın güven aralığı için formül verdiğini söylüyorsunuz, kekik ise yeni bir gözlem için tahmin aralığıyla ilgilenebilir. İkincisi OLS için hesaplamak kolaydır. Bu durumda nasıl hesaplarsınız?
DeltaIV

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

1
@jwimberley Sadece gözlemlenen V değerlerine karşılık gelen tahmin edilen değerler için güven sınırlarını sadece mevcut oldukları için gösterdim. Herhangi bir bağımlı değişken için güven sınırlarının nasıl alınacağını göstermek için cevabımı düzenledim.
dave fournier

0

Çapraz doğrulama, eğrinizin güvenilirliğini tahmin etmenin basit bir yoludur : https://en.wikipedia.org/wiki/Cross-validation_(statistics)

ΔE0,ΔV0,ΔB0ΔB

Noktalarınızdan birini takmadan uzak bırakarak ve kalan eğrinin değerini tahmin etmek için takılı eğriyi kullanarak 1 kat doğrulama hatasını hesaplayabilirsiniz. Bunu tüm noktalar için tekrarlayın, böylece her biri bir kez bırakılır. Ardından, son eğrinizin doğrulama hatasını (tüm noktalarla donatılmış eğri) bir tahmin hataları ortalaması olarak hesaplayın.

Bu size yalnızca modelinizin herhangi bir yeni veri noktası için ne kadar hassas olduğunu söyleyecektir. Örneğin, enerji modelinizin ne kadar yanlış olduğunu size söylemez. Ancak, bu çok daha gerçekçi bir hata tahmini sadece uygun hata olacaktır.

Ayrıca, tahmin hatalarını bir hacim fonksiyonu olarak çizebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.