Làm cách nào tôi có thể sử dụng betas hồi quy logistic + dữ liệu thô để có xác suất


17

Tôi có một mô hình được trang bị (từ các tài liệu). Tôi cũng có dữ liệu thô cho các biến dự đoán.

Phương trình tôi nên sử dụng để có xác suất là gì? Về cơ bản, làm cách nào để kết hợp dữ liệu thô và hệ số để có xác suất?

Câu trả lời:


15

Dưới đây là câu trả lời của nhà nghiên cứu ứng dụng (sử dụng gói thống kê R).

Trước tiên, hãy tạo một số dữ liệu, tức là tôi đang mô phỏng dữ liệu cho mô hình hồi quy logistic bivariate đơn giản :tôiog(p1-p)= =β0+β1x

> set.seed(3124)
> 
> ## Formula for converting logit to probabilities 
> ## Source: http://www.statgun.com/tutorials/logistic-regression.html
> logit2prop <- function(l){exp(l)/(1+exp(l))}
> 
> ## Make up some data
> y <- rbinom(100, 1, 0.2)
> x <- rbinom(100, 1, 0.5)

Công cụ dự đoán xlà một biến nhị phân:

> x
  [1] 0 1 1 1 1 1 0 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 1 
 [48] 1 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 0 1 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0
 [95] 1 1 1 1 1 0

Thứ hai, ước tính đánh chặn ( ) và độ dốc ( ). Như bạn có thể thấy, phần chặn là và độ dốc là .β0β1β0= =-0,8690β1= =-1,0769

> ## Run the model
> summary(glm.mod <- glm(y ~ x, family = "binomial"))

[...]

    Coefficients:
            Estimate Std. Error z value Pr(>|z|)   
(Intercept)  -0.8690     0.3304  -2.630  0.00854 **
x            -1.0769     0.5220  -2.063  0.03910 * 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1)

[...]

Thứ ba, R, giống như hầu hết các gói thống kê, có thể tính toán các giá trị được trang bị, tức là xác suất. Tôi sẽ sử dụng các giá trị này làm tài liệu tham khảo.

> ## Save the fitted values
> glm.fitted <- fitted(glm.mod)

Thứ tư, bước này trực tiếp đề cập đến câu hỏi của bạn: Chúng tôi có dữ liệu thô (ở đây: ) và chúng tôi có các hệ số ( và ). Bây giờ, hãy tính toán các bản ghi và lưu các giá trị được trang bị này vào :xβ0β1glm.rcdm

> ## "Raw data + coefficients" method (RDCM)
## logit = -0.8690 + (-1.0769) * x
glm.rdcm <- -0.8690 + (-1.0769)*x

Bước cuối cùng là so sánh các giá trị được trang bị dựa trên R's fitted-feft ( glm.fitted) và phương pháp "làm bằng tay" của tôi ( logit2prop.glm.rdcm). Hàm riêng của tôi logit2prop(xem bước đầu tiên) chuyển đổi nhật ký thành xác suất:

> ## Compare fitted values and RDCM
> df <- data.frame(glm.fitted, logit2prop(glm.rdcm))
> df[10:25,]
> df[10:25,]
   glm.fitted logit2prop.glm.rdcm.
10  0.1250000            0.1250011
11  0.2954545            0.2954624
12  0.1250000            0.1250011
13  0.2954545            0.2954624
14  0.2954545            0.2954624
15  0.1250000            0.1250011
16  0.1250000            0.1250011
17  0.1250000            0.1250011
18  0.2954545            0.2954624
19  0.1250000            0.1250011
20  0.1250000            0.1250011
21  0.1250000            0.1250011
22  0.1250000            0.1250011
23  0.1250000            0.1250011
24  0.1250000            0.1250011
25  0.2954545            0.2954624

6
Lưu ý rằng glm(y ~ x)không cung cấp cho bạn một hồi quy logistic, Bạn phải thiết lập family=binomial(link="logit"). Lưu ý đầu ra nói Dispersion parameter for gaussian family, không binomial family. Nếu bạn làm đúng, fitted(glm.mod)thực sự trả về xác suất ước tính, không phải là nhật ký. Bạn nhận được các bản ghi với predict(glm.mod, type="link").
caracal

Aua! Tôi đã sửa nó. Cảm ơn rất nhiều, @caracal, đã sửa lỗi cho tôi! Điều này thực sự đáng xấu hổ (thậm chí còn xấu hổ hơn vì tôi đã đưa ra câu trả lời đúng trong một chủ đề SO khác ).
Bernd Weiss

1
nhánh gói có hàm invlogit, đó là hàm logit2prop của bạn.
Manoel Galdino

Chúng ta không nên có được chính xác các số tương tự cho glm.fittedlogit2prop.glm.rdcm.? Có một số khác biệt rất nhỏ. Tôi không thể hiểu tại sao chúng ta không có chính xác những con số giống nhau trong ví dụ của bạn. Khi tôi kiểm tra; library(arm); data.frame(logit2prop(glm.rdcm), invlogit(glm.rdcm))tạo ra kết quả chính xác như nhau cho logit2propinvlogit. Do đó, bằng nhau, tôi hỏi tại sao glm.fittedinvlogittrả lại không phải là cùng một số chính xác?
Erdogan CEVHER

20

f:xđăng nhậpx1-xg:xđiểm kinh nghiệmx1+điểm kinh nghiệmx

π

f(π)= =β0+x1β1+x2β2+Giáo dục

Do đó, nếu bạn muốn bạn cần đánh giá ở phía bên tay phải:πg

π= =g(β0+x1β1+x2β2+Giáo dục)


Làm thế nào về hồi quy logistic thường? Điều gì sẽ là logic sau đó?
dùng333

@ user333: Chà ... Tôi chưa chơi nhiều với hồi quy logistic thông thường ... nhưng tôi nghĩ người ta sử dụng cùng một chức năng liên kết. Trong mọi trường hợp, logic là như nhau: nghịch đảo chức năng liên kết để có được biến phản hồi ...
ocram

vâng ... nhưng làm thế nào để tôi biết xác suất nào được ánh xạ tới các loại mục tiêu?
dùng333

@ user333, câu hỏi của bạn là về hồi quy logistic, nếu bạn cũng muốn câu trả lời về hồi quy thứ tự, vui lòng thêm câu hỏi đó vào câu hỏi.
mpiktas
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.