พิจารณาพล็อตด้านล่างที่ฉันจำลองข้อมูลดังนี้ เราดูผลลัพธ์แบบไบนารีซึ่งความน่าจะเป็นที่แท้จริงที่จะเป็น 1 ถูกระบุด้วยเส้นสีดำ ความสัมพันธ์การทำงานระหว่าง covariateและคือพหุนามลำดับที่ 3 ที่มีลิงค์โลจิสติก (ดังนั้นจึงไม่ใช่เชิงเส้นในสองทาง)
เส้นสีเขียวคือการถดถอยโลจิสติก GLM โดยที่ถูกนำมาใช้เป็นพหุนามลำดับที่ 3 เส้นสีเขียวประคือช่วงความมั่นใจ 95% รอบการคาดการณ์โดยที่สัมประสิทธิ์การถดถอยที่พอดี ฉันใช้และสำหรับสิ่งนี้R
glm
predict.glm
บรรทัด pruple เป็นค่าเฉลี่ยของช่วงหลังที่น่าเชื่อถือ 95% สำหรับของแบบจำลองการถดถอยโลจิสติกแบบเบย์โดยใช้เครื่องแบบก่อนหน้า ฉันใช้แพคเกจพร้อมฟังก์ชั่นสำหรับสิ่งนี้ (การตั้งค่าให้ความรู้เบื้องต้นที่ไม่เหมือนกันมาก่อน)MCMCpack
MCMClogit
B0=0
จุดสีแดงหมายถึงการสังเกตในชุดข้อมูลที่ , จุดสีดำมีข้อสังเกตกับ 0 โปรดทราบว่าเป็นเรื่องธรรมดาในการจัดหมวดหมู่ / การวิเคราะห์ต่อเนื่องแต่ไม่เป็นที่สังเกต
สามารถเห็นได้หลายสิ่ง:
- ฉันจำลองจุดประสงค์ว่ากระจัดกระจายบนมือซ้าย ฉันต้องการความมั่นใจและความน่าเชื่อถือในช่วงเวลาที่กว้างเนื่องจากขาดข้อมูล (การสังเกต)
- การคาดการณ์ทั้งสองจะเอนเอียงขึ้นด้านซ้าย ความเอนเอียงนี้เกิดจากจุดสีแดงทั้งสี่ที่แสดงถึงการสังเกตซึ่งเป็นการชี้ให้เห็นอย่างผิด ๆ ว่ารูปแบบการใช้งานจริงจะขึ้นไปที่นี่ อัลกอริทึมมีข้อมูลไม่เพียงพอที่จะสรุปว่ารูปแบบการทำงานที่แท้จริงนั้นโค้งงอลง
- ช่วงความเชื่อมั่นได้รับในวงกว้างตามที่คาดไว้ในขณะที่ช่วงเวลาที่น่าเชื่อถือไม่ได้ ในความเป็นจริงช่วงความมั่นใจปิดล้อมพื้นที่พารามิเตอร์ทั้งหมดตามที่ควรเนื่องจากขาดข้อมูล
ดูเหมือนว่าช่วงเวลาที่มีความน่าเชื่อถือเป็นสิ่งที่ผิด / แง่ดีเกินไปที่นี่เพื่อเป็นส่วนหนึ่งของxมันเป็นพฤติกรรมที่ไม่พึงประสงค์จริงๆสำหรับช่วงเวลาที่น่าเชื่อถือเพื่อให้แคบลงเมื่อข้อมูลเบาบางหรือขาดหายไปอย่างสมบูรณ์ โดยปกติแล้วนี่ไม่ใช่วิธีที่ช่วงเวลาที่น่าเชื่อถือตอบสนอง ใครสามารถอธิบาย:
- อะไรคือสาเหตุของสิ่งนี้
- ฉันสามารถทำตามขั้นตอนใดบ้างเพื่อให้ช่วงเวลาที่น่าเชื่อถือดีขึ้น (นั่นคือหนึ่งที่ล้อมรอบอย่างน้อยรูปแบบการทำงานจริงหรือดีกว่าได้รับกว้างเท่ากับช่วงความเชื่อมั่น)
รหัสที่จะได้รับช่วงเวลาการทำนายในภาพกราฟิกจะถูกพิมพ์ที่นี่:
fit <- glm(y_obs ~ x + I(x^2) + I(x^3), data=data, family=binomial)
x_pred <- seq(0, 1, by=0.01)
pred <- predict(fit, newdata = data.frame(x=x_pred), se.fit = T)
plot(plogis(pred$fit), type='l')
matlines(plogis(pred$fit + pred$se.fit %o% c(-1.96,1.96)), type='l', col='black', lty=2)
library(MCMCpack)
mcmcfit <- MCMClogit(y_obs ~ x + I(x^2) + I(x^3), data=data, family=binomial)
gibbs_samps <- as.mcmc(mcmcfit)
x_pred_dm <- model.matrix(~ x + I(x^2) + I(x^3), data=data.frame('x'=x_pred))
gibbs_preds <- apply(gibbs_samps, 1, `%*%`, t(x_pred_dm))
gibbs_pis <- plogis(apply(gibbs_preds, 1, quantile, c(0.025, 0.975)))
matlines(t(gibbs_pis), col='red', lty=2)
การ เข้าถึงข้อมูล : https://pastebin.com/1H2iXiew ขอบคุณ @DeltaIV และ @AdamO
dput
ใน dataframe ที่มีข้อมูลและรวมdput
เอาท์พุทเป็นรหัสในโพสต์ของคุณ