Doğrusal olmayan bir model için otomatik olarak iyi başlangıç değerleri bulmak bir sanattır. (Sadece verileri çizip görsel olarak iyi tahminler yapabileceğiniz tek seferlik veri kümeleri için nispeten kolaydır.) Bir yaklaşım, modeli doğrusallaştırmak ve en küçük kareler tahminlerini kullanmaktır.
Bu durumda, model şu şekildedir:
E (Y) = bir tecrübe( b x ) + c
bilinmeyen parametreler için . Üstel varlığı bizi logaritmaları kullanmaya teşvik eder - ancak c'nin eklenmesi bunu yapmayı zorlaştırır. Bildirim olsa da, eğer bir pozitif sonra c az en küçük beklenen değerden olacak Y nedenle --ve en küçük biraz daha az olabilir gözlenen değeri Y . (Eğer bir negatif olabilir ayrıca bir değerini düşünmek zorunda kalacak c en büyük gözlenen değerden daha küçük büyüktür Y .)a , b , ccbircYYbircY
Bize, o zaman, yapsın başlangıç tahmini olarak kullanarak c 0 gözlemlerin yarısı asgari gibi bir şey y ı . Model şimdi bu dikenli ek terim olmadan yeniden yazılabilircc0yben
E (Y) - c0≈ bir exp( b x ) .
Şu günlüğü alabiliriz:
günlük( E ( Y) - c0) ≈ günlük( a ) + b x .
Bu, modele doğrusal bir yaklaşımdır. Hem hem de b , en küçük karelerle tahmin edilebilir.günlük( a )b
Düzeltilmiş kod:
c.0 <- min(q24$cost.per.car) * 0.5
model.0 <- lm(log(cost.per.car - c.0) ~ reductions, data=q24)
start <- list(a=exp(coef(model.0)[1]), b=coef(model.0)[2], c=c.0)
model <- nls(cost.per.car ~ a * exp(b * reductions) + c, data = q24, start = start)
Çıkışı (örnek veriler için)
Nonlinear regression model
model: cost.per.car ~ a * exp(b * reductions) + c
data: q24
a b c
0.003289 0.126805 48.487386
residual sum-of-squares: 2243
Number of iterations to convergence: 38
Achieved convergence tolerance: 1.374e-06
Yakınsama iyi görünüyor. Hadi çizelim:
plot(q24)
p <- coef(model)
curve(p["a"] * exp(p["b"] * x) + p["c"], lwd=2, col="Red", add=TRUE)
İyi çalıştı!
Bunu otomatikleştirirken, artıkların aşırı uçlarını ( ) verilerindeki yayılımla karşılaştırması gibi bazı hızlı analizler yapabilirsiniz . Ayrıca olasılık başa benzer bir kod gerekebilir a < 0 ; Bunu bir egzersiz olarak bırakıyorum.ya < 0
Başlangıç değerlerini tahmin etmek için başka bir yöntem de, ne anlama geldiğini anlamak dayanır tecrübe, fiziksel teorisine dayandığı edilebileceği vb bir başlangıç değerleri bu yolla tespit edilebilir cevabım açıklanan bir (orta derecede zor) doğrusal olmayan uyum örneği genişletilmiş en /stats//a/15769 .
Dağılım grafiğinin görsel analizi (başlangıç parametre tahminlerini belirlemek için) /stats//a/32832 adresinde açıklanmıştır .
Bazı durumlarda, çözeltilerin yavaşça değişmesini bekleyebileceğiniz bir dizi doğrusal olmayan uyum yapılır. Bu durumda , önceki çözümleri bir sonraki çözümler için başlangıç tahminleri olarak kullanmak genellikle uygun (ve hızlı) olur . Https://stats.stackexchange.com/a/63169 adresinde bu tekniği kullanarak (yorum yapmadan) hatırlıyorum .