R에서 glm에 대한 r 제곱을 계산하는 방법


선형 회귀 모델을 피팅할 때 모델이 데이터에 얼마나 잘 맞는지 평가하기 위해 R-제곱을 사용하는 경우가 많습니다.

R 제곱은 회귀 모델의 예측 변수로 설명할 수 있는 응답 변수 의 분산 비율을 나타냅니다.

이 숫자의 범위는 0에서 1까지이며, 값이 높을수록 모델 적합도가 더 우수함을 나타냅니다.

그러나 로지스틱 회귀 모형, 포아송 회귀 모형 등 일반 선형 모형에는 R 제곱 값이 없습니다.

대신 McFadden의 R-Squared 라는 측정항목을 계산할 수 있습니다. 범위는 0부터 1 바로 아래까지이며, 값이 높을수록 모델 적합도가 더 우수함을 나타냅니다.

McFadden의 R 제곱을 계산하려면 다음 공식을 사용합니다.

McFadden의 R-제곱 = 1 – (로그 우도 모델 / 로그 우도 0 )

금:

  • 로그 우도 모델 : 현재 적합 모델의 로그 우도 값
  • zero log Likelihood : 널 모델의 로그 우도 값(절편만 있는 모델)

실제로 0.40 이상의 값은 모델이 데이터에 매우 잘 맞는다는 것을 나타냅니다.

다음 예에서는 R의 로지스틱 회귀 모델에 대한 McFadden의 R 제곱을 계산하는 방법을 보여줍니다.

예: R에서 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

다음으로, 다음 공식을 사용하여 이 모델에 대한 McFadden의 R 제곱 값을 계산합니다.

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

[1] 0.4619194

McFadden의 R 제곱 값은 0.4619194 입니다. 이 값은 상당히 높으며, 이는 우리 모델이 데이터에 잘 부합하고 예측력이 높다는 것을 나타냅니다.

또한 pscl 패키지의 pR2() 함수를 사용하여 모델의 McFadden R-제곱 값을 계산할 수도 있습니다.

 #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에서 R 제곱을 계산하는 방법
R에서 조정된 R-제곱을 계산하는 방법
좋은 R 제곱 값이란 무엇입니까?

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다