ฉันมีข้อมูลพื้นฐานเกี่ยวกับการลดการปล่อยก๊าซและราคาต่อคัน:
q24 <- read.table(text = "reductions cost.per.car
50 45
55 55
60 62
65 70
70 80
75 90
80 100
85 200
90 375
95 600
",header = TRUE, sep = "")
ฉันรู้ว่านี่เป็นฟังก์ชั่นเอ็กซ์โปเนนเชียลดังนั้นฉันคาดหวังว่าจะสามารถหาแบบจำลองที่เหมาะกับ:
model <- nls(cost.per.car ~ a * exp(b * reductions) + c,
data = q24,
start = list(a=1, b=1, c=0))
แต่ฉันได้รับข้อผิดพลาด:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
ผมเคยอ่านผ่านทางตันของคำถามเกี่ยวกับข้อผิดพลาดฉันเห็นและฉันรวบรวมว่าปัญหาน่าจะเป็นที่ฉันต้องดีกว่า / ที่แตกต่างกันstart
ค่า (คนinitial parameter estimates
ที่ทำให้ความรู้สึกเล็ก ๆ น้อย ๆ ) แต่ผมไม่แน่ใจว่าได้รับ ข้อมูลที่ฉันมีฉันจะประเมินค่าพารามิเตอร์ที่ดีขึ้นอย่างไร
exp(50)
และexp(95)
การ y ที่ค่าที่ x = 50 x = 95 หากคุณตั้งค่าc=0
และใช้บันทึกของ y (สร้างความสัมพันธ์เชิงเส้น) คุณสามารถใช้การถดถอยเพื่อรับค่าประมาณเริ่มต้นสำหรับบันทึก ( ) และbที่เพียงพอสำหรับข้อมูลของคุณ (หรือถ้าคุณพอดีกับเส้นผ่านจุดกำเนิดคุณสามารถออกได้วันที่ 1 และใช้เพียงการประมาณการสำหรับขนั่นยังพอเพียงสำหรับข้อมูลของคุณ) หากbอยู่นอกช่วงเวลาที่แคบมากรอบค่าสองค่าเหล่านั้นคุณจะพบปัญหาบางอย่าง [หรือลองใช้อัลกอริธึมที่ต่างออกไป]