फ़ंक्शन क्या करता है:
संक्षेप में, फ़ंक्शन आपके डेटा के एक मॉडल से नया छद्म आयामी प्रतिक्रिया (यानी, ) डेटा उत्पन्न करता है । उपयोग किया जा रहा मॉडल एक मानक लगातार मॉडल है। जैसा कि प्रथागत है, यह मान रहा है कि आपके * डेटा ज्ञात स्थिरांक हैं - वे किसी भी तरह से नमूना नहीं हैं। मैं इस फ़ंक्शन की महत्वपूर्ण विशेषता के रूप में देखता हूं कि यह अनुमानित मापदंडों के बारे में अनिश्चितता को शामिल कर रहा है। Yएक्स
* ध्यान दें कि आपको फ़ंक्शन को इनपुट करने से पहले अपने मैट्रिक्स के बाएं कॉलम के रूप में वेक्टर को मैन्युअल रूप से जोड़ना होगा , जब तक कि आप इंटरसेप्ट को दबाना नहीं चाहते (जो आमतौर पर एक अच्छा विचार नहीं है)।1एक्स
इस समारोह का क्या मतलब था:
मैं ईमानदारी से नहीं जानता। यह एक बायेसियन 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))
}