Üstel bir uyumun kalan karelerinin toplamı nasıl en aza indirilir?


14

Aşağıdaki veriler var ve buna negatif üstel büyüme modeli sığdırmak istiyorum:

Days <- c( 1,5,12,16,22,27,36,43)
Emissions <- c( 936.76, 1458.68, 1787.23, 1840.04, 1928.97, 1963.63, 1965.37, 1985.71)
plot(Days, Emissions)
fit <- nls(Emissions ~ a* (1-exp(-b*Days)), start = list(a = 2000, b = 0.55))
curve((y = 1882 * (1 - exp(-0.5108*x))), from = 0, to =45, add = T, col = "green", lwd = 4)

Kod çalışıyor ve bir bağlantı hattı çiziliyor. Bununla birlikte, uyum görsel olarak ideal değildir ve kalan kareler toplamı oldukça büyük görünmektedir (147073).

Uyumumuzu nasıl geliştirebiliriz? Veriler daha iyi uyum sağlar mı?

İnternetteki bu zorluğa bir çözüm bulamadık. Herhangi bir doğrudan yardım veya diğer web sitelerine / yayınlara bağlantı büyük beğeni topluyor.


1
Bu durumda, bir regresyon modelini , burada , benzer tahmin ediciler. Güven bölgelerini çizerek, bu değerlerin confindence bölgelerinde nasıl bulunduğunu gözlemleyebiliriz. Noktaları enterpolasyonlamadığınız veya daha esnek doğrusal olmayan bir model kullanmadığınız sürece mükemmel bir uyum bekleyemezsiniz. ϵ iN ( 0 , σ )Emissionsi=f(Daysi,a,b)+ϵiϵiN(0,σ)

Başlığı değiştirdim çünkü "negatif üstel model", soruda tarif edilenden farklı bir şey ifade ediyor.
whuber

Soruyu daha net yaptığınız için teşekkür ederiz (@whuber) ve cevabınız için teşekkür ederiz (@Procrastinator). Güven bölgelerini nasıl hesaplayabilir ve çizebilirim. Ve daha esnek doğrusal olmayan bir model ne olurdu?
Strohmi

4
Ek bir parametreye ihtiyacınız var. Ne olduğunu görün fit <- nls(Emissions ~ a* (1- u*exp(-b*Days)), start = list(a = 2000, b = 0.1, u=.5)); beta <- coefficients(fit); curve((y = beta["a"] * (1 - beta["u"] * exp(-beta["b"]*x))), add = T).
whuber

1
@whuber - belki bunu bir cevap olarak göndermelisin?
jbowman

Yanıtlar:


16

Bir (negatif) üstel yasa biçimini alır . Bununla birlikte, ve değerlerindeki birimlerin değiştirilmesine izin verdiğinizde , ve diyelim , yasa şu şekilde ifade edilecektir:x y y = α y + β x = γ x + δy=exp(x)xyy=αy+βx=γx+δ

αy+β=y=exp(x)=exp(γxδ),

cebirsel olarak eşittir

y=1αexp(γxδ)β=a(1uexp(bx))

, ve parametrelerini kullanarak . Biz tanıyabilir ölçek için parametre olarak , için bir ölçektir parametre olarak ve bir türetmek olarak yer için parametre .u = 1 / ( β exp ( δ ) ) b = γ a y b x u xa=β/αu=1/(βexp(δ))b=γaybxux

Genel bir kural olarak, bu parametreler bir bakışta grafikten tanımlanabilir :

  • Parametre biraz daha az, yatay asimptot değeri .2000a2000

  • Parametre olan nispi eğrisi yatay asimptotuna kökenli yükselir miktar. Bu nedenle, artış biraz daha azdır ; Nispeten, bu konuda var asimptot.2000 - 937 0,55u20009370.55

  • Çünkü , ne zaman üç kez değeri eşittir eğrisi ile ilgili yükselmiş olması gerekir veya olan toplam. başlayan yükselişin neredeyse hiç yerlerin bize etrafında ; çizim boyunca tarama yapılması, bunun ila gün sürdüğünü gösterir . Basitlik için diyelim, bu yüzden . ( Üstel bir ölçeği göz küresi için bu yöntemi, üstel grafikleri çok kullanan bazı alanlarda standarttır.)x 1 / b 1 - 0.05 95 % 95 % 937 2000 1950 20 25 24 b 3 / 24 = 0.125 95 %exp(3)0.05x1/b10.0595%95%93720001950202524b3/24=0.12595%

Bunun neye benzediğini görelim:

plot(Days, Emissions)
curve((y = 2000 * (1 - 0.56 * exp(-0.125*x))), add = T)

Göz küresi fit

Başlangıç ​​için fena değil! (Hatta yazarak rağmen 0.56yerine 0.55. Yine de bir ham tahminini oldu) Biz onu parlatmak nls:

fit <- nls(Emissions ~ a * (1- u * exp(-b*Days)), start=list(a=2000, b=1/8, u=0.55))
beta <- coefficients(fit)
plot(Days, Emissions)
curve((y = beta["a"] * (1 - beta["u"] * exp(-beta["b"]*x))), add = T, col="Green", lwd=2)

NLS uygun

Çıktısı, nlsparametre belirsizliği hakkında kapsamlı bilgiler içerir. Örneğin , basit bir summarytahmin standart hatalar sağlar:

> summary(fit)

Parameters:
   Estimate Std. Error t value Pr(>|t|)    
a 1.969e+03  1.317e+01  149.51 2.54e-10 ***
b 1.603e-01  1.022e-02   15.69 1.91e-05 ***
u 6.091e-01  1.613e-02   37.75 2.46e-07 ***

Eşzamanlı güven aralıklarını tahmin etmek için yararlı olan tahminlerin tüm kovaryans matrisini okuyabilir ve onlarla çalışabiliriz (en azından büyük veri kümeleri için):

> vcov(fit)
             a             b             u
a 173.38613624 -8.720531e-02 -2.602935e-02
b  -0.08720531  1.044004e-04  9.442374e-05
u  -0.02602935  9.442374e-05  2.603217e-04

nls belirsizlikleri hakkında daha ayrıntılı bilgi vererek parametreler için profil grafiklerini destekler:

> plot(profile(fit))

İşte farklılaşmayı gösteren üç çıkış oyunlarından biri olan :a

Profil grafiği

Örneğin , bir t değeri kabaca% 95 iki taraflı güven aralığına karşılık gelir; bu arsa, ve yıllarında bitiş noktalarını yerleştirmektedir .1945 1995219451995


Ah, neredeyse unutuyordum: res <- residuals(fit); res %*% resÜçüncü parametre tanıtan söyler için karelerinin toplamını azaltan (karşılaştırıldığında sorunuzu belirtildiği gibi). 2724 147073u2724147073
whuber

Her şey yolunda ve iyi. Ama belki OP'nin üstel modeli seçmek için bir nedeni vardı (ya da belki de sadece iyi bilindiği için). Bence ilk önce kalanlar üstel model için bakılmalıdır. Sadece büyük rastgele gürültü değil, orada bir yapı olup olmadığını görmek için onları potansiyel ortak değişkenlere karşı çizin. Daha sofistike modellere geçmeden önce daha meraklı bir modelin yardımcı olup olmayacağını görmeye çalışın.
Michael R. Chernick

3
Neden orijinal plana bakmıyorsun Michael? En az bir ek parametrenin neden gerekli olduğunu açıkça belli edecektir. Lütfen OP'nin sorduğu soruya yapılan bir yorumda "daha esnek doğrusal olmayan model ne olur?" Bu cevapta sunulan ilk analizin bir sonucu, üç parametreden daha azına sahip bir üstel değerin sığmasının olağandışı olarak kabul edilmesi gerektiğidir: Bu gibi durumlarda (içsel olarak belirlenmiş bir ölçü birimi veya için kendine özgü bir konum ). x
whuber

2
Cevabını eleştirmedim! Artık arsa görmedim. Tüm önerdiğim, artıkların parsellerinin potansiyel ortak değişkenlere karşı daha iyi bir model bulmanın ilk adımı olması gerektiğidir. Oraya koymak için bir cevabım olduğunu düşünürsem, fikrimi sabit olarak yükseltmek yerine bir cevap verirdim. Harika bir yanıt verdiğinizi düşündüm ve size +1 veren kişiler arasındaydım.
Michael R. Chernick
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.