मुझे कौन सा बूटस्ट्रैप्ड प्रतिगमन मॉडल चुनना चाहिए?


10

मेरे पास एक बाइनरी लॉजिस्टिक रिग्रेशन मॉडल है DV (बीमारी: हाँ / नहीं) और 5 भविष्यवक्ता (जनसांख्यिकी [आयु, लिंग, तंबाकू धूम्रपान) (हाँ / नहीं)], एक मेडिकल इंडेक्स (क्रमिक) और एक यादृच्छिक उपचार [हाँ / नहीं ])। मैंने सभी दो तरफा बातचीत की शर्तों को भी रखा है। मुख्य चर केंद्रित हैं और मल्टीकोलिनरिटी (सभी वीआईएफ <2.5) का कोई संकेत नहीं है।

मेरे कुछ सवाल है:

  1. क्या मेरे एकल मॉडल पर बूटस्ट्रैपिंग लाभप्रद है? यदि ऐसा है तो,

  2. मुझे कौन सा बूटस्ट्रैप्ड मॉडल चुनना चाहिए? मैं बस यह देखना चाहता था कि बूटस्ट्रैपिंग एल्गोरिदम नए नमूने बनाने के लिए यादृच्छिक तरीकों का पालन करता है, या यदि उनके पास कठोर एल्गोरिदम हैं। इसलिए, मैं प्रत्येक प्रयास में 1000 बार के लिए फिर से तैयार हुआ (इसलिए मेरे पास कई बूटस्ट्रैप मॉडल हैं, प्रत्येक 1000 परीक्षणों के साथ)। हालांकि, हर बार बूटस्ट्रैप्ड मॉडल के गुणांक भिन्न होते हैं (हालांकि परीक्षणों की संख्या लगातार 1000 है)। इसलिए मुझे आश्चर्य है कि मुझे अपनी रिपोर्ट में से किसे चुनना चाहिए? कुछ परिवर्तन छोटे होते हैं और मेरे गुणांक के महत्व को प्रभावित नहीं करते हैं, लेकिन कुछ मेरे गुणांक को गैर-महत्वपूर्ण बनाते हैं (केवल मूल मॉडल में 0.0 मान के करीब वाले मान जो उदाहरण के लिए 0.06 में बदल जाते हैं)।

  3. क्या मुझे 10,000 जैसी उच्च संख्या चुननी चाहिए? मैं इस सीमा को कैसे निर्धारित कर सकता हूं?

  4. क्या मुझे पहली बार बूटस्ट्रैप करना चाहिए? यदि इसके परिणाम हर बार बदलते हैं, तो क्या मैं इसके परिणामों पर भरोसा कर सकता हूं?

  5. क्या आपके पास कोई अन्य विचार है जो मेरे मामले में मेरी मदद कर सकता है?

बहुत बहुत शुक्रिया।

जवाबों:


21

बूटस्ट्रैपिंग आपके प्रतिगमन गुणांक के नमूना वितरण का अनुमान लगाने के लिए एक पुन: नमूनाकरण विधि है और इसलिए आपके प्रतिगमन गुणांक के मानक त्रुटियों / विश्वास अंतराल की गणना करता है। इस पोस्ट की अच्छी व्याख्या है। आपको कितने प्रतिकृति की आवश्यकता है, इस चर्चा के लिए, इस पोस्ट को देखें

  1. नॉनपामेट्रिक बूटस्ट्रैप बार-बार बदलता है और बेतरतीब ढंग से आपकी टिप्पणियों को प्रतिस्थापन के साथ खींचता है (यानी कुछ टिप्पणियों को केवल एक बार, दूसरों को कई बार और कुछ कभी नहीं खींचा जाता है), फिर लॉजिस्टिक प्रतिगमन की गणना करता है और गुणांक को संग्रहीत करता है। यह दोहराया जाता हैnबार। तो आप 10'000 विभिन्न प्रतिगमन गुणांक के साथ समाप्त करेंगे। ये 10'000 गुणांक तब उनके विश्वास itnervals की गणना करने के लिए इस्तेमाल किया जा सकता है। जैसा कि एक छद्म यादृच्छिक संख्या जनरेटर का उपयोग किया जाता है, आप केवल यह सुनिश्चित करने के लिए बीज को एक मनमाना संख्या में सेट कर सकते हैं कि आपके पास हर बार समान परिणाम हैं (नीचे उदाहरण देखें)। वास्तव में स्थिर अनुमान लगाने के लिए, मैं 1000 से अधिक प्रतिकृति का सुझाव दूंगा, शायद 10'000। आप कई बार बूटस्ट्रैप को चला सकते हैं और देख सकते हैं कि क्या अनुमान 1000 या 10'000 प्रतिकृति के अनुसार बदलते हैं। सादे अंग्रेजी में: जब तक आप अभिसरण तक नहीं पहुंच जाते तब तक आपको प्रतिकृति लेनी चाहिए। यदि आपका बूटस्ट्रैप अनुमान आपके अनुमानों और देखे गए एकल मॉडल के बीच भिन्न होता है, तो यह संकेत कर सकता है कि मनाया मॉडल उचित रूप से आपके नमूने की संरचना को प्रतिबिंबित नहीं करता है।bootR, उदाहरण के लिए, "पूर्वाग्रह" को बाहर रखता है जो आपके एकल मॉडल के प्रतिगमन गुणांक और बूटस्ट्रैप नमूनों के बीच का अंतर है।
  2. बूटस्ट्रैप का प्रदर्शन करते समय, आप एक बूटस्ट्रैप नमूने में रुचि नहीं रखते हैं, लेकिन 10'000 बूटस्ट्रैप के नमूनों के बजाए आंकड़ों (जैसे प्रतिगमन गुणांक) के वितरण में।
  3. मैं कहता हूँ कि 10'000 1000 से बेहतर है। आधुनिक कंप्यूटर के साथ, यह एक समस्या नहीं होनी चाहिए। नीचे दिए गए उदाहरण में, 10'000 नमूनों को खींचने में मेरे पीसी को लगभग 45 सेकंड का समय लगा। यह आपके नमूना आकार के साथ बदलता रहता है। आपका नमूना आकार जितना बड़ा होगा, पुनरावृत्तियों की संख्या उतनी ही अधिक होनी चाहिए ताकि यह सुनिश्चित हो सके कि हर अवलोकन को ध्यान में रखा जाए।
  4. "हर बार परिणाम भिन्न होने" का क्या मतलब है? याद रखें कि हर बूटस्ट्रैप चरण में, प्रतिस्थापन के साथ अवलोकन नए हैं। इसलिए, आप थोड़े अलग प्रतिगमन गुणांक के साथ समाप्त होने की संभावना रखते हैं क्योंकि आपके अवलोकन भिन्न होते हैं। लेकिन जैसा कि मैंने कहा है: आप वास्तव में एकल बूटस्ट्रैप नमूने के परिणाम में रुचि नहीं रखते हैं। जब आपके प्रतिकृति की संख्या काफी अधिक होती है, तो बूटस्ट्रैप को हर बार बहुत समान आत्मविश्वास अंतराल और बिंदु अनुमान लगाना चाहिए।

यहाँ एक उदाहरण है R:

library(boot)

mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")

head(mydata)

mydata$rank <- factor(mydata$rank)

my.mod <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")

summary(my.mod)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -3.989979   1.139951  -3.500 0.000465 ***
gre          0.002264   0.001094   2.070 0.038465 *  
gpa          0.804038   0.331819   2.423 0.015388 *  
rank2       -0.675443   0.316490  -2.134 0.032829 *  
rank3       -1.340204   0.345306  -3.881 0.000104 ***
rank4       -1.551464   0.417832  -3.713 0.000205 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

# Set up the non-parametric bootstrap

logit.bootstrap <- function(data, indices) {

  d <- data[indices, ]
  fit <- glm(admit ~ gre + gpa + rank, data = d, family = "binomial")

  return(coef(fit))
}

set.seed(12345) # seed for the RNG to ensure that you get exactly the same results as here

logit.boot <- boot(data=mydata, statistic=logit.bootstrap, R=10000) # 10'000 samples

logit.boot

Bootstrap Statistics :
        original        bias    std. error
t1* -3.989979073 -7.217244e-02 1.165573039
t2*  0.002264426  4.054579e-05 0.001146039
t3*  0.804037549  1.440693e-02 0.354361032
t4* -0.675442928 -8.845389e-03 0.329099277
t5* -1.340203916 -1.977054e-02 0.359502576
t6* -1.551463677 -4.720579e-02 0.444998099

# Calculate confidence intervals (Bias corrected ="bca") for each coefficient

boot.ci(logit.boot, type="bca", index=1) # intercept
95%   (-6.292, -1.738 )  
boot.ci(logit.boot, type="bca", index=2) # gre
95%   ( 0.0000,  0.0045 ) 
boot.ci(logit.boot, type="bca", index=3) # gpa
95%   ( 0.1017,  1.4932 )
boot.ci(logit.boot, type="bca", index=4) # rank2
95%   (-1.3170, -0.0369 )
boot.ci(logit.boot, type="bca", index=5) # rank3
95%   (-2.040, -0.629 )
boot.ci(logit.boot, type="bca", index=6) # rank4
95%   (-2.425, -0.698 )

बूटस्ट्रैप-ओपूत मूल प्रतिगमन गुणांक ("मूल") और उनके पूर्वाग्रह को प्रदर्शित करता है, जो मूल गुणांक और बूटस्ट्रैप्ड लोगों के बीच अंतर है। यह मानक त्रुटियाँ भी देता है। ध्यान दें कि वे मूल मानक त्रुटियों से थोड़ा बड़े हैं।

आत्मविश्वास अंतराल से, पूर्वाग्रह-सही ("बीकेए") आमतौर पर पसंद किए जाते हैं। यह मूल पैमाने पर विश्वास अंतराल देता है। बाधाओं के अनुपात के लिए आत्मविश्वास के अंतराल के लिए, बस आत्मविश्वास की सीमा का विस्तार करें।


सही जवाब के लिए धन्यवाद! :) मुझे इस तरह से जवाब दें: 1. मैं इसकी धारणा से थोड़ा परिचित था (कि यह 1000 अलग-अलग (resampled) मॉडल में 1000 विभिन्न गुणांक के लिए माध्य की गणना करने की कोशिश करता है। स्पष्ट करने के लिए धन्यवाद कि "पूर्वाग्रह" चीज और इस तरह के बदलाव होते हैं और हमें प्रयासों की संख्या में वृद्धि करनी चाहिए। :) 2.By "बूटस्ट्रैप्ड मॉडल" मेरा मतलब एक एकल प्रतिरूपित मॉडल नहीं था। हालाँकि, मेरा मतलब उन 1000 पुनरावृत्तियों से था। वास्तव में मैंने अपने मॉडल को 10 बार बूट किया है, प्रत्येक में 1000 पुनरावृत्तियों के लिए। इसलिए मेरे पास 10 बूटस्ट्रैप्ड मॉडल हैं।
विक

उनमें से प्रत्येक एक "अलग" परिणाम दिखाता है। लेकिन मैं 10,000 resamplings के साथ तीन या चार बूटस्ट्रैप्ड मॉडल की कोशिश करूंगा, यह देखने के लिए कि क्या पुनरावृत्तियों की संख्या 10,000 पर है, विभिन्न बूटस्ट्रैप्ड मॉडल (प्रत्येक 10000 के साथ) समान हैं या क्या मुझे 100000 और भी अधिक बढ़ाना चाहिए?
विक

@Vic आपकी टिप्पणी के लिए धन्यवाद। मैं 1000 पुनरावृत्तियों के साथ प्रत्येक 10 बूटस्ट्रैप नहीं करूंगा, लेकिन केवल 10'000 या उससे अधिक पुनरावृत्तियों (50'000?) के साथ एक ही कहूँगा। इससे आपको स्थिर अनुमान और विश्वास अंतराल मिलना चाहिए।
COOLSerdash

3. यकीन है कि एक समस्या नहीं है। मैं बस यह जानना चाहता था कि किस आधार पर किसी को उस नंबर को चुनना चाहिए? मुझे लगता है कि आधार यह हो सकता है कि अगर मैं 1000 के दो बूटस्ट्रैपिंग चलाता हूं, तो प्रत्येक प्रयास करता है और देखता है कि वे अलग-अलग हैं, इसका मतलब है कि मुझे इसके बजाय अधिक resampling परीक्षणों (उदाहरण के लिए 5000 या 10000) की आवश्यकता है।
विक

4. "आपका क्या मतलब है" परिणाम हर बार अलग-अलग होते हैं "? जब आपके प्रतिकृति की संख्या काफी अधिक होती है, तो बूटस्ट्रैप को बहुत ही समान अंतराल और हर बार अनुमान का अनुमान लगाना चाहिए।"
विक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.