ฉันกำลังพยายามใช้การวิเคราะห์ "จุดเปลี่ยน" หรือการถดถอยหลายเฟสที่ใช้nls()
ในอาร์
นี่คือบางส่วนข้อมูลปลอมผมได้ทำ สูตรที่ฉันต้องการใช้เพื่อให้พอดีกับข้อมูลคือ:
สิ่งนี้ควรจะทำคือพอดีกับข้อมูลได้ถึงจุดหนึ่งที่มีการตัดบางอย่างและความลาดชัน ( และ ) แล้วหลังจากที่ค่า x บางอย่าง ( ) เพิ่มความลาดชันโดย\นั่นคือสิ่งที่สูงสุดทั้งหมดเป็นเรื่องเกี่ยวกับ ก่อนจุดมันจะเท่ากับ 0 และจะถูกทำให้เป็นศูนย์
ดังนั้นนี่คือหน้าที่ของฉันในการทำสิ่งนี้:
changePoint <- function(x, b0, slope1, slope2, delta){
b0 + (x*slope1) + (max(0, x-delta) * slope2)
}
และฉันพยายามทำให้พอดีกับแบบนี้
nls(y ~ changePoint(x, b0, slope1, slope2, delta),
data = data,
start = c(b0 = 50, slope1 = 0, slope2 = 2, delta = 48))
ฉันเลือกพารามิเตอร์เริ่มต้นเหล่านั้นเพราะฉันรู้ว่าเป็นพารามิเตอร์เริ่มต้นเพราะฉันสร้างข้อมูลขึ้นมา
อย่างไรก็ตามฉันได้รับข้อผิดพลาดนี้:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
ฉันเพิ่งทำข้อมูลที่โชคร้าย? ฉันลองปรับให้เหมาะสมกับข้อมูลจริงก่อนและได้รับข้อผิดพลาดเดียวกันและฉันเพิ่งคิดว่าพารามิเตอร์เริ่มต้นของฉันไม่ดีพอ