Tôi đang cố gắng khớp một đường + hàm mũ theo một số dữ liệu. Để bắt đầu, tôi đã cố gắng làm điều này trên một số dữ liệu nhân tạo. Hàm này là: Đây thực sự là một đường cong hàm mũ với một phần tuyến tính, cũng như một tham số dịch chuyển ngang bổ sung ( m ). Tuy nhiên, khi tôi sử dụng chức năng của R, tôi gặp lỗi " ma trận độ dốc số ít ở mức ước tính tham số ban đầu ", ngay cả khi tôi sử dụng cùng một tham số mà tôi đã sử dụng để tạo dữ liệu ở vị trí đầu tiên. Tôi đã thử các thuật toán khác nhau, các giá trị bắt đầu khác nhau và đã thử sử dụng
nls()
optim
để giảm thiểu tổng số bình phương còn lại, tất cả đều vô ích. Tôi đã đọc rằng một lý do có thể cho việc này có thể là một tham số quá mức của công thức, nhưng tôi không nghĩ đó là (phải không?) Có ai có gợi ý cho vấn đề này không? Hay đây chỉ là một mô hình vụng về?
Một ví dụ ngắn:
#parameters used to generate the data
reala=-3
realb=5
realc=0.5
realr=0.7
realm=1
x=1:11 #x values - I have 11 timepoint data
#linear+exponential function
y=reala + realb*realr^(x-realm) + realc*x
#add a bit of noise to avoid zero-residual data
jitter_y = jitter(y,amount=0.2)
testdat=data.frame(x,jitter_y)
#try the regression with similar starting values to the the real parameters
linexp=nls(jitter_y~a+b*r^(x-m)+c*x, data=testdat, start=list(a=-3, b=5, c=0.5, r=0.7, m=1), trace=T)
Cảm ơn!