कैसे करें: बूटस्ट्रैपिंग के माध्यम से रैखिक प्रतिगमन के लिए पूर्वानुमान अंतराल


14

मुझे यह समझने में परेशानी हो रही है कि रेखीय प्रतिगमन मॉडल के लिए पूर्वानुमान अंतराल की गणना करने के लिए बूटस्ट्रैपिंग का उपयोग कैसे करें । क्या कोई चरण-दर-चरण प्रक्रिया को रेखांकित कर सकता है? मैंने Google के माध्यम से खोज की लेकिन कुछ भी वास्तव में मेरे लिए मायने नहीं रखता है।

मैं समझता हूं कि मॉडल मापदंडों के लिए आत्मविश्वास अंतराल की गणना के लिए बूटस्ट्रैपिंग का उपयोग कैसे करें।


1
यह एक स्पष्ट एल्गोरिथ्म (एल्गोरिथ्म 6.4) के साथ डेविसन और हिंकले, बूटस्ट्रैप विधियों और उनके आवेदन की पुस्तक में विस्तार से चर्चा की गई है । वे अवधारणाओं, नुकसान और विवरणों की व्याख्या करते हैं, जो एक उचित उत्तर में संभव है।
Glen_b -Reinstate Monica

@Glen_b संदर्भ के लिए धन्यवाद। दुर्भाग्य से मैं एक विश्वविद्यालय या कंपनी में नहीं हूं, इसलिए मेरे पास पुस्तक प्राप्त करने के लिए संसाधन नहीं हैं।
मैक्स

इसे अमेज़ॅन से ऑर्डर किया जा सकता है; एल्गोरिथ्म और सभी संबद्ध कैविट्स और मुद्दों का एक पूर्ण विवरण वास्तव में उस तरह का नहीं है जिसे आप कुछ सौ शब्दों या यहां तक ​​कि एक पृष्ठ के उत्तर में कवर कर सकते हैं।
ग्लेन_ब-22

1
@ गलेन_ बी ने मैंने डेविसन और एचइकली से एल्गोरिथ्म को लिखा --- इस बारे में सीवी पर कई सवाल हैं, इसलिए मुझे लगा कि यह प्रयास के लायक था। किसी भी टिप्पणी की सराहना की जाएगी। आंकड़े.stackexchange.com/questions/226565/…
बिल

यह धागा आपके प्रश्न का उत्तर देता है: आंकड़े.stackexchange.com/questions/226565/…
user2683832

जवाबों:


7

आत्मविश्वास अंतराल अनुमान अनिश्चितता को ध्यान में रखते हैं। भविष्यवाणी के अंतराल इस मौलिक अनिश्चितता को जोड़ते हैं। आर predict.lmआपको एक रैखिक मॉडल के लिए भविष्यवाणी अंतराल देगा। वहाँ से, आपको बस इसे बूटस्ट्रैप किए गए नमूनों पर बार-बार चलाना होगा।

n <- 100
n.bs <- 30

dat <- data.frame( x<-runif(n), y=x+runif(n) )
plot(y~x,data=dat)


regressAndPredict <- function( dat ) {
  model <- lm( y~x, data=dat )
  predict( model, interval="prediction" )
}

regressAndPredict(dat)

replicate( n.bs, regressAndPredict(dat[ sample(seq(n),replace=TRUE) ,]) )

परिणाम replicateएक 3-आयामी सरणी ( nx 3x n.bs) है। लंबाई 3 आयाम में प्रत्येक डेटा तत्व के लिए फिटेड मान होता है, और 95% पूर्वानुमान अंतराल के निचले / ऊपरी सीमा।

गैरी किंग विधि

आप जो चाहते हैं उसके आधार पर, किंग, टॉमज़ और विटेनबर्ग द्वारा एक शांत विधि है । इसे लागू करना अपेक्षाकृत आसान है, और कुछ अनुमानों (जैसे max(Y)) के लिए बूटस्ट्रैपिंग की समस्याओं से बचा जाता है ।

मैं यहाँ मौलिक अनिश्चितता की अपनी परिभाषा से उद्धृत करता हूँ, क्योंकि यह यथोचित है:

परिवर्तनशीलता का एक दूसरा रूप, समीकरण 1 में स्टोचैस्टिक घटक (वितरण एफ) द्वारा दर्शाए गए मौलिक संयुक्त-निश्चितता, मौसम या बीमारी जैसी असंख्य मौका घटनाओं के परिणाम जो प्रभावित कर सकते हैं- जो वाई को प्रभावित कर सकते हैं, लेकिन एक्स में शामिल नहीं हैं। हम मापदंडों के पूर्व-अधिनियम मूल्यों को जानते थे (जिससे एस्टी-मैशन अनिश्चितता को समाप्त कर दिया गया था), मौलिक अनिश्चितता हमें त्रुटि के बिना वाई की भविष्यवाणी करने से रोकती थी।


3
सुनिश्चित नहीं है कि आप n.bs पूर्वनिर्धारण अंतराल के इस मैट्रिक्स से एक विश्वास अंतराल कैसे बनाते हैं।
B_Miner 21

1

बूटस्ट्रैपिंग ने अंतर्निहित अभिभावक वितरण के रूप का कोई ज्ञान नहीं लिया है, जहां से नमूना उत्पन्न हुआ था। पारंपरिक शास्त्रीय सांख्यिकीय पैरामीटर अनुमान सामान्यता धारणा पर आधारित हैं। बूटस्ट्रैप गैर-सामान्यता से संबंधित है और शास्त्रीय तरीकों की तुलना में व्यवहार में अधिक सटीक है।

बूटस्ट्रैपिंग कठोर सैद्धांतिक विश्लेषण के लिए कंप्यूटर की कच्ची कंप्यूटिंग शक्ति को प्रतिस्थापित करता है। यह डेटा सेट त्रुटि शब्द के नमूने वितरण के लिए एक अनुमान है। बूटस्ट्रैपिंग में शामिल हैं: डेटा को फिर से नमूना करना, एक निर्दिष्ट संख्या निर्धारित करना, प्रत्येक नमूने से माध्य की गणना करना और माध्य की मानक त्रुटि का पता लगाना।

निम्नलिखित "R" कोड अवधारणा प्रदर्शित करता है:

यह व्यावहारिक उदाहरण बूटस्ट्रैपिंग की उपयोगिता को दर्शाता है और मानक त्रुटि का अनुमान लगाता है। आत्मविश्वास अंतराल की गणना करने के लिए मानक त्रुटि की आवश्यकता होती है।

मान लें कि आपके पास तिरछा डेटा सेट "a" है:

a<-rexp(395, rate=0.1)          # Create skewed data

तिरछे डेटा सेट का विज़ुअलाइज़ेशन

plot(a,type="l")                # Scatter plot of the skewed data
boxplot(a,type="l")             # Box plot of the skewed data
hist(a)                         # Histogram plot of the skewed data

बूटस्ट्रैपिंग प्रक्रिया करें:

n <- length(a)                  # the number of bootstrap samples should equal the original data set
    xbarstar <- c()                 # Declare the empty set “xbarstar” variable which will be holding the mean of every bootstrap iteration
    for (i in 1:1000) {             # Perform 1000 bootstrap iteration
        boot.samp <- sample(a, n, replace=TRUE) #”Sample” generates the same number of elements as the original data set
    xbarstar[i] <- mean(boot.samp)} # “xbarstar” variable  collects 1000 averages of the original data set
    ## 
    plot(xbarstar)                  # Scatter plot of the bootstrapped data
    boxplot(xbarstar)               # Box plot of the bootstrapped data
    hist(xbarstar)                  # Histogram plot of the bootstrapped data

    meanOfMeans <- mean(xbarstar)
    standardError <- sd(xbarstar)    # the standard error is the standard deviation of the mean of means
    confidenceIntervalAboveTheMean <- meanOfMeans + 1.96 * standardError # for 2 standard deviation above the mean 
    confidenceIntervalBelowTheMean <- meanOfMeans - 1.96 * standardError # for 2 standard deviation above the mean 
    confidenceInterval <- confidenceIntervalAboveTheMean + confidenceIntervalBelowTheMean
    confidenceInterval

1
उदाहरण के लिए रागी धन्यवाद। हालाँकि, मैं आपके उत्तर को देख सकता हूं, जिसमें बूटस्ट्रैप का उपयोग करते हुए पूर्वानुमान अंतराल की गणना शामिल नहीं थी। जैसा कि मैंने अपने उत्तर में कहा था कि मैं पहले से ही समझता हूं कि विश्वास अंतराल की गणना के लिए बूटस्ट्रैपिंग का उपयोग कैसे किया जाए - जो कि आपका कोड करता है।
अधिकतम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.