การใช้สัมประสิทธิ์การกำหนดบางส่วน


9

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

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

การคำนวณสำหรับ r ^ 2 บางส่วนนั้นค่อนข้างตรงไปตรงมาหลังจากการประเมินสองโมเดลของคุณและสร้างตาราง ANOVA สำหรับพวกเขา การคำนวณสำหรับ r ^ 2 บางส่วนคือ:

(SSEreduced - SSEfull) / SSEreduced

ฉันได้เขียนฟังก์ชันที่ค่อนข้างง่ายซึ่งจะคำนวณสิ่งนี้สำหรับตัวแบบถดถอยเชิงเส้นหลายแบบ ฉันไม่คุ้นเคยกับโครงสร้างรุ่นอื่น ๆ ใน R ที่ฟังก์ชั่นนี้อาจทำงานได้ไม่ดี:

partialR2 <- function(model.full, model.reduced){
    anova.full <- anova(model.full)
    anova.reduced <- anova(model.reduced)

    sse.full <- tail(anova.full$"Sum Sq", 1)
    sse.reduced <- tail(anova.reduced$"Sum Sq", 1)

    pR2 <- (sse.reduced - sse.full) / sse.reduced
    return(pR2)

    }

ข้อเสนอแนะหรือเคล็ดลับเกี่ยวกับฟังก์ชั่นที่มีประสิทธิภาพมากขึ้นในการทำภารกิจนี้และ / หรือการใช้งานที่มีประสิทธิภาพมากขึ้นของรหัสข้างต้นจะได้รับการชื่นชมมาก


2
ฉันขอแนะนำให้ลองรุ่นอื่น ๆ และดูว่ารหัสทำงานหรือไม่ R มักจะดีดังนั้น anova ควรส่งคืนสิ่งที่คล้ายกันสำหรับโมเดลที่แตกต่างกัน ปัญหาเกิดขึ้นกับสูตรเริ่มต้นของคุณ มีไว้สำหรับรุ่นอื่นหรือไม่? หากไม่เป็นเช่นนั้นจะไม่มีจุดในการรับรหัสนอกจากนี้รหัสควรออกคำเตือนว่าใช้สำหรับรุ่นที่ไม่มีสูตรอยู่
mpiktas

ฉันไม่เห็นคำถามจริงๆ คุณต้องการฟังก์ชันที่คำนวณบางส่วนของ R2 แต่คุณมีอยู่แล้ว คุณรู้หรือไม่ว่าความไวของแพ็คเกจ (ไม่มี R2 บางส่วน แต่ใช้ pcc ซึ่งเป็นกรณีเฉพาะ)
robin girard

@robin - ฉันต้องขออภัยถ้าคำถามของฉันไม่ชัดเจน ฉันสนใจที่จะค้นหาแพ็คเกจที่มีการคำนวณนี้ (เพราะมันอาจมีฟังก์ชั่นที่มีประโยชน์อื่น ๆ อีกมากมายที่จะเป็นประโยชน์) และ / หรือคำแนะนำเกี่ยวกับวิธีการปรับปรุงฟังก์ชั่นที่ฉันเขียนไว้ด้านบน เห็นได้ชัดว่าไม่มีการตรวจสอบข้อผิดพลาดและอาจไม่สามารถใช้ได้กับทุกรุ่น
Chase

ฉันแนะนำให้ย้ายคำถามนี้ไปที่ SE หัวใจสำคัญของคำถามนี้ดูเหมือนจะเป็นปัญหาการดำเนินการไม่ใช่เชิงสถิติ
caracal

@caracal - สิ่งที่คุณเห็นว่าเหมาะสม ฉันรู้ว่ามีการพูดคุยกันอย่างยุติธรรมเกี่ยวกับว่าเส้นทรายควรถูกดึงระหว่าง SO และ CV เกี่ยวกับคำถามที่เกี่ยวข้องกับ R อย่างไร ฉันไม่มีความชอบอย่างใดอย่างหนึ่ง งานของฉันพาฉันออกไปจากปัญหานี้เป็นครั้งสุดท้าย แต่จะกลับมาทบทวนอีกครั้งในอีกไม่กี่สัปดาห์ข้างหน้าเพื่อที่ฉันจะได้พบกับทางออกที่ดีกว่า ฉันก็สบายดีที่ปล่อยให้คำถามจางหายไปในอีเธอร์ ...
359109 Chase

คำตอบ:


0

ทีนี้, r ^ 2 เป็นแค่ความแปรปรวนร่วมกำลังสองเหนือผลคูณของความแปรปรวน, ดังนั้นคุณอาจทำบางอย่างเช่น cov (Yfull, Ytrue) / var (Ytrue) var (Yfull) - cov (YReduced, Ytrue) / var (Ytrue) ) var (YRed) โดยไม่คำนึงถึงประเภทรุ่น; ตรวจสอบเพื่อยืนยันว่าให้คำตอบเดียวกันกับคุณในกรณี lm

http://www.stator-afm.com/image-files/r-squared.gif

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