Làm thế nào để tính toán pseudo-


46

Bài viết của Christopher Manning về hồi quy logistic trong R cho thấy hồi quy logistic trong R như sau:

ced.logr <- glm(ced.del ~ cat + follows + factor(class), 
  family=binomial)

Một số đầu ra:

> summary(ced.logr)
Call:
glm(formula = ced.del ~ cat + follows + factor(class),
    family = binomial("logit"))
Deviance Residuals:
Min            1Q    Median       3Q      Max
-3.24384 -1.34325   0.04954  1.01488  6.40094

Coefficients:
              Estimate Std. Error z value Pr(>|z|)
(Intercept)   -1.31827    0.12221 -10.787 < 2e-16
catd          -0.16931    0.10032  -1.688 0.091459
catm           0.17858    0.08952   1.995 0.046053
catn           0.66672    0.09651   6.908 4.91e-12
catv          -0.76754    0.21844  -3.514 0.000442
followsP       0.95255    0.07400  12.872 < 2e-16
followsV       0.53408    0.05660   9.436 < 2e-16
factor(class)2 1.27045    0.10320  12.310 < 2e-16
factor(class)3 1.04805    0.10355  10.122 < 2e-16
factor(class)4 1.37425    0.10155  13.532 < 2e-16
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 958.66 on 51 degrees of freedom
Residual deviance: 198.63 on 42 degrees of freedom
AIC: 446.10
Number of Fisher Scoring iterations: 4

Sau đó, ông đi vào một số chi tiết về cách giải thích các hệ số, so sánh các mô hình khác nhau, v.v. Khá hữu dụng.

Tuy nhiên, mô hình chiếm bao nhiêu phương sai? Một trang Stata về hồi quy logistic cho biết:

Về mặt kỹ thuật, không thể được tính toán theo cách tương tự trong hồi quy logistic như trong hồi quy OLS. Giả 2 R , trong hồi quy logistic, được định nghĩa là 1 - L 1R2R2 , trong đóL0đại diện cho khả năng ghi nhật ký cho mô hình "chỉ không đổi" vàL1là khả năng ghi nhật ký cho mô hình đầy đủ với hằng số và dự đoán.1L1L0L0L1

Tôi hiểu điều này ở cấp độ cao. Mô hình chỉ có hằng số sẽ không có bất kỳ tham số nào (chỉ có thuật ngữ chặn). Khả năng đăng nhập là thước đo mức độ chặt chẽ của các tham số phù hợp với dữ liệu. Trong thực tế, Manning loại gợi ý rằng sự lệch lạc có thể là . Có lẽ độ lệch null là hằng số duy nhất và độ lệch còn lại là - 2 log L của mô hình? Tuy nhiên, tôi không rõ ràng về nó.2logL2logL

Ai đó có thể xác minh làm thế nào ai thực sự tính toán pseudo- R sử dụng ví dụ này?R2


5
Các UCLA thường tuyệt vời trang tính toán thống kê đã thực hiện một lỗi hiếm ở đây - không nên có bất kỳ dấu ngoặc trong biểu thức cho pseudo- , tức là nó phải được 1 - L 1 / L 0 . (Xin lỗi vì đã không trả lời các truy vấn của bạn khi tôi chuẩn bị đi ngủ - Tôi chắc chắn sẽ có người khác trả lời câu hỏi này trước khi tôi đủ tỉnh táo để làm như vậy.)R21L1/L0
onestop 19/03

6
chl

3
Trang này thảo luận về một số giả 2 ^.
dfrankow

2
Lưu ý: câu hỏi liên quan không giống như bất kỳ giả 2 ^ nào, nhưng thích dự đoán kiểm tra chéo hoặc kiểm tra dự phòng.
dfrankow

Câu trả lời:


49

Đừng quên gói rms , bởi Frank Harrell. Bạn sẽ tìm thấy mọi thứ bạn cần để lắp và xác nhận GLM.

Dưới đây là một ví dụ về đồ chơi (chỉ có một người dự đoán):

set.seed(101)
n <- 200
x <- rnorm(n)
a <- 1
b <- -2
p <- exp(a+b*x)/(1+exp(a+b*x))
y <- factor(ifelse(runif(n)<p, 1, 0), levels=0:1)
mod1 <- glm(y ~ x, family=binomial)
summary(mod1)

Sản lượng này:

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)   0.8959     0.1969    4.55 5.36e-06 ***
x            -1.8720     0.2807   -6.67 2.56e-11 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 258.98  on 199  degrees of freedom
Residual deviance: 181.02  on 198  degrees of freedom
AIC: 185.02

Bây giờ, sử dụng lrmchức năng,

require(rms)
mod1b <- lrm(y ~ x)

R2print(mod1b)

Logistic Regression Model

lrm(formula = y ~ x)

                      Model Likelihood     Discrimination    Rank Discrim.    
                         Ratio Test            Indexes          Indexes       

Obs           200    LR chi2      77.96    R2       0.445    C       0.852    
 0             70    d.f.             1    g        2.054    Dxy     0.705    
 1            130    Pr(> chi2) <0.0001    gr       7.801    gamma   0.705    
max |deriv| 2e-08                          gp       0.319    tau-a   0.322    
                                           Brier    0.150                     


          Coef    S.E.   Wald Z Pr(>|Z|)
Intercept  0.8959 0.1969  4.55  <0.0001 
x         -1.8720 0.2807 -6.67  <0.0001 

R2=0.445(1exp(LR/n))/(1exp((2L0)/n))χ2R2LR=2L0R2=1

Bằng tay,

> mod0 <- update(mod1, .~.-x)
> lr.stat <- lrtest(mod0, mod1)
> (1-exp(-as.numeric(lr.stat$stats[1])/n))/(1-exp(2*as.numeric(logLik(mod0)/n)))
[1] 0.4445742
> mod1b$stats["R2"]
       R2 
0.4445742 

R2R2c


Bạn có thể vui lòng giải thích làm thế nào bạn thu được .445? Tôi đã sử dụng 1-exp (-77,96 / 200) nhưng tôi đã nhận được .323. Tôi đang làm gì sai? Cảm ơn.

2
Cái nào là Nagelkerke R2?
Jetlag

1
@JetLag Theo Chỉ số phân biệt đối xử, Nagelkerke được viết tắt là R2 (tức là 0,445). Bạn có thể kiểm tra điều này bằng hàm NagelkerkeR2 () từ gói fmsb.
Chernoff


7

R2

R2RM2=1lnL^fulllnL^nulllnL^fulllnL^full

R2

  1. deviance=2ln(Lfull)null.deviance=2ln(Lnull)

    pR2 = 1 - mod$deviance / mod$null.deviance # works for glm

Nhưng cách tiếp cận trên không hoạt động đối với Pseudo mẫuR2

  1. Sử dụng hàm "logLik" trong R và định nghĩa (cũng hoạt động cho trong mẫu)

    mod_null <- glm(y~1, family = binomial, data = insample) 1- logLik(mod)/logLik(mod_null)

Điều này có thể được sửa đổi một chút để tính toán Pseudo mẫuR2

Thí dụ:

giả mẫu ngoài mẫu

R2

Rp2=1Lest.outLnull.out,
Lest.outLnull.out

Mã:

pred.out.link <- predict(mod, outSample, type = "link") mod.out.null <- gam(Default~1, family = binomial, data = outSample) pR2.out <- 1 - sum(outSample$y * pred.out.link - log(1 + exp(pred.out.link))) / logLik(mod.out.null)


deviance=2ln(Lfull)model1 <- glm(cbind(ncases, ncontrols) ~ agegp + tobgp * alcgp, data = esoph, family = binomial)model1$deviance-2*logLik(model1)

6

nếu độ lệch tỷ lệ thuận với khả năng ghi nhật ký và người ta sử dụng định nghĩa (xem ví dụ của McFadden tại đây )

pseudo R^2 = 1 - L(model) / L(intercept)

R21198.63958.66

Câu hỏi là: được báo cáo sai lệch tỷ lệ thuận với khả năng đăng nhập?


3
Giả này R ^ 2 hoàn toàn không đồng ý với câu trả lời của Nagelkerke R ^ 2 trong câu trả lời của @ chl.
dfrankow

Deviance được định nghĩa là -2 * LL khi tôi còn đi học.
DWin

@dfrankow không đồng ý, vì Nagelkerke là một bản chuẩn hóa của Cox và Snell R2, khác với McFaddens R2.
colin

0

R2R2=1llfullllconstantllfullllconstant

R2R2=1i(yiy^i)2i(yiy¯train)2i(yiy¯train)2y¯traini(yiβ0)2β^0=y¯trainR2R2

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.