Ben bir "değişim noktası" analizi veya nls()
R kullanarak bir çok fazlı regresyon uygulamaya çalışıyorum.
İşte yaptığım bazı sahte veriler . Verilere uymak için kullanmak istediğim formül:
Bunun yapması gereken, verileri belirli bir noktaya ve eğime ( ve ) sahip belirli bir noktaya , ardından belirli bir x değerinden ( ) sonra eğimi . Bütün maksimum şey budur. noktasından önce 0'a eşit olur ve sıfırlanır.
İşte bunu yapmak için benim işlevim:
changePoint <- function(x, b0, slope1, slope2, delta){
b0 + (x*slope1) + (max(0, x-delta) * slope2)
}
Ve modeli bu şekilde takmaya çalışıyorum
nls(y ~ changePoint(x, b0, slope1, slope2, delta),
data = data,
start = c(b0 = 50, slope1 = 0, slope2 = 2, delta = 48))
Bu başlangıç parametrelerini seçtim, çünkü bunların başlangıç parametreleri olduğunu biliyorum , çünkü verileri uydurdum.
Ancak, bu hatayı alıyorum:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
Az önce talihsiz veriler yaptım mı? İlk önce bunu gerçek verilere uydurmaya çalıştım ve aynı hatayı alıyordum ve ilk başlangıç parametrelerimin yeterince iyi olmadığını anladım.