วิธีการ: ทำนายช่วงเวลาสำหรับการถดถอยเชิงเส้นผ่าน bootstrapping


14

ฉันมีปัญหาในการทำความเข้าใจวิธีการใช้การบูตการคำนวณเพื่อคำนวณช่วงการทำนายสำหรับตัวแบบการถดถอยเชิงเส้น มีใครบางคนสามารถร่างกระบวนการทีละขั้นตอนได้หรือไม่? ฉันค้นหาผ่าน google แต่ไม่มีอะไรเหมาะสมกับฉัน

ฉันเข้าใจวิธีใช้การบูตสแตรปปิ้งเพื่อคำนวณช่วงความมั่นใจสำหรับพารามิเตอร์โมเดล


1
สิ่งนี้ถูกกล่าวถึงอย่างละเอียดในหนังสือโดย Davison และ Hinkley วิธี Bootstrap และการใช้งานของพวกเขาพร้อมกับอัลกอริทึมที่ชัดเจน (อัลกอริทึม 6.4) พวกเขาอธิบายแนวคิดข้อผิดพลาดและรายละเอียดที่ยาวกว่าที่เป็นไปได้ในคำตอบที่สมเหตุสมผล
Glen_b -Reinstate Monica

@Glen_b ขอบคุณสำหรับการอ้างอิง น่าเสียดายที่ฉันไม่ได้อยู่ในมหาวิทยาลัยหรือ บริษัท ดังนั้นฉันจึงไม่มีทรัพยากรที่จะได้รับหนังสือ
สูงสุด

สามารถสั่งซื้อได้จาก amazon; คำอธิบายอย่างเต็มรูปแบบของอัลกอริธึมและคำเตือนและปัญหาที่เกี่ยวข้องทั้งหมดไม่ใช่การเรียงลำดับของสิ่งที่คุณสามารถครอบคลุมในไม่กี่ร้อยคำหรือแม้แต่คำตอบเดียว
Glen_b -Reinstate Monica

1
@Glen_b ฉันเขียนอัลกอริทึมจาก Davison และ HInkely --- มีคำถามมากมายเกี่ยวกับ CV เกี่ยวกับเรื่องนี้ดังนั้นฉันคิดว่ามันคุ้มค่ากับความพยายาม ความคิดเห็นใด ๆ ที่คุณจะได้รับการชื่นชม stats.stackexchange.com/questions/226565/…
Bill

กระทู้นี้ดูเหมือนจะตอบคำถามของคุณ: stats.stackexchange.com/questions/226565/…
2683832

คำตอบ:


7

ช่วงความเชื่อมั่นคำนึงถึงความไม่แน่นอนของการประมาณ ช่วงเวลาการทำนายจะเพิ่มความไม่แน่นอนพื้นฐานนี้ R's predict.lmจะให้ช่วงการทำนายสำหรับโมเดลเชิงเส้น จากตรงนั้นสิ่งที่คุณต้องทำก็คือรันมันซ้ำ ๆ ในตัวอย่างของ bootstrapped

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%

วิธีแกรี่คิง

ทั้งนี้ขึ้นอยู่กับสิ่งที่คุณต้องการมีความเย็นวิธีการโดยกษัตริย์, Tomz และตเทนเบิร์ก มันค่อนข้างง่ายที่จะติดตั้งและหลีกเลี่ยงปัญหาการบูตสแตรปสำหรับการประมาณค่าบางอย่าง (เช่นmax(Y))

ฉันจะอ้างอิงจากคำจำกัดความของความไม่แน่นอนพื้นฐานของเขาที่นี่เนื่องจากเป็นสิ่งที่ดีพอสมควร:

รูปแบบที่สองของความแปรปรวนความไม่แน่นอนพื้นฐานที่แสดงโดยองค์ประกอบสุ่ม (การแจกแจง f) ในสมการที่ 1 เป็นผลมาจากเหตุการณ์ที่มีโอกาสมากมายเช่นสภาพอากาศหรือความเจ็บป่วยที่อาจมีอิทธิพลต่อ Y แต่ไม่รวมอยู่ใน X เรารู้คุณค่าของพารามิเตอร์ (ซึ่งจะช่วยลดความไม่แน่นอนของการประมาณค่า) ความไม่แน่นอนพื้นฐานจะป้องกันเราจากการทำนาย Y โดยไม่มีข้อผิดพลาด


3
ไม่แน่ใจว่าคุณสร้างช่วงความมั่นใจได้อย่างไรจากเมทริกซ์ของการทำนายช่วงเวลา n.bs
B_Miner

1

Bootstrapping ไม่ได้สันนิษฐานความรู้ใด ๆ เกี่ยวกับรูปแบบของการแจกแจงพาเรนต์ต้นแบบจากตัวอย่างที่เกิดขึ้น การประมาณค่าพารามิเตอร์ทางสถิติแบบคลาสสิกแบบดั้งเดิมนั้นขึ้นอยู่กับข้อสมมติปกติ Bootstrap เกี่ยวข้องกับการไม่ปกติและมีความแม่นยำในการปฏิบัติมากกว่าวิธีการแบบดั้งเดิม

Bootstrapping ใช้แทนการคำนวณแบบดิบของคอมพิวเตอร์เพื่อการวิเคราะห์เชิงทฤษฎีอย่างเข้มงวด มันเป็นค่าประมาณสำหรับการกระจายตัวตัวอย่างของคำข้อผิดพลาดของชุดข้อมูล Bootstrapping รวมถึง: การสุ่มตัวอย่างข้อมูลใหม่ตั้งค่าจำนวนครั้งที่ระบุคำนวณค่าเฉลี่ยจากแต่ละตัวอย่างและค้นหาข้อผิดพลาดมาตรฐานของค่าเฉลี่ย

รหัส“ 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

ทำตามขั้นตอน bootstrapping:

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
ขอบคุณ Ragy สำหรับตัวอย่าง อย่างไรก็ตามจากสิ่งที่ฉันสามารถเห็นคำตอบของคุณไม่ครอบคลุมการคำนวณช่วงเวลาการทำนายโดยใช้ bootstrap ดังที่ฉันได้กล่าวไว้ในคำตอบแล้วฉันเข้าใจวิธีใช้ bootstrapping เพื่อคำนวณช่วงความมั่นใจซึ่งรหัสของคุณดูเหมือนจะทำ
Max
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.