วิธีประมาณค่าขอบเขตบนสำหรับการถดถอยโลจิสติกโดยจุดข้อมูลเพียง 5 ถึง 7


11

ผมมีข้อมูลที่อยู่ในรูปx)} สำหรับการประมาณถึงฉันใช้สูตรของบทความนี้: จอห์นฟ็อกซ์ - การถดถอยแบบไม่เชิงเส้นและสแควร์สแบบไม่เชิงเส้น ในบทความนี้ถูกประเมินโดยการดูข้อมูล ถ้าฉันทำมันได้ผลแม้ว่าฉันจะมีแค่สามคะแนน จากนั้นฉันสามารถคำนวณอีกสองอัน ฉันทดสอบพารามิเตอร์ด้วย nls () ใน R และ LevenbergMarquardt ใน C # โมเดลที่ส่งคืนโดยพวกเขาพอใจy=β11+exp(β2+β3x)β1β3β1

ปัญหาคือฉันไม่ต้องการดูข้อมูลเพื่อรับตัวประมาณที่ดีสำหรับฉันต้องการให้โปรแกรมคำนวณมัน บางครั้งฉันใช้ค่าที่สูงกว่าค่าสูงสุดของฉันเล็กน้อย (บางสิ่งระหว่างถึง\ max * 1.5มันใช้งานได้ดีตราบใดที่คะแนนครอบคลุมฟังก์ชั่นส่วนใหญ่ จุดข้อมูลอยู่ที่ไหนสักแห่งจาก "ด้านบน" ของเส้นโค้ง แต่เมื่อพวกเขาทั้งหมดมาจากพื้นที่ "ด้านล่าง" จุดเบี่ยงเบนตัวประมาณนี้ต่ำกว่าที่ควรจะเป็นแน่นอนและฉันไม่เหมาะกับแบบจำลองถ้าฉันใช้บางอย่าง นั่นสูงกว่าจุดสูงสุดแน่นอน (โดยการคูณด้วยค่าที่สูงอย่างน่าขัน) โมเดลไม่เหมาะกับวิธีที่มีประโยชน์ใด ๆβ1max1.1max1.5

การวัดอาจมีลักษณะเช่นนี้:

x = (40, 50, 60, 70), y = (1,000, 950, 400, 200) -> ง่ายต่อการประมาณ

x = (40, 50, 60, 70), y = (1,000, 950, 800, 100) -> ง่ายต่อการประมาณ

x = (40, 50, 60, 70), y = (500, 200, 100, 50) -> ไม่ง่ายที่จะประมาณ

ฉันเดาว่าฉันสามารถรู้ได้ว่าฉันอยู่ที่ไหนในฟังก์ชั่น (ที่ "ด้านล่าง", ที่ "ด้านบน", ในความลาดชัน) โดยการคำนวณ delta ในจุดที่กำหนดและคำนวณขอบเขตบนขึ้นอยู่กับว่า ไม่มีใครมีคำแนะนำสำหรับการแก้ปัญหาที่ดีกว่า? ข้อมูลเพิ่มเติม: หากไม่สามารถทำได้สิ่งที่สำคัญกว่าสำหรับฉันคือการวัดที่พอดีได้ดีที่สุดและฉันยอมรับว่าการวัดบางอย่างไม่สามารถทำได้เลย

(แม้ว่าฉันต้องการการนำไปใช้ใน C # ฉันโพสต์ไว้ที่นี่ แต่ฉันไม่คิดว่าปัญหาจะขึ้นอยู่กับภาษา)

อัปเดต (แอปพลิเคชันนี้):

x คือค่าอุณหภูมิและการวัดที่สอดคล้องกัน โดยธรรมชาติแล้วจะได้รับมันควรมีลักษณะโค้งโลจิสติกที่มีค่า y สูงกว่าที่อุณหภูมิต่ำกว่าและในทางกลับกัน จุดหลอมเหลวเท่ากับจุดเปลี่ยนความโค้งของเส้นโค้งซึ่งเปลี่ยนแปลงไปมากด้วยการเปลี่ยนแปลงเล็กน้อยของพารามิเตอร์แบบจำลอง

อัปเดต (บางส่วนประกอบด้วยข้อมูล 7 จุดข้อมูลและจุดผันโรคที่รู้จักกันที่ 60):

//first I made up some data without any noise and enough (13) points
double[] x17 = { 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90 };
double[] y17 = { 2000, 1920, 1820, 1700, 1500, 1280, 1000, 720, 500, 300, 180, 80, 0 };
//calculated inflection point: 59.642....

//Then I took three different parts of that data 
(to simulate how much data I will have in the real world)
double[] x18 = { 30, 35, 40, 45, 50, 55, 60 };
double[] y18 = { 2000, 1920, 1820, 1700, 1500, 1280, 1000 };
//calculated inflection point: 59.263.... is ok!

double[] x19 = { 60, 65, 70, 75, 80, 85, 90 };
double[] y19 = { 1000, 720, 500, 300, 180, 80, 0 };
//calculated inflection point: 53.447.... to small!

double[] x20 = { 45, 50, 55, 60, 65, 70, 75 };
double[] y20 = { 1700, 1500, 1280, 1000, 720, 500, 300 };
//calculated inflection point: 59.868... almost perfect!

แนวทางปัจจุบันของฉันสำหรับการประมาณขอบเขตบนคือ y0 * y0 / y1 วิธีนี้ฉันหวังว่าจะคำนึงถึงว่าฉันอาจไม่ได้มีค่าใกล้เคียงกับค่าสูงสุดเสมอไป

อัปเดต: ค่า x และ y จะไม่ติดลบ x จะเป็น {40, 45, 50, 55, 60, 65, 70} เว้นแต่ว่าจุดข้อมูลจะหายไป

อัปเดต: ฉันทำการทดสอบจำนวนมากด้วยข้อมูลจำลองที่ควรจะพอดี (ฉันเลือกจุดข้อมูลที่อยู่บนเส้นโค้ง = โดยไม่มีเสียงรบกวน) และฉันเห็นว่ามันทำงานได้ดีเว้นแต่จุดข้อมูลแรกหรือจุดที่สอง (ที่ x = 40 หรือ x = 45) หายไป ฉันเดาว่าฉันจะต้องทิ้งการวัดแบบนี้และผู้ใช้จะต้องอยู่กับมัน


ด้วยคะแนนจำนวนเล็กน้อยเช่นนี้ฉันคิดว่าปัญหาที่แท้จริงของคุณคือความไม่ถูกต้องของค่าประมาณและไม่ใช่วิธีการคำนวณ
Michael R. Chernick

1
ปัญหาของตัวอย่างสุดท้ายคือฟังก์ชั่นแบบฟอร์มที่ดีกว่าคือ (สังเกตเครื่องหมายลบ) นั่นเป็นทางออกที่ยอมรับได้หรือไม่? ถ้าไม่คุณจะยังคงมีปัญหาเพราะคุณจะต้องยอมรับวิธีแก้ปัญหาในขอบเขตระหว่างสองรุ่น (และที่น่ากลัว) y=β11exp(β2+β3x))
whuber

@MichaelChernick ฉันคิดว่าคุณพูดถูกปัญหาคือฉันจะไม่ได้รับมากกว่า 7 จุดข้อมูล ฉันเดาว่าฉันต้องเตะออกผลลัพธ์ที่มีน้อยกว่านั้น ฉันเพิ่มกรณีทดสอบที่มีผลลัพธ์ที่ควรเหมือนกัน มีห้องพักสำหรับการปรับปรุงหรือเป็นสิ่งที่ใกล้เคียงที่สุดที่ฉันจะได้รับหรือไม่
Verena Haunschmid

@ เมื่อฉันพยายามใส่ข้อมูลด้วยเครื่องหมายลบ แต่สำหรับแต่ละชุดพารามิเตอร์ฉันได้รับข้อผิดพลาดเมทริกซ์การไล่ระดับสีเอกพจน์ (ใน R) คุณใช้ตัวประมาณแบบใด ฉันเพิ่มข้อมูลเกี่ยวกับพื้นที่ที่ฉันใช้เพื่อขีดเส้นใต้ว่าทำไมเส้นโค้งจึงต้องดูอย่างนั้น (ฉันยังไม่แน่ใจว่าสูตรของคุณตรงตามข้อกำหนดเหล่านี้หรือไม่)
Verena Haunschmid

(1) ค่ามีหน่วยเป็นอะไร? หากสิ่งเหล่านี้อาจเป็นลบแสดงว่าโมเดลของคุณอาจไม่ทำงาน (2) คุณสามารถบอกอะไรเราเกี่ยวกับลักษณะของ "เสียงรบกวน" หรือข้อผิดพลาดในค่านี่อาจเป็นสิ่งสำคัญสำหรับการปรับ yy
whuber

คำตอบ:


1

ฉันทำงานเกี่ยวกับปัญหาที่คล้ายกันเมื่อต้นปีนี้ วิธีแก้ปัญหาที่ฉันใช้นั้นอ้างอิงจากบทความนี้ซึ่งใช้พีชคณิตเชิงเส้นเพื่อกำจัดสูงสุด ด้วยวิธีนี้ผลลัพธ์สำหรับพารามิเตอร์ที่เหลือเมื่อกำหนดผ่านขั้นตอนบางอย่าง (ฉันเพียงแค่ลดข้อผิดพลาดพื้นผิวเช่นเดียวกับในกระดาษ) สามารถใช้เพื่ออนุมานในตอนท้ายβ1β1

วิธีการแก้ปัญหานี้วางอยู่บนสมมติฐานที่ว่าเส้นโค้งโลจิสติกทั้งหมดที่มีอัตราเดียวกันและพารามิเตอร์ตำแหน่งเหมือนกันในตัวเองดังนั้นการตั้งค่าขอบเขตบนก็หมายความว่า

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