ฉันมีโมเดลติดตั้งแล้ว (จากวรรณกรรม) ฉันยังมีข้อมูลดิบสำหรับตัวแปรทำนาย
สมการที่ฉันควรใช้เพื่อให้ได้ความน่าจะเป็นคืออะไร โดยพื้นฐานแล้วฉันจะรวมข้อมูลดิบและสัมประสิทธิ์เข้ากับความน่าจะเป็นได้อย่างไร
ฉันมีโมเดลติดตั้งแล้ว (จากวรรณกรรม) ฉันยังมีข้อมูลดิบสำหรับตัวแปรทำนาย
สมการที่ฉันควรใช้เพื่อให้ได้ความน่าจะเป็นคืออะไร โดยพื้นฐานแล้วฉันจะรวมข้อมูลดิบและสัมประสิทธิ์เข้ากับความน่าจะเป็นได้อย่างไร
คำตอบ:
นี่คือคำตอบของนักวิจัยที่ใช้ (โดยใช้แพคเกจสถิติ R)
อันดับแรกเรามาสร้างข้อมูลบางอย่างนั่นคือฉันกำลังจำลองข้อมูลสำหรับแบบจำลองการถดถอยโลจิสติกแบบไบวาเรียแบบง่าย:
> 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)
ตัวทำนายx
เป็นตัวแปรแบบแบ่งขั้ว:
> 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
ประการที่สองการประเมินตัด ( ) และความลาดชัน ( β 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)
[...]
ประการที่สาม R เช่นเดียวกับแพคเกจสถิติส่วนใหญ่สามารถคำนวณค่าติดตั้งเช่นความน่าจะเป็น ฉันจะใช้ค่าเหล่านี้เป็นข้อมูลอ้างอิง
> ## Save the fitted values
> glm.fitted <- fitted(glm.mod)
glm.rcdm
> ## "Raw data + coefficients" method (RDCM)
## logit = -0.8690 + (-1.0769) * x
glm.rdcm <- -0.8690 + (-1.0769)*x
ขั้นตอนสุดท้ายคือการเปรียบเทียบค่าติดตั้งตาม R's fitted
-function ( glm.fitted
) และวิธีการ "ทำด้วยมือ" ของฉัน ( logit2prop.glm.rdcm
) ฟังก์ชั่นของฉันเองlogit2prop
(ดูขั้นตอนแรก) แปลงการบันทึกเป็นความน่าจะเป็น:
> ## 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
glm.fitted
และlogit2prop.glm.rdcm.
? มีความแตกต่างเล็ก ๆ น้อยมาก ฉันไม่สามารถเข้าใจได้ว่าทำไมเราถึงไม่มีหมายเลขเดียวกันในตัวอย่างของคุณ เมื่อฉันตรวจสอบ; library(arm); data.frame(logit2prop(glm.rdcm), invlogit(glm.rdcm))
ก่อให้เกิดผลลัพธ์เดียวกันว่าสำหรับและlogit2prop
invlogit
ดังนั้นอย่างเท่าเทียมกันฉันถามว่าทำไมglm.fitted
และinvlogit
ส่งกลับตัวเลขที่ไม่เหมือนกันหรือไม่
glm(y ~ x)
family=binomial(link="logit")
หมายเหตุ: การส่งออกกล่าวว่าไม่Dispersion parameter for gaussian family
binomial family
ถ้าคุณทำถูกต้องfitted(glm.mod)
จริง ๆ แล้วส่งคืนความน่าจะเป็นโดยประมาณไม่ใช่การบันทึก คุณจะได้รับ logitspredict(glm.mod, type="link")
ด้วย