বুটস্ট্র্যাপের পূর্বাভাস ব্যবধান


29

লিনিয়ার রিগ্রেশন বা অন্যান্য রিগ্রেশন পদ্ধতি (কে-নিকটতম প্রতিবেশী, রিগ্রেশন ট্রি ইত্যাদি) থেকে প্রাপ্ত পয়েন্ট পূর্বাভাসের জন্য পূর্বাভাস অন্তরগুলি গণনা করার জন্য কি কোনও বুটস্ট্র্যাপ কৌশল উপলব্ধ?

একরকম আমি অনুভব করি যে মাঝে মাঝে প্রস্তাবিত উপায়টি কেবলমাত্র পয়েন্ট পূর্বাভাসকে বুটস্রেপ করার জন্য (যেমন কেএনএন রিগ্রেশন সম্পর্কিত প্রেডিকশন ইন্টারভালগুলি দেখুন ) কোনও পূর্বাভাস ব্যবধান নয় বরং একটি আত্মবিশ্বাসের ব্যবধান সরবরাহ করে।

আর একটি উদাহরণ

# STEP 1: GENERATE DATA

set.seed(34345)

n <- 100 
x <- runif(n)
y <- 1 + 0.2*x + rnorm(n)
data <- data.frame(x, y)


# STEP 2: COMPUTE CLASSIC 95%-PREDICTION INTERVAL
fit <- lm(y ~ x)
plot(fit) # not shown but looks fine with respect to all relevant aspects

# Classic prediction interval based on standard error of forecast
predict(fit, list(x = 0.1), interval = "p")
# -0.6588168 3.093755

# Classic confidence interval based on standard error of estimation
predict(fit, list(x = 0.1), interval = "c")
# 0.893388 1.54155


# STEP 3: NOW BY BOOTSTRAP
B <- 1000
pred <- numeric(B)
for (i in 1:B) {
  boot <- sample(n, n, replace = TRUE)
  fit.b <- lm(y ~ x, data = data[boot,])
  pred[i] <- predict(fit.b, list(x = 0.1))
}
quantile(pred, c(0.025, 0.975))
# 0.8699302 1.5399179

স্পষ্টতই, 95% বেসিক বুটস্ট্র্যাপ বিরতি 95% আত্মবিশ্বাসের ব্যবধানের সাথে মেলে, 95% পূর্বাভাস ব্যবধানের সাথে নয়। সুতরাং আমার প্রশ্ন: কীভাবে এটি সঠিকভাবে করবেন?


কমপক্ষে সাধারণ সর্বনিম্ন বর্গক্ষেত্রের ক্ষেত্রে, আপনার কেবলমাত্র বিন্দু পূর্বাভাসের চেয়ে বেশি প্রয়োজন; পূর্বাভাস অন্তরগুলিও তৈরি করতে আপনি আনুমানিক অবশিষ্টাংশ ত্রুটিটি ব্যবহার করতে চান।
কোডিওলজিস্ট

1
সম্পর্কিত: stats.stackexchange.com/q/44860

@ ডুপ্লো: এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ। ক্লাসিক পূর্বাভাস অন্তরগুলির সঠিক দৈর্ঘ্যটি ত্রুটি শর্তের স্বাভাবিকতা অনুমানের উপর সরাসরি নির্ভর করে, সুতরাং এটি যদি খুব আশাবাদী হয় তবে অবশ্যই সেখান থেকে উত্পন্ন হলে বুটস্ট্র্যাপযুক্ত সংস্করণটি হবে। আমি অবাক হয়েছি যে সাধারণ বুটস্ট্র্যাপ পদ্ধতিতে যদি রিগ্রেশনে কাজ করা হয় (অগত্যা ওএলএস নয়)।
মাইকেল এম

1
আমি মনে করি \ টেক্সটাইট {কনফর্মাল ইনফারেন্স you আপনি যা চান তা হতে পারে, যা আপনাকে পুনরায় মডেলিং-ভিত্তিক পূর্বাভাস অন্তরগুলি তৈরি করতে দেয় যা বৈধ সীমাবদ্ধ নমুনা কভারেজ রয়েছে এবং খুব বেশি কভার না করে। একটি ভাল কাগজ পাওয়া যায় যা arxiv.org/pdf/1604.04173.pdf এ পাওয়া যায় , যা বিষয়টির একটি ভূমিকা হিসাবে পড়া সম্ভব এবং github.com/ryantibs/conformal থেকে উপলব্ধ একটি আর প্যাকেজ ।
সাইমন বোগ ব্রেন্ট

উত্তর:


26

পদ্ধতি নীচে তুলে ধরা পাড়া ডেভিডসন ও Hinckley, (1997), ধারা 6.3.3 বর্ণিত এক বুটস্ট্র্যাপ পদ্ধতি এবং তাদের আবেদনএখানে গ্লেন_বি এবং তার মন্তব্যে ধন্যবাদ । এই বিষয়টিতে ক্রস যাচাই করার জন্য বেশ কয়েকটি প্রশ্ন রয়েছে তা প্রদত্ত, আমি ভেবেছিলাম এটি লেখার পক্ষে উপযুক্ত।

লিনিয়ার রিগ্রেশন মডেলটি হ'ল:

Yi=Xiβ+ϵi

আমাদের কাছে ডেটা রয়েছে, , যা আমরা হিসাবে অনুমান করতে ব্যবহার করি : i=1,2,,Nβ

β^OLS=(XX)1XY

এখন, আমরা ভবিষ্যদ্বাণী করতে চাই যে একটি নতুন ডেটা পয়েন্টের জন্য কী হবে, প্রদত্ত যে আমরা এর জন্য জানি। এটি ভবিষ্যদ্বাণী সমস্যা। আসুন নতুন কল (যা আমরা জানি) এবং নতুন (যা আমরা ভবিষ্যদ্বাণী করা চাই), । স্বাভাবিক ভবিষ্যদ্বাণী (যদি আমরা ধরে নিই যে আইআইডি এবং ) হ'ল: YXXXN+1YYN+1ϵiX

YN+1p=XN+1β^OLS

এই পূর্বাভাস দ্বারা করা পূর্বাভাস ত্রুটিটি হ'ল:

eN+1p=YN+1YN+1p

আমরা এই সমীকরণটি আবার লিখতে পারি:

YN+1=YN+1p+eN+1p

এখন, আমরা ইতিমধ্যে গণনা করেছি। সুতরাং, আমরা যদি কোনও বিরতিতে bound বেঁধে চাই , বলুন, 90% সময়, আমাদের করতে হবে তা হ'ল ধারাবাহিকভাবে এবং পার্সেন্টাইল / কোয়ান্টাইলগুলি অনুমান করা উচিত , তাদের call কল করুন এবং ভবিষ্যদ্বাণী ব্যবধানটি ।YN+1pYN+15th95theN+1pe5,e95[YN+1p+e5,YN+1p+e95]

of এর কোয়ান্টাইলস / পারসেন্টাইলগুলি কীভাবে অনুমান করা যায় ? ঠিক আছে, আমরা লিখতে পারি: eN+1p

eN+1p=YN+1YN+1p=XN+1β+ϵN+1XN+1β^OLS=XN+1(ββ^OLS)+ϵN+1

কৌশলটি from থেকে বহুবার নমুনা (বুটস্ট্র্যাপের উপায়ে) এবং তারপরে সাধারণ উপায়ে পার্সেন্টাইলগুলি গণনা করা হবে। সুতরাং, সম্ভবত আমরা from থেকে 10,000 বার নমুনা করব এবং তারপরে এবং পার্সেন্টাইলের এবং ক্ষুদ্রতম সদস্য হিসাবে অনুমান করব উচ্চ স্বরে পড়া.eN+1peN+1p5th95th500th9,500th

অঙ্কন করতে , আমরা বুটস্ট্র্যাপ ত্রুটি (মামলা জরিমানা, অত্যধিক হবে পারে, কিন্তু আমরা IID অভিমানী হয় ত্রুটি যাইহোক)। সুতরাং, প্রতিটি বুটস্ট্র্যাপের অনুলিপিতে, আপনি পেতে ভেরিয়েন্স-অ্যাডজাস্টেড রেসিডুয়ালগুলি (পরবর্তী প্যারা দেখুন) থেকে প্রতিস্থাপনের জন্য বার আঁকেন , তারপরে নতুন , তারপরে এই প্রতিলিপিটির পেতে নতুন ডেটাসেটে S ওএলএস চালান । অবশেষে, এই রেপ্লিকেশন এর ড্র হয়XN+1(ββ^OLS)NϵiYi=Xiβ^OLS+ϵi(Y,X)βrXN+1(ββ^OLS)XN+1(β^OLSβr)

আমরা আইডি এপসিলন ধরে , সমীকরণের অংশ থেকে নমুনার প্রাকৃতিক উপায় হ'ল রেগ্রেশন থেকে আমাদের থাকা অবশিষ্টাংশগুলি ব্যবহার করা, । অবশিষ্টগুলির পৃথক এবং সাধারণত খুব ছোট , তাই আমরা from থেকে নমুনা , বৈকল্পিক অবশিষ্টাংশ, যেখানে এবং হল পর্যবেক্ষণের ।ϵϵN+1{e1,e2,,eN}{s1s¯,s2s¯,,sNs¯}si=ei/(1hi)hii

এবং, অবশেষে, জন্য 90% পূর্বাভাস ব্যবধান তৈরি করার জন্য দেওয়া হল যে হল :YN+1XXN+1

  1. করুন ভবিষ্যদ্বাণী।YN+1p=XN+1β^OLS
  2. , যেখানে ভেরিয়েন্স-অ্যাডজাস্ট করা অবশিষ্টগুলি তৈরি করুন ।{s1s¯,s2s¯,,sNs¯}si=ei/(1hi)
  3. প্রতিলিপিগুলির জন্য : r=1,2,,R
    • বুটস্ট্র্যাপের অবশিষ্টাংশগুলি make করতে অ্যাডজাস্ট করা রেসিডুয়ালে বার আঁকুনN{ϵ1,ϵ2,,ϵN}
    • বুটস্ট্র্যাপ জেনারেট করুনY=Xβ^OLS+ϵ
    • এই প্রতিলিপিটির জন্য বুটস্ট্র্যাপ ওএলএস অনুমানকারী গণনা করুন, βr=(XX)1XY
    • এই প্রতিলিপি থেকে বুটস্ট্র্যাপের অবশিষ্টাংশগুলি পান,er=YXβr
    • this এই প্রতিলিপি থেকে বুটস্ট্র্যাপ বৈকল্পিক-সামঞ্জস্যিত অবশিষ্টাংশগুলি গণনা করুনss¯
    • এই প্রতিলিপি থেকে বুটস্ট্র্যাপের বৈকল্পিক-সামঞ্জস্যিত অবশিষ্টাংশগুলি আঁকুন,ϵN+1,r
    • , এই প্রতিরূপের গণনা করুন eN+1perp=XN+1(β^OLSβr)+ϵN+1,r
  4. এই এবং এর শতকরা ,5th95theN+1pe5,e95
  5. জন্য 90% ভবিষ্যদ্বাণী ব্যবধান হয় ।[ ওয়াই পি এন + 1 + 5 , ওয়াই পি এন + 1 + 95 ]YN+1[YN+1p+e5,YN+1p+e95]

এখানে Rকোড:

# This script gives an example of the procedure to construct a prediction interval
# for a linear regression model using a bootstrap method.  The method is the one
# described in Section 6.3.3 of Davidson and Hinckley (1997),
# _Bootstrap Methods and Their Application_.


#rm(list=ls())
set.seed(12344321)
library(MASS)
library(Hmisc)

# Generate bivariate regression data
x <- runif(n=100,min=0,max=100)
y <- 1 + x + (rexp(n=100,rate=0.25)-4)

my.reg <- lm(y~x)
summary(my.reg)

# Predict y for x=78:
y.p <- coef(my.reg)["(Intercept)"] + coef(my.reg)["x"]*78
y.p

# Create adjusted residuals
leverage <- influence(my.reg)$hat
my.s.resid <- residuals(my.reg)/sqrt(1-leverage)
my.s.resid <- my.s.resid - mean(my.s.resid)


reg <- my.reg
s <- my.s.resid

the.replication <- function(reg,s,x_Np1=0){
  # Make bootstrap residuals
  ep.star <- sample(s,size=length(reg$residuals),replace=TRUE)

  # Make bootstrap Y
  y.star <- fitted(reg)+ep.star

  # Do bootstrap regression
  x <- model.frame(reg)[,2]
  bs.reg <- lm(y.star~x)

  # Create bootstrapped adjusted residuals
  bs.lev <- influence(bs.reg)$hat
  bs.s   <- residuals(bs.reg)/sqrt(1-bs.lev)
  bs.s   <- bs.s - mean(bs.s)

  # Calculate draw on prediction error
  xb.xb <- coef(my.reg)["(Intercept)"] - coef(bs.reg)["(Intercept)"] 
  xb.xb <- xb.xb + (coef(my.reg)["x"] - coef(bs.reg)["x"])*x_Np1
  return(unname(xb.xb + sample(bs.s,size=1)))
}

# Do bootstrap with 10,000 replications
ep.draws <- replicate(n=10000,the.replication(reg=my.reg,s=my.s.resid,x_Np1=78))

# Create prediction interval
y.p+quantile(ep.draws,probs=c(0.05,0.95))

# prediction interval using normal assumption
predict(my.reg,newdata=data.frame(x=78),interval="prediction",level=0.90)


# Quick and dirty Monte Carlo to see which prediction interval is better
# That is, what are the 5th and 95th percentiles of Y_{N+1}
# 
# To do it properly, I guess we would want to do the whole procedure above
# 10,000 times and then see what percentage of the time each prediction 
# interval covered Y_{N+1}

y.np1 <- 1 + 78 + (rexp(n=10000,rate=0.25)-4)
quantile(y.np1,probs=c(0.05,0.95))

দরকারী, বিস্তারিত ব্যাখ্যার জন্য আপনাকে ধন্যবাদ। এই রেখাগুলি অনুসরণ করে, আমি মনে করি যে ওএলএসের বাইরে একটি সাধারণ কৌশল (গাছ ভিত্তিক কৌশল, নিকটতম প্রতিবেশী ইত্যাদি) খুব সহজেই পাওয়া যাবে, তাই না?
মাইকেল এম

1
এলোমেলো অরণ্যের জন্য এটির একটি রয়েছে : stats.stackexchange.com/questions/49750/… যা অনুরূপ শোনাচ্ছে।
বিল

আমি যতদূর বলতে পারি, যদি আপনি থেকে বিমূর্ত করেন তবে এই কৌশলটি যে কোনও মডেলের জন্য কাজ করে। ( এক্স , θ )Xβf(X,θ)
ছায়াছবির

আপনি কীভাবে "বৈকল্পিক সামঞ্জস্যিত অবশিষ্টাংশগুলি" জেনারালাইজ করবেন - ওএলএস পদ্ধতিটি লাভের উপর নির্ভর করে - কোনও স্বেচ্ছাসেবীর f (এক্স) অনুমানকারীের জন্য কোনও লাভের গণনা আছে কি?
ডেভিড ওয়াটারওয়ার্থ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.