Saya mencoba menerapkan analisis "titik perubahan", atau menggunakan regresi multifase nls()
dalam R.
Ini beberapa data palsu yang saya buat . Rumus yang ingin saya gunakan agar sesuai dengan data adalah:
Apa yang seharusnya dilakukan adalah menyesuaikan data hingga titik tertentu dengan intersep dan kemiringan tertentu ( dan β 1 ), kemudian, setelah nilai x tertentu ( δ ), tambahkan kemiringan tersebut dengan β 2 . Itulah inti dari semuanya. Sebelum titik δ , itu akan sama dengan 0, dan β akan di-nolkan.
Jadi, inilah fungsi saya untuk melakukan ini:
changePoint <- function(x, b0, slope1, slope2, delta){
b0 + (x*slope1) + (max(0, x-delta) * slope2)
}
Dan saya mencoba menyesuaikan model dengan cara ini
nls(y ~ changePoint(x, b0, slope1, slope2, delta),
data = data,
start = c(b0 = 50, slope1 = 0, slope2 = 2, delta = 48))
Saya memilih parameter awal tersebut, karena saya tahu itu adalah parameter awal, karena saya membuat data.
Namun, saya mendapatkan kesalahan ini:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
Apakah saya baru saja membuat data yang tidak menguntungkan? Saya mencoba memasang ini pada data nyata terlebih dahulu, dan mendapatkan kesalahan yang sama, dan saya baru saja mengetahui bahwa parameter awal saya tidak cukup baik.
sumber
Hanya ingin menambahkan bahwa Anda dapat melakukan ini dengan banyak paket lain. Jika Anda ingin mendapatkan perkiraan ketidakpastian di sekitar titik perubahan (sesuatu yang tidak dapat dilakukan), coba
mcp
paket.Mari kita plot dengan interval prediksi (garis hijau). Kepadatan biru adalah distribusi posterior untuk lokasi titik perubahan:
Anda dapat memeriksa parameter individual secara lebih rinci menggunakan
plot_pars(fit)
dansummary(fit)
.sumber