Tôi đang cố gắng thực hiện phân tích "điểm thay đổi" hoặc hồi quy đa pha bằng cách sử dụng nls()
trong R.
Đây là một số dữ liệu giả mạo tôi đã thực hiện . Công thức tôi muốn sử dụng để phù hợp với dữ liệu là:
Điều này được cho là phù hợp với dữ liệu đến một điểm nhất định với một mức chặn và độ dốc nhất định ( và ), sau đó, sau một giá trị x nhất định ( \ delta ), tăng độ dốc thêm \ beta_2 . Đó là những gì toàn bộ điều tối đa là về. Trước điểm \ delta , nó sẽ bằng 0 và \ beta_2 sẽ bị xóa.
Vì vậy, đây là chức năng của tôi để làm điều này:
changePoint <- function(x, b0, slope1, slope2, delta){
b0 + (x*slope1) + (max(0, x-delta) * slope2)
}
Và tôi cố gắng để phù hợp với mô hình theo cách này
nls(y ~ changePoint(x, b0, slope1, slope2, delta),
data = data,
start = c(b0 = 50, slope1 = 0, slope2 = 2, delta = 48))
Tôi đã chọn các tham số bắt đầu đó, vì tôi biết đó là các tham số bắt đầu, vì tôi đã tạo ra dữ liệu.
Tuy nhiên, tôi nhận được lỗi này:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
Có phải tôi vừa làm dữ liệu không may? Tôi đã thử điều chỉnh dữ liệu này trên dữ liệu thực trước tiên và nhận được cùng một lỗi và tôi chỉ nhận ra rằng các tham số ban đầu ban đầu của tôi không đủ tốt.