Làm thế nào để giảm thiểu tổng số bình phương còn lại của một số mũ phù hợp?


14

Tôi có các dữ liệu sau đây và muốn phù hợp với mô hình tăng trưởng theo cấp số nhân tiêu cực với nó:

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)

Mã đang hoạt động và một dòng phù hợp được vẽ. Tuy nhiên, sự phù hợp về mặt trực quan không lý tưởng và tổng số bình phương còn lại dường như khá lớn (147073).

Làm thế nào chúng ta có thể cải thiện sự phù hợp của chúng tôi? Dữ liệu có cho phép phù hợp hơn không?

Chúng tôi không thể tìm thấy một giải pháp cho thách thức này trên mạng. Bất kỳ trợ giúp trực tiếp hoặc liên kết đến các trang web / bài viết khác được đánh giá rất cao.


1
Trong trường hợp này, nếu bạn xem xét một hồi quy mô hình , nơi ε i ~ N ( 0 , σ ) , sau đó bạn có được ước lượng tương tự. Bằng cách vẽ các vùng tin cậy, người ta có thể quan sát cách các giá trị này được chứa trong các vùng giới hạn. Bạn không thể mong đợi một sự phù hợp hoàn hảo trừ khi bạn nội suy các điểm hoặc sử dụng mô hình phi tuyến linh hoạt hơn. Emissionsi=f(Daysi,a,b)+ϵiϵiN(0,σ)

Tôi đã thay đổi tiêu đề vì "mô hình hàm mũ âm" có nghĩa là một cái gì đó khác với mô tả trong câu hỏi.
whuber

Cảm ơn vì đã làm cho câu hỏi rõ ràng hơn (@whuber) và cảm ơn câu trả lời của bạn (@Procrastinator). Làm thế nào tôi có thể tính toán và vẽ các vùng tin cậy. Và, mô hình phi tuyến linh hoạt hơn sẽ là gì?
Strohmi

4
Bạn cần một tham số bổ sung. Xem những gì xảy ra với 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 - có lẽ bạn nên đăng nó như một câu trả lời?
jbowman

Câu trả lời:


16

Một luật hàm mũ (phủ định) có dạng . Khi bạn cho phép thay đổi các đơn vị trong xy giá trị, tuy nhiên, nói với y = α y ' + βx = γ x ' + δ , sau đó pháp luật sẽ được thể hiện nhưy=exp(x)xyy=αy+βx=γx+δ

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

đại số nào tương đương với

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

sử dụng ba thông số , u = 1 / ( β exp ( δ ) ) , và b = γ . Chúng ta có thể nhận ra một tham số tỷ lệ cho y , b là tham số tỷ lệ cho xu là xuất phát từ tham số vị trí cho x .a=β/αu=1/(βexp(δ))b=γaybxux

Theo nguyên tắc thông thường, các tham số này có thể được xác định trong nháy mắt từ cốt truyện :

  • Tham số là giá trị của tiệm cận ngang, nhỏ hơn 2000 một chút .a2000

  • Tham số là số lượng tương đối đường cong tăng từ điểm gốc đến tiệm cận ngang của nó. Ở đây, sự gia tăng do đó ít hơn một chút so với 2000 - 937 ; tương đối, đó là khoảng 0,55 của tiệm cận.u20009370.55

  • , khi x bằng ba lần giá trị của 1 / b , đường cong đã tăng lên khoảng 1 - 0,05 hoặc 95 % tổng số của nó. 95 % sự gia tăng từ 937 đến gần 2000 nơi chúng ta vào khoảng năm 1950 ; quét trên lô cho thấy điều này mất 20 đến 25 ngày. Hãy gọi nó là 24 vì đơn giản, đâu b 3 / 24exp(3)0.05x1/b10.0595%95%93720001950202524 . (Phương pháp 95 % này đối với nhãn cầu theo thang số mũ là tiêu chuẩn trong một số lĩnh vực sử dụng lô theo cấp số nhân rất nhiều.)b3/24=0.12595%

Hãy xem nó trông như thế nào:

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

Phù hợp với nhãn cầu

Không tồi cho một khởi đầu! (Ngay cả khi gõ 0.56vào vị trí 0.55, dù sao đó cũng là một xấp xỉ thô.) Chúng ta có thể đánh bóng nó bằng 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)

Phù hợp với NLS

Đầu ra nlschứa thông tin mở rộng về độ không đảm bảo của tham số. Ví dụ , một đơn giản summarycung cấp các lỗi tiêu chuẩn của ước tính:

> 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 ***

Chúng ta có thể đọc và làm việc với toàn bộ ma trận hiệp phương sai của các ước tính, rất hữu ích cho việc ước tính khoảng tin cậy đồng thời (ít nhất là cho các bộ dữ liệu lớn):

> 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 hỗ trợ sơ đồ hồ sơ cho các tham số, cung cấp thông tin chi tiết hơn về tính không chắc chắn của chúng:

> plot(profile(fit))

a

Sơ đồ hồ sơ

219451995


res <- residuals(fit); res %*% resu2724147073

Tất cả tốt và tốt whuber. Nhưng có lẽ OP có một số lý do để chọn mô hình theo cấp số nhân (hoặc có thể đó chỉ là vì nó được biết đến nhiều). Tôi nghĩ đầu tiên các phần dư nên được xem xét cho mô hình hàm mũ. Vẽ chúng chống lại các đồng biến tiềm năng để xem liệu có cấu trúc ở đó không và chỉ có tiếng ồn ngẫu nhiên lớn. Trước khi nhảy vào các mô hình phức tạp hơn, hãy thử xem liệu một mô hình fancier có thể giúp được không.
Michael R. Chernick

3
x

2
Tôi không chỉ trích câu trả lời của bạn! Tôi không thấy bất kỳ lô còn lại. Tất cả những gì tôi đã đề xuất là các lô dư so với các đồng biến tiềm năng nên là bước đầu tiên để tìm ra một mô hình tốt hơn. Nếu tôi nghĩ rằng tôi đã có một câu trả lời để đưa lên đó, tôi sẽ đưa ra một câu trả lời thay vì nêu quan điểm của tôi như một hằng số. Tôi nghĩ rằng bạn đã đưa ra một phản hồi tuyệt vời và tôi là một trong những người đã cho bạn +1.
Michael R. Chernick
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.