ข้อผิดพลาดการไล่ระดับสีเอกพจน์ใน nls ด้วยค่าเริ่มต้นที่ถูกต้อง


19

ฉันพยายามใส่เส้นโค้ง + เอ็กซ์โพเนนเชียลให้พอดีกับข้อมูลบางอย่าง เป็นการเริ่มต้นฉันพยายามทำสิ่งนี้กับข้อมูลเทียมบางอย่าง ฟังก์ชั่นคือ: มันเป็นเส้นโค้งเอ็กซ์โพเนนเชียลได้อย่างมีประสิทธิภาพกับส่วนเชิงเส้นเช่นเดียวกับพารามิเตอร์ shift แนวนอนเพิ่มเติม ( m ) อย่างไรก็ตามเมื่อฉันใช้ฟังก์ชั่นของ R ฉันได้รับข้อผิดพลาด " เมทริกซ์การไล่ระดับสีเอกพจน์ที่การประมาณการพารามิเตอร์เริ่มต้น " ที่น่ากลัวแม้ว่าฉันจะใช้พารามิเตอร์เดียวกันกับที่ฉันใช้ในการสร้างข้อมูลตั้งแต่แรก ฉันลองใช้อัลกอริทึมที่แตกต่างกันค่าเริ่มต้นที่แตกต่างกันและพยายามใช้

Y=a+ข⋅R(x-ม.)+ค⋅x
nls()
optimเพื่อลดผลรวมที่เหลือของกำลังสองทั้งหมดนี้จะไม่มีประโยชน์ ฉันได้อ่านว่าสาเหตุที่เป็นไปได้สำหรับการทำเช่นนี้อาจเป็นการทำให้เกินขอบเขตของสูตร แต่ฉันไม่คิดว่ามันจะเป็น (คืออะไร)
มีใครมีข้อเสนอแนะสำหรับปัญหานี้หรือไม่? หรือนี่เป็นเพียงโมเดลที่น่าอึดอัดใจ?

ตัวอย่างสั้น ๆ :

#parameters used to generate the data
reala=-3
realb=5
realc=0.5
realr=0.7
realm=1
x=1:11 #x values - I have 11 timepoint data
#linear+exponential function
y=reala + realb*realr^(x-realm) + realc*x
#add a bit of noise to avoid zero-residual data
jitter_y = jitter(y,amount=0.2)
testdat=data.frame(x,jitter_y)

#try the regression with similar starting values to the the real parameters
linexp=nls(jitter_y~a+b*r^(x-m)+c*x, data=testdat, start=list(a=-3, b=5, c=0.5, r=0.7, m=1), trace=T)

ขอบคุณ!


2
คำแนะนำ: ดูค่าสัมประสิทธิ์ของ (สำหรับค่าคงที่ ) และทราบว่ามีการแก้ปัญหาในตระกูลเดียวกับ{คง} r b r - m = ค่าคงที่( b , m ) b = r m ⋅ ค่าคงที่rxRขR-ม.=คงที่(ข,ม.)ข=Rม.⋅คงที่
— whuber

1
นี่ไม่ใช่โมเดลที่ระบุยกเว้นว่าหรือมีข้อ จำกัด อย่างใด ฉันคิดว่าการต้องการจะทำงานได้ r r ∈ ( 0 , 1 )ขRR∈(0,1)
— มาโคร

คำตอบ:


16

ฉันเพิ่งถูกมันกัด ความตั้งใจของฉันเหมือนกันสร้างแบบจำลองเทียมและทดสอบ เหตุผลหลักคือเหตุผลที่ได้รับจาก @whuber และ @marco รูปแบบดังกล่าวไม่ได้ระบุ หากต้องการดูว่าโปรดจำไว้ว่า NLS ย่อขนาดฟังก์ชัน:

Σผม=1n(Yผม-a-ขRxผม-ม.-คxผม)2

บอกว่ามันจะลดลงโดยชุดของพารามิเตอร์c) ไม่ยากที่จะเห็นว่าชุดของพารามิเตอร์จะให้ค่าเดียวกันของฟังก์ชันที่จะย่อเล็กสุด ดังนั้นจึงไม่มีการระบุตัวแบบนั่นคือไม่มีวิธีแก้ปัญหาเฉพาะ(a,ข,ม.,R,ค)(a,ขR-ม.,0,R,ค)

นอกจากนี้ยังไม่ยากที่จะเห็นว่าทำไมการไล่ระดับสีเป็นเอกพจน์ แสดงว่า

ฉ(a,ข,R,ม.,ค,x)=a+ขRx-ม.+คx

แล้วก็

∂ฉ∂ข=Rx-ม.

∂ฉ∂ม.=-ขLN⁡RRx-ม.

และเราได้มันมาทั้งหมดx

ขLN⁡R∂ฉ∂ข+∂ฉ∂ม.=0

ดังนั้นเมทริกซ์

(∇ฉ(x1)⋮∇ฉ(xn))

จะไม่อยู่ในตำแหน่งเต็มและนี่คือเหตุผลที่nlsจะให้ข้อความการไล่ระดับสีเอกพจน์

ฉันใช้เวลากว่าหนึ่งสัปดาห์เพื่อหาจุดบกพร่องในรหัสของฉันที่อื่นจนกว่าฉันจะสังเกตเห็นว่าจุดบกพร่องหลักอยู่ในรูปแบบ :)


2
นี่คืออายุที่ฉันรู้ แต่เพิ่งสงสัยว่านี่หมายความว่า nls ไม่สามารถใช้กับรุ่นที่ไม่สามารถระบุตัวตนได้หรือไม่? ตัวอย่างเช่นโครงข่ายประสาทเทียม?
— นับศูนย์

ฉันรู้ว่ามีโอกาสอ้วน แต่คุณสามารถแยกแยะสิ่งนี้ออกจากกลุ่มคนที่คิดถึงความจำน้อยได้หรือไม่? :) อะไรคือวิธีแก้ปัญหาของ OP แล้ว? ยอมแพ้และกลับบ้าน?
— theestestecologist

2
วิธีการแก้ปัญหา OP คือการใช้พารามิเตอร์หนึ่งแทนของทั้งสองคือแทนใช้ x พารามิเตอร์ superflous เพราะมันผสานเข้าไปในคือm} บีตา⋅ R xมบีตาบีตา= ข⋅ R - เมตรข⋅Rx-ม.β⋅Rxม.ββ=ข⋅R-ม.
— mpiktas

@CountZero โดยทั่วไปใช่วิธีการปรับให้เหมาะสมตามปกติจะล้มเหลวหากไม่ได้ระบุพารามิเตอร์ โครงข่ายประสาทเทียมก้าวเท้าเลี่ยงปัญหานี้อย่างไรก็ตามโดยการเพิ่มข้อ จำกัด เพิ่มเติมและใช้เทคนิคที่น่าสนใจอื่น ๆ
— mpiktas

ฉันคิดว่า ? มีคำตอบที่ขาดหายไปหรือไม่ ∂ฉ∂ม.=-ขLN⁡R Rx-ม.
— Wiswit

17

แน่นอนคำตอบข้างต้นถูกต้องแน่นอน สำหรับสิ่งที่มีค่านอกเหนือไปจากคำอธิบายที่ได้รับหากคุณกำลังพยายามทำสิ่งนี้ในชุดข้อมูลเทียมตามหน้าช่วยเหลือของ nls พบได้ที่: http://stat.ethz.ch/R-manual/R-patched/ ห้องสมุด / สถิติ / html / nls.html

Nls ของ R จะไม่สามารถจัดการกับมันได้ หน้าช่วยเหลือระบุโดยเฉพาะ:

คำเตือน

อย่าใช้ nls กับข้อมูล "ศูนย์เหลือ" ประดิษฐ์

ฟังก์ชั่น nls ใช้เกณฑ์การลู่เข้าแบบสัมพัทธ์ชดเชยที่เปรียบเทียบความไม่ชัดเจนของตัวเลขที่ประมาณพารามิเตอร์ปัจจุบันกับผลรวมที่เหลือของสแควร์ส สิ่งนี้ทำงานได้ดีกับข้อมูลของแบบฟอร์ม

y = f (x, θ) + eps

(พร้อม var (eps)> 0) มันล้มเหลวในการบ่งบอกถึงการบรรจบกับข้อมูลของฟอร์ม

y = f (x, θ)

เนื่องจากเกณฑ์มีจำนวนเท่ากับการเปรียบเทียบสององค์ประกอบของข้อผิดพลาดในการปัดเศษ หากคุณต้องการทดสอบข้อมูลเทียมโปรดเพิ่มองค์ประกอบเสียงดังที่แสดงในตัวอย่างด้านล่าง

ดังนั้นจึงไม่มีเสียงรบกวน == ไม่ดีสำหรับ Rls


ยินดีต้อนรับสู่เว็บไซต์ @B_D_Dubbya ฉันใช้เสรีภาพในการจัดรูปแบบคำตอบของคุณฉันหวังว่าคุณจะไม่รังเกียจ คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไขคำตอบของคุณใน CV ของที่นี่
— gung - Reinstate Monica

1
ฉันตระหนักถึงปัญหานี้ - ดังนั้นการใช้ฟังก์ชั่น "กระวนกระวายใจ" เพื่อเพิ่มเสียงรบกวน
— steiny
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.