วิธีการคำนวณ r-squared สำหรับ glm ใน r


บ่อยครั้งเมื่อเราปรับแบบจำลองการถดถอยเชิงเส้นให้เหมาะสม เราจะใช้ R-squared เพื่อประเมินว่าแบบจำลองเหมาะสมกับข้อมูลเพียงใด

R กำลังสองแสดงถึงสัดส่วนของความแปรปรวนใน ตัวแปรตอบสนอง ที่สามารถอธิบายได้ด้วยตัวแปรทำนายในแบบจำลองการถดถอย

ตัวเลขนี้มีตั้งแต่ 0 ถึง 1 โดยค่าที่สูงกว่าบ่งบอกถึงความพอดีของโมเดลที่ดีกว่า

อย่างไรก็ตาม ไม่มีค่า R-squared สำหรับโมเดลเชิงเส้นทั่วไป เช่น โมเดล การถดถอยโลจิสติก และโมเดล การถดถอยปัวซอง

แต่เราสามารถคำนวณหน่วยเมตริกที่เรียกว่า R-Squared ของ McFadden ซึ่งมีตั้งแต่ 0 ถึงต่ำกว่า 1 โดยค่าที่สูงกว่าบ่งชี้ว่าโมเดลเหมาะสมกว่า

เราใช้สูตรต่อไปนี้ในการคำนวณ R ของ McFadden:

R-Squared ของ McFadden = 1 – ( แบบจำลอง ความน่าจะเป็นของบันทึก / ความน่าจะเป็นของบันทึกเป็น ศูนย์ )

ทอง:

  • log likelihood model : บันทึกค่าความน่าจะเป็นของโมเดลที่ติดตั้งในปัจจุบัน
  • ความน่าจะเป็นของบันทึก เป็นศูนย์ : ค่าความน่าจะเป็นของบันทึกของโมเดล null (โมเดลที่มีการสกัดกั้นเท่านั้น)

ในทางปฏิบัติ ค่าที่สูงกว่า 0.40 บ่งชี้ว่าโมเดลเหมาะสมกับข้อมูลเป็นอย่างดี

ตัวอย่างต่อไปนี้แสดงวิธีคำนวณ R-squared ของ McFadden สำหรับแบบจำลองการถดถอยโลจิสติกใน R

ตัวอย่าง: การคำนวณค่า R-squared ของ McFadden ในหน่วย R

สำหรับตัวอย่างนี้ เราจะใช้ชุดข้อมูล เริ่มต้น จากแพ็คเกจ ISLR เราสามารถใช้โค้ดต่อไปนี้เพื่อโหลดและแสดงข้อมูลสรุปของชุดข้อมูล:

 #install and load ISLR package
install. packages (' ISLR ')
library (ISLR)

#define dataset
data <- ISLR::Default

#view summary of dataset
summary(data)

 default student balance income     
 No:9667 No:7056 Min. : 0.0 Min. : 772  
 Yes: 333 Yes:2944 1st Qu.: 481.7 1st Qu.:21340  
                       Median: 823.6 Median: 34553  
                       Mean: 835.4 Mean: 33517  
                       3rd Qu.:1166.3 3rd Qu.:43808  
                       Max. :2654.3 Max. :73554  

#find total observations in dataset
nrow(data)

[1] 10000

ชุดข้อมูลนี้มีข้อมูลต่อไปนี้เกี่ยวกับบุคคล 10,000 คน:

  • ค่าเริ่มต้น: ระบุว่าบุคคลนั้นผิดนัดหรือไม่
  • นักเรียน: ระบุว่าบุคคลนั้นเป็นนักเรียนหรือไม่
  • ยอดคงเหลือ: ยอดคงเหลือเฉลี่ยที่ถือโดยบุคคล
  • รายได้: รายได้ของแต่ละบุคคล

เราจะใช้สถานะนักศึกษา ยอดคงเหลือในธนาคาร และรายได้เพื่อสร้างแบบจำลองการถดถอยลอจิสติกส์ที่คาดการณ์ความน่าจะเป็นที่บุคคลหนึ่งๆ จะผิดนัด:

 #fit logistic regression model
model <- glm(default~student+balance+income, family=' binomial ', data=data)

#view model summary
summary(model)

Call:
glm(formula = default ~ balance + student + income, family = "binomial", 
    data = data)

Deviance Residuals: 
    Min 1Q Median 3Q Max  
-2.4691 -0.1418 -0.0557 -0.0203 3.7383  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept) -1.087e+01 4.923e-01 -22.080 < 2e-16 ***
balance 5.737e-03 2.319e-04 24.738 < 2e-16 ***
studentYes -6.468e-01 2.363e-01 -2.738 0.00619 ** 
income 3.033e-06 8.203e-06 0.370 0.71152    
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2920.6 on 9999 degrees of freedom
Residual deviance: 1571.5 on 9996 degrees of freedom
AIC: 1579.5

Number of Fisher Scoring iterations: 8

ต่อไป เราจะใช้สูตรต่อไปนี้เพื่อคำนวณค่า R-squared ของ McFadden สำหรับแบบจำลองนี้:

 #calculate McFadden's R-squared for model
with(summary(model), 1 - deviance/null. deviance )

[1] 0.4619194

ค่า R-squared ของ McFadden กลายเป็น 0.4619194 ค่านี้ค่อนข้างสูง บ่งชี้ว่าแบบจำลองของเราเหมาะสมกับข้อมูลเป็นอย่างดีและมีพลังในการทำนายสูง

โปรดทราบว่าเรายังสามารถใช้ฟังก์ชัน pR2() จากแพ็คเกจ pscl เพื่อคำนวณค่า McFadden R-squared สำหรับโมเดลได้:

 #install and load pscl package
install. packages (' pscl ')
library (pscl)

#calculate McFadden's R-squared for model
pR2(model)[' McFadden ']

 McFadden 
0.4619194

โปรดทราบว่าค่านี้สอดคล้องกับค่าที่คำนวณไว้ก่อนหน้านี้

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน R:

วิธีการคำนวณ R-squared ใน R
วิธีการคำนวณ R-squared ที่ปรับแล้วใน R
ค่า R-กำลังสองที่ดีคืออะไร?

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *