ฟังก์ชั่นนี้ทำงานอย่างไร:
โดยพื้นฐานแล้วฟังก์ชั่นนี้จะสร้างข้อมูลการตอบกลับปลอม (เช่น ) ข้อมูลใหม่จากแบบจำลองข้อมูลของคุณ รูปแบบที่ใช้อยู่เป็นแบบจำลองมาตรฐานที่ใช้บ่อย ตามธรรมเนียมสมมติว่าข้อมูล * ของคุณเป็นค่าคงที่ที่รู้จักกัน - มันไม่ได้ถูกสุ่มตัวอย่าง แต่อย่างใด สิ่งที่ฉันเห็นว่าเป็นคุณสมบัติที่สำคัญของฟังก์ชั่นนี้คือมันผสมผสานความไม่แน่นอนเกี่ยวกับพารามิเตอร์ที่ประมาณไว้ XYX
* โปรดทราบว่าคุณต้องเพิ่มเวกเตอร์เป็นคอลัมน์ซ้ายสุดของเมทริกซ์ของคุณด้วยตนเองก่อนที่จะป้อนข้อมูลลงในฟังก์ชันเว้นแต่คุณต้องการระงับการสกัดกั้น (ซึ่งโดยทั่วไปไม่ใช่ความคิดที่ดี)X1X
จุดประสงค์ของฟังก์ชั่นนี้คืออะไร:
ฉันไม่รู้จริงๆ มันอาจเป็นส่วนหนึ่งของกิจวัตรประจำวันของเบย์เซียน MCMC แต่มันจะเป็นเพียงชิ้นเดียว - คุณจะต้องมีรหัสเพิ่มเติมที่อื่นเพื่อทำการวิเคราะห์แบบเบย์ ฉันไม่รู้สึกว่ามีความเชี่ยวชาญเพียงพอเกี่ยวกับวิธีการแบบเบย์ในการแสดงความคิดเห็นอย่างชัดเจนเกี่ยวกับเรื่องนี้ แต่ฟังก์ชั่นไม่ได้ 'รู้สึก' กับฉันเหมือนสิ่งที่มักจะใช้
มันอาจถูกนำมาใช้ในการวิเคราะห์การใช้พลังงานแบบจำลอง (ดูคำตอบของฉันที่นี่: การจำลองการวิเคราะห์การถดถอยของพลังงานแบบลอจิสติก - การทดลองที่ออกแบบมาสำหรับข้อมูลเกี่ยวกับสิ่งประเภทนี้) เป็นเรื่องที่น่าสังเกตว่าการวิเคราะห์พลังงานขึ้นอยู่กับข้อมูลก่อนหน้านี้ซึ่งไม่คำนึงถึงความไม่แน่นอน ในแง่ดี. (ฉันพูดถึงประเด็นนี้ที่นี่: ขนาดผลที่ต้องการกับขนาดผลที่คาดหวัง )
หากคุณต้องการใช้ฟังก์ชั่นนี้:
เนื่องจาก @whuber บันทึกในความคิดเห็นฟังก์ชันนี้จะไม่มีประสิทธิภาพ หากคุณต้องการใช้สิ่งนี้เพื่อวิเคราะห์พลังงาน (เช่น) ฉันจะแบ่งฟังก์ชั่นออกเป็นสองฟังก์ชั่นใหม่ ครั้งแรกที่จะอ่านในข้อมูลของคุณและส่งออกพารามิเตอร์และความไม่แน่นอน ฟังก์ชั่นใหม่ที่สองจะสร้างข้อมูลpseudorandomใหม่ ต่อไปนี้เป็นตัวอย่าง (แม้ว่าอาจเป็นไปได้ในการปรับปรุงเพิ่มเติม): Y
simulationParameters <- function(Y,X) {
# Y is a vector of binary responses
# X is a design matrix, you don't have to add a vector of 1's
# for the intercept
X <- cbind(1, X) # this adds the intercept for you
fit <- glm.fit(X,Y, family = binomial(link = logit))
beta <- coef(fit)
fs <- summary.glm(fit)
M <- t(chol(fs$cov.unscaled))
return(list(betas=beta, uncertainties=M))
}
simulateY <- function(X, betas, uncertainties, ncolM, N){
# X <- cbind(1, X) # it will be slightly faster if you input w/ 1's
# ncolM <- ncol(uncertainties) # faster if you input this
betastar <- betas + uncertainties %*% rnorm(ncolM)
p <- 1/(1 + exp(-(X %*% betastar)))
return(rbinom(N, size=1, prob=p))
}