การอัพเดตการถดถอยเชิงเส้นอย่างมีประสิทธิภาพเมื่อเพิ่มการสังเกตและ / หรือตัวทำนายใน R


15

ฉันสนใจที่จะหาวิธีใน R เพื่ออัปเดตโมเดลเชิงเส้นอย่างมีประสิทธิภาพเมื่อมีการเพิ่มการสังเกตหรือตัวทำนาย biglm มีความสามารถในการอัปเดตเมื่อเพิ่มการสังเกต แต่ข้อมูลของฉันมีขนาดเล็กพอที่จะอยู่ในหน่วยความจำ (แม้ว่าฉันจะมีอินสแตนซ์จำนวนมากที่ต้องอัปเดต) มีวิธีการทำเช่นนี้ด้วยมือเปล่าเช่นเพื่ออัปเดตการแยกตัวประกอบ QR (ดู "การอัปเดตการแยกตัวประกอบ QR และปัญหากำลังสองน้อยที่สุด" โดย Hammarling และ Lucas) แต่ฉันหวังว่าจะมีการใช้งานอยู่

คำตอบ:


6

หากอัลกอริทึมที่คุณกำลังมองหานั้นคล้ายกับสถิติประยุกต์ 274 , 1992, ฉบับที่ 41 (2) คุณก็สามารถใช้biglm ได้เพราะมันไม่ต้องการให้คุณเก็บข้อมูลไว้ในไฟล์


ขอบคุณ แต่สามารถอัปเดต biglm ในตัวทำนายหมายเลขได้หรือไม่ ฉันคิดว่ามันปรับปรุงข้อสังเกตเท่านั้น
Gappy

มีวิธีแก้ปัญหาแบบปิดสำหรับเพิ่มตัวทำนาย? คุณต้องการสิ่งที่เทียบเท่าสำหรับ inv (X'X) นั่นมีไว้สำหรับเพิ่มคอลัมน์หรือไม่? ไม่ว่าปัญหาของคุณจะ 'เล็ก' ในขณะที่พูดไม่กี่ (หมื่น) โดยไม่กี่ร้อย? มันสำคัญจริงๆหรือ
Dirk Eddelbuettel

2
มีแบบฟอร์มปิดง่าย ๆ ในการอัปเดต SVD และสูตรที่เกี่ยวข้องเพิ่มเติมสำหรับ QR การประหยัดการคำนวณมีความสำคัญเมื่อทำการแก้แบบจำลองหลายพันแบบ พวกเขาสามารถนำไปใช้ใน R แต่มันต้องใช้งานเล็กน้อย มันเป็นโครงการที่ดี
สวัสดี

2
ฉันเข้าใจว่ามีทีมไอทีที่มีความสามารถที่ร้านของคุณ ฉันแน่ใจว่าพวกเขาสามารถใช้สิ่งที่ต้องการสำหรับคุณ
Dirk Eddelbuettel

4

พี

แม้จะค้นหาวันสองสามเดือนที่ผ่านมาฉันไม่สามารถค้นหาเทียบเท่าใน R (ระวังมีฟังก์ชัน qr.update จำนวนมากใน cran แต่เมื่อคุณดูภายใต้ประทุนพวกเขาเพียงปลอม - ฉันพวกเขาเรียกlm.updateเหมือนกันทั้งหมด).

ปรับปรุง : ลองในแหล่งที่มาของแพคเกจ 'leaps' ใน R-source คุณจะพบฟังก์ชัน 'leaps.forward' ซึ่งเรียกรูทีน FORTRAN 'forwrd' ซึ่งอยู่ใน / src ของแพ็คเกจซึ่งดูเหมือนว่าจะใช้การอัปเดต QR อันดับ 1


3

ทำไมคุณไม่ลองใช้ความสามารถในการอัปเดตของวัตถุโมเดลเชิงเส้น

update.lm( lm.obj, formula, data, weights, subset, na.action)

ลองดูที่ลิงค์นี้

  • สำหรับคำอธิบายทั่วไปของฟังก์ชั่นอัพเดท:

http://stat.ethz.ch/R-manual/R-devel/library/stats/html/update.html

  • สำหรับคำอธิบายเฉพาะเกี่ยวกับ update.lm:

http://www.science.oregonstate.edu/~shenr/Rhelp/update.lm.html


3
มีสองสิ่งที่ไม่สามารถใช้งานกับการอัปเดตได้ (NB: update.lm เลิกใช้แล้ว) ก่อนอื่นจะใช้สูตร สิ่งนี้เองทำให้การประมวลผลช้ากว่า lm.fit () 400% ประการที่สองมันประเมินทั้งโมเดลใหม่อีกครั้ง ไม่มีการเพิ่มประสิทธิภาพที่นี่
Gappy

ขอบคุณที่ฉันใช้อัพเดทสำหรับรุ่นขนาดกลาง มันอาจจะไม่เป็นประโยชน์ในกรณีของคุณ
deps_stats

1

ฉันได้รับการมองตั้งแต่เวลานานเทียบเท่ากับการปรับปรุง matlab qr, leaps ดูเหมือนจะเป็นวิธีที่ดี!

ใน R คุณสามารถดูฟังก์ชั่น recresid () ในแพ็คเกจ strucchange ซึ่งจะให้เหลือแบบเรียกซ้ำเมื่อคุณเพิ่มการสังเกต (ไม่ใช่ตัวแปร!) ฉันเดาว่านี่จะต้องมีการแก้ไขเล็กน้อยเพื่อให้ได้ betas แบบเรียกซ้ำ (betar ในรหัส?)

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