วิธีการคำนวณความดีของความพอดีใน glm (R)


21

ฉันมีผลลัพธ์ต่อไปนี้จากการเรียกใช้ฟังก์ชัน glm

ฉันจะตีความค่าต่อไปนี้ได้อย่างไร:

  • ความเบี่ยงเบนว่างเปล่า
  • ความเบี่ยงเบนตกค้าง
  • AIC

พวกเขามีบางสิ่งที่เกี่ยวข้องกับความดีงามของร่างกายหรือไม่? ฉันสามารถคำนวณความพอดีที่ได้จากผลลัพธ์เหล่านี้เช่น R-square หรือการวัดอื่น ๆ ได้หรือไม่?

Call:
glm(formula = tmpData$Y ~ tmpData$X1 + tmpData$X2 + tmpData$X3 + 
    as.numeric(tmpData$X4) + tmpData$X5 + tmpData$X6 + tmpData$X7)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-0.52628  -0.24781  -0.02916   0.25581   0.48509  

Coefficients:
                     Estimate Std. Error  t value Pr(>|t|)    
(Intercept         -1.305e-01  1.391e-01   -0.938   0.3482    
tmpData$X1         -9.999e-01  1.059e-03 -944.580   <2e-16 ***
tmpData$X2         -1.001e+00  1.104e-03 -906.787   <2e-16 ***
tmpData$X3         -5.500e-03  3.220e-03   -1.708   0.0877 .  
tmpData$X4         -1.825e-05  2.716e-05   -0.672   0.5017    
tmpData$X5          1.000e+00  5.904e-03  169.423   <2e-16 ***
tmpData$X6          1.002e+00  1.452e-03  690.211   <2e-16 ***
tmpData$X7          6.128e-04  3.035e-04    2.019   0.0436 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for gaussian family taken to be 0.08496843)

    Null deviance: 109217.71  on 3006  degrees of freedom
Residual deviance:    254.82  on 2999  degrees of freedom
  (4970 observations deleted due to missingness)
AIC: 1129.8

Number of Fisher Scoring iterations: 2

ฉันรู้ว่านี่ถูกย้ายจาก SO โดยที่ปกติแล้วใครจะไม่ค้นหาข้อมูลเกี่ยวกับคำศัพท์ทางสถิติเหล่านี้ คุณมีทรัพยากรที่ดีที่นี่! ยกตัวอย่างเช่นการเห็นสิ่งที่คุณสามารถเรียนรู้จากการค้นหาในบางคำของคุณเช่นAIC เวลาที่ใช้ในการทำสิ่งนี้ควรตอบคำถามของคุณอย่างเต็มที่หรืออย่างน้อยก็แนะนำให้คุณถามคำถามที่เจาะจงกว่านี้
whuber

ไม่เกี่ยวข้องกับ gaussian glms แต่ถ้าคุณติดตั้ง bernoulli glm กับข้อมูลไบนารี่คุณจะไม่สามารถใช้ส่วนเบี่ยงเบนส่วนที่เหลือเพื่อประเมินรูปแบบที่เหมาะสมได้เพราะข้อมูลจะถูกยกเลิกในสูตรการเบี่ยงเบน ตอนนี้คุณสามารถใช้ความแตกต่างของการเบี่ยงเบนที่เหลือในกรณีนั้นเพื่อเปรียบเทียบสองรุ่น แต่ไม่ใช่การเบี่ยงเบนที่เหลืออยู่
เปลี่ยนแปลงของชาวประมง

คำตอบ:


15

glmR2glmR2R2

RGLM2=1-(Σผมdผม,ม.โอdอีล.2)2/ยังไม่มีข้อความ(Σผมdผม,nยูล.ล.2)2/ยังไม่มีข้อความ        .=.        1-SSE/n[ม.โอdอีล.]SST/n[เสื้อโอเสื้อaล.]=ROLS2

มีการถกเถียงกันว่าการตีความ LHS เป็นอย่างไร แต่เฉพาะเมื่อตัวแบบออกจากสถานการณ์ Gaussian / OLS ที่ง่ายกว่า แต่ใน GLMs ที่ฟังก์ชั่นลิงก์อาจไม่เป็น "ตัวตน" เหมือนที่นี่และ "ข้อผิดพลาดกำลังสอง" อาจไม่มีการตีความที่ชัดเจนเหมือนกันดังนั้น Akaike Information Criterion จึงถูกรายงานเพราะมันดูเหมือนทั่วไปมากขึ้น มีผู้เข้าแข่งขันอีกหลายคนในการชิงโชค GLM GOF ที่ไม่มีผู้ชนะชัดเจน

R2


7
ที่ไหน "Nagelkerke-pseudo-" R2 "" ในเอาต์พุตข้างต้น?
ทอม

1
ฉันสะท้อนคำถามของทอม Nagelkerke-pseudo- "R2" อยู่ที่ไหน, หรือฉันจะหามันได้อย่างไร? ฉันไม่ได้กำลังมองหาข้อมูลเพิ่มเติมเกี่ยวกับค่า แต่จะหาได้จากเอาท์พุทของ R ไม่มีอะไรในตัวอย่างผลลัพธ์ของคำถามที่ดูเหมือนว่าฉันชอบคุณค่าที่พอดีในช่วง [0-1] ดังนั้นฉันจึงสับสน
Kevin - Reinstate Monica

ดูstats.stackexchange.com/questions/8511/ … และstackoverflow.com/questions/6242818/ ...... ฉันไม่เห็น R ^ 2 ใด ๆ ในวัตถุ glm หรือผลลัพธ์สรุป ฉันอาจคิดถึงผลลัพธ์ปกติจากฟังก์ชั่นการสรุป rms เนื่องจากเป็นสภาพแวดล้อมการสร้างแบบจำลองที่ฉันโปรดปราน
DWIN

9

ใช้ Null Deviance และ Residual Deviance โดยเฉพาะ:

1 - (Residual Deviance/Null Deviance)

หากคุณคิดเกี่ยวกับมันคุณกำลังพยายามวัดอัตราส่วนของความเบี่ยงเบนในแบบจำลองของคุณต่อค่าศูนย์ แบบจำลองของคุณนั้นดีแค่ไหน (ส่วนเบี่ยงเบนคงเหลือ) มากกว่าแค่จุดตัด (ค่าเบี่ยงเบนว่าง) หากอัตราส่วนนั้นเล็กคุณกำลัง 'อธิบาย' ความเบี่ยงเบนส่วนใหญ่เป็นโมฆะ 1 ลบที่ทำให้คุณได้ R-squared ของคุณ

ในอินสแตนซ์ของคุณคุณจะได้รับ. 998

หากคุณเพิ่งเรียกโมเดลเชิงเส้น (lm) แทน glm มันจะให้ค่า R-squared ในการสรุปอย่างชัดเจนและคุณจะเห็นว่ามันเป็นหมายเลขเดียวกัน


5

หากคุณกำลังใช้โมเดลโลจิสติกแบบไบนารีคุณสามารถรันการทดสอบ Hosmer Lemeshow Goodness of Fit ในโมเดล glm () ของคุณ การใช้ไลบรารี ResourceSelection

library(ResourceSelection)

model <- glm(tmpData$Y ~ tmpData$X1 + tmpData$X2 + tmpData$X3 + 
           as.numeric(tmpData$X4) + tmpData$X5 + tmpData$X6 + tmpData$X7, family = binomial)

summary(model)
hoslem.test(model$y, model$fitted)

แม้ว่าโปรดทราบว่านี่จะใช้งานได้เฉพาะกับตัวแปรที่ขึ้นกับไบนารี (เช่นถ้า OP ได้ตั้งไว้family = "binomialแล้วตัวอย่างของ OP คือการถดถอยเชิงเส้น
Matthew

@ แมทธิวนี่เป็นความจริงฉันขอโทษที่ฉันพลาดไป ฉันใช้การถดถอยแบบไบนารีของโลจิสติกส์เมื่อไม่นานมานี้สมองของฉันเพิ่งไปที่hoslem.test()
dylanjm

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