ฉันกำลังพยายามจัดทำแบบจำลองกฎหมายพลังงานอย่างง่ายกับชุดข้อมูลที่เป็นดังนี้:
mydf
:
rev weeks
17906.4 1
5303.72 2
2700.58 3
1696.77 4
947.53 5
362.03 6
เป้าหมายคือการส่งผ่านสายไฟฟ้าและใช้มันเพื่อทำนายrev
vlaues สำหรับสัปดาห์ต่อ ๆ ไป มีงานวิจัยมากมายพาฉันไปที่nls
ฟังก์ชั่นซึ่งฉันได้ปฏิบัติดังนี้
newMod <- nls(rev ~ a*weeks^b, data=modeldf, start = list(a=1,b=1))
predict(newMod, newdata = data.frame(weeks=c(1,2,3,4,5,6,7,8,9,10)))
ในขณะที่งานนี้สำหรับlm
รุ่นที่ผมได้รับsingular gradient
ข้อผิดพลาดที่ผมเข้าใจจะทำอย่างไรกับค่าเริ่มต้นของฉันและa
b
ฉันลองใช้ค่าที่แตกต่างกันไปจนถึงการพล็อตเรื่องนี้ใน Excel ผ่าน lone รับสมการจากนั้นใช้ค่าจากสมการ แต่ฉันยังคงได้รับข้อผิดพลาด ฉันดูคำตอบจำนวนมากเช่นนี้และลองคำตอบที่สอง (ไม่เข้าใจคำตอบแรก) แต่ไม่มีผลลัพธ์
ฉันสามารถใช้ความช่วยเหลือบางอย่างที่นี่เกี่ยวกับวิธีค้นหาค่าเริ่มต้นที่ถูกต้อง หรือมิฉะนั้นฉันสามารถใช้ฟังก์ชั่นอื่นแทน nls ได้
ในกรณีที่คุณต้องการสร้างใหม่mydf
ได้อย่างง่ายดาย:
mydf <- data.frame(rev=c(17906.4, 5303.72, 2700.58 ,1696.77 ,947.53 ,362.03), weeks=c(1,2,3,4,5,6))