วิธีแยกค่าสัมประสิทธิ์การถดถอยจาก glm() ใน r


คุณสามารถใช้วิธีการต่อไปนี้เพื่อแยกค่าสัมประสิทธิ์การถดถอยจากฟังก์ชัน glm() ใน R:

วิธีที่ 1: แยกค่าสัมประสิทธิ์การถดถอยทั้งหมด

 model$coefficients

วิธีที่ 2: แยกค่าสัมประสิทธิ์การถดถอยสำหรับตัวแปรเฉพาะ

 model$coefficients[' my_variable ']

วิธีที่ 3: แยกค่าสัมประสิทธิ์การถดถอยทั้งหมดที่มีข้อผิดพลาดมาตรฐาน ค่า Z และค่า P

 summary(model)$coefficients

ตัวอย่างต่อไปนี้แสดงวิธีการใช้วิธีการเหล่านี้ในทางปฏิบัติ

ตัวอย่าง: แยกค่าสัมประสิทธิ์การถดถอยจาก glm() ใน R

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

 #load dataset
data <- ISLR::Default

#view first six rows of data
head(data)

  default student balance income
1 No No 729.5265 44361.625
2 No Yes 817.1804 12106.135
3 No No 1073.5492 31767.139
4 No No 529.2506 35704.494
5 No No 785.6559 38463.496
6 No Yes 919.5885 7491.559

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

#view summary of logistic regression model
summary(model)

Call:
glm(formula = default ~ student + balance + 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 ***
studentYes -6.468e-01 2.363e-01 -2.738 0.00619 ** 
balance 5.737e-03 2.319e-04 24.738 < 2e-16 ***
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

เราสามารถพิมพ์ model$coefficients เพื่อแยกค่าสัมประสิทธิ์การถดถอยทั้งหมดออกจากโมเดล:

 #extract all regression coefficients
model$coefficients

  (Intercept) studentYes balance income 
-1.086905e+01 -6.467758e-01 5.736505e-03 3.033450e-06

นอกจากนี้เรายังสามารถพิมพ์ model$coefficients[‘balance’] เพื่อแยกค่าสัมประสิทธิ์การถดถอยสำหรับตัวแปร balance เท่านั้น:

 #extract coefficient for 'balance'
model$coefficients[' balance ']

balance 
0.005736505

ในการแสดงค่าสัมประสิทธิ์การถดถอยพร้อมกับข้อผิดพลาดมาตรฐาน ค่า z และ ค่า p เราสามารถใช้ ค่าสัมประสิทธิ์การสรุป (แบบจำลอง)$ ได้ดังต่อไปนี้:

 #view regression coefficients with standard errors, z values and p-values
summary(model)$coefficients

                 Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.086905e+01 4.922555e-01 -22.080088 4.911280e-108
studentYes -6.467758e-01 2.362525e-01 -2.737646 6.188063e-03
balance 5.736505e-03 2.318945e-04 24.737563 4.219578e-135
income 3.033450e-06 8.202615e-06 0.369815 7.115203e-01

เรายังสามารถเข้าถึงค่าเฉพาะในเอาต์พุตนี้ได้

ตัวอย่างเช่น เราสามารถใช้โค้ดต่อไปนี้เพื่อเข้าถึงค่า p ของตัวแปร balance :

 #view p-value for balance variable
summary(model)$coefficients[' balance ', ' Pr(>|z|) ']

[1] 4.219578e-135

หรือเราสามารถใช้โค้ดต่อไปนี้เพื่อเข้าถึงค่า p สำหรับแต่ละค่าสัมประสิทธิ์การถดถอย:

 #view p-value for all variables
summary(model)$coefficients[, ' Pr(>|z|) ']

  (Intercept) studentYes balance income 
4.911280e-108 6.188063e-03 4.219578e-135 7.115203e-01 

ค่า P จะแสดงสำหรับแต่ละสัมประสิทธิ์การถดถอยในแบบจำลอง

คุณสามารถใช้ไวยากรณ์ที่คล้ายกันเพื่อเข้าถึงค่าใดๆ ในเอาต์พุตได้

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

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

วิธีดำเนินการถดถอยเชิงเส้นอย่างง่ายใน R
วิธีดำเนินการถดถอยเชิงเส้นพหุคูณใน R
วิธีดำเนินการถดถอยโลจิสติกใน R
วิธีดำเนินการถดถอยกำลังสองใน R

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

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