สูตร R-squared ที่ปรับแล้วใน lm ใน R คืออะไรและควรตีความอย่างไร


35

สูตรที่แน่นอนที่ใช้ใน R lm() สำหรับการปรับ R-squared คืออะไร? ฉันจะตีความมันได้อย่างไร

ปรับสูตร r-squared

ดูเหมือนจะมีสูตรอยู่หลายสูตรในการคำนวณการปรับ R-squared

  • สูตรของ Wherry: 1(1R2)(n1)(nv)
  • สูตรของ McNemar: 1(1R2)(n1)(nv1)
  • สูตรของลอร์ด: 1(1R2)(n+v1)(nv1)
  • สูตรของสไตน์: 1[(n1)(nk1)(n2)(nk2)(n+1)n](1R2)

คำอธิบายหนังสือ

  • ตามตำราของ Field การค้นพบสถิติโดยใช้ R (2012, p. 273) R ใช้สมการของ Wherry ซึ่ง "บอกเราว่าความแปรปรวนใน Y จะเป็นสัดส่วนเท่าใดหากแบบจำลองมาจากประชากรที่นำตัวอย่างมาแล้ว" เขาไม่ได้ให้สูตรสำหรับ Wherry เขาแนะนำให้ใช้สูตรของสไตน์ (ด้วยมือ) เพื่อตรวจสอบว่ารูปแบบการตรวจสอบไขว้กันดีเพียงใด
  • Kleiber / Zeileis, Econometrics ประยุกต์ที่มี R (2008, p. 59) อ้างว่าเป็น "การปรับ R-squared ของ Theil" และไม่ได้บอกว่าการตีความของมันแตกต่างกันอย่างไรจาก R-squared ที่หลากหลาย
  • Dalgaard, สถิติเบื้องต้นด้วย R (2008, p. 113) เขียนว่า "ถ้าคุณคูณ [ปรับ R-squared] 100% มันจะตีความได้ว่า '% การลดความแปรปรวน' ' เขาไม่ได้บอกว่าสูตรนี้สอดคล้องกับอะไร

ก่อนหน้านี้ฉันเคยคิดและอ่านอย่างกว้างขวางว่า R-squared ลงโทษสำหรับการเพิ่มตัวแปรเพิ่มเติมให้กับโมเดล ทีนี้การใช้สูตรที่แตกต่างกันเหล่านี้ดูเหมือนจะเป็นการตีความที่แตกต่างกัน ฉันยังมองไปที่คำถามที่เกี่ยวข้องในกองมากเกิน ( คืออะไรแตกต่างระหว่างหลาย R-squared และ Adjusted R-squared ในครั้งเดียวตัวแปรน้อยถดถอยสี่เหลี่ยม? ) และโรงเรียนวอร์ตันพจนานุกรมสถิติที่ UPENN

คำถาม

  • ซึ่งสูตรที่ใช้สำหรับการปรับ R-ตารางโดย R lm() ?
  • ฉันจะตีความมันได้อย่างไร

8
จาก summary.lm (): ans$adj.r.squared <- 1 - (1 - ans$r.squared) * ((n - df.int)/rdf)โดยที่ ans $ r.squared = R ^ 2; n = n, rdf = df ที่เหลือ, df.int = สกัดกั้น df (0 หรือ 1)
EDi

ฉันจะให้คำตอบสำหรับปัญหาจริงที่นี่ซึ่งไม่ใช่ "R ^ 2 แบบไหน ... " ข้อมูลที่คุณขาด (และอื่น ๆ อีกมากมาย) คือ: แพ็คเกจ R ทั้งหมดแม้แต่แกนทำให้ซอร์สโค้ดใช้ได้ แม้แต่สิ่งที่คอมไพล์ใน distros ก็มีให้ใน {packagenames} .tar.gz บน CRAN หรือที่เก็บอื่น
Carl Witthoft

OP ที่นี่: ขอบคุณสำหรับความคิดเห็นที่ดีเยี่ยมนี้ คำถามที่สองของฉัน: ฉันจะตีความได้อย่างไร ฉันอ่านการตีความที่แตกต่างกันมากมายของ Adj R-squared ที่บางครั้งดูเหมือนว่าจะเป็นไปตามสูตรที่อาจไม่เป็นของ Wherry?

คำตอบ:


29

1. สูตรอะไรlmใน R ใช้สำหรับปรับ r-square

ดังที่ได้กล่าวไปแล้วการพิมพ์summary.lmจะให้รหัสที่ R ใช้ในการคำนวณ R สแควร์ที่ปรับปรุง แยกบรรทัดที่เกี่ยวข้องที่สุดที่คุณได้รับ:

ans$adj.r.squared <- 1 - (1 - ans$r.squared) * ((n - df.int)/rdf)

ซึ่งสอดคล้องในสัญกรณ์ทางคณิตศาสตร์เพื่อ:

Radj2=1(1R2)n1np1

df.int=1nprdfn-p-1

npnp1

2. เหตุใดจึงมีสูตร r-square จำนวนมากที่ปรับแล้ว

Radj2ρ2ρ2

R2Radj2

Radj2

Radj2ρ2ρ2R2

อ้างอิง

  • R2

9

เกี่ยวกับคำถามแรกของคุณ: หากคุณไม่รู้ว่ามันคำนวณอย่างไรดูรหัส! หากคุณพิมพ์summary.lmในคอนโซลของคุณคุณจะได้รับรหัสสำหรับฟังก์ชั่นนี้ หากคุณอ่านรหัสจนans$adj.r.squared <- 1 - (1 - ans$r.squared) * ((n - df.int)/rdf)เกินไปคุณจะพบบรรทัด: หากคุณดูบรรทัดด้านบนของบรรทัดนี้คุณจะสังเกตเห็นว่า:

  • ans$r.squared: คือของคุณR2
  • n คือจำนวนของค่าตกค้าง = จำนวนการสังเกต
  • df.int เป็น 0 หรือ 1 (ขึ้นอยู่กับว่าคุณมีจุดตัด)
  • rdf เป็น df ที่เหลืออยู่ของคุณ

R2R2

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