เราสามารถหาวิธีการ Resampling ที่แตกต่างกันหรือวิธีการ " จำลอง " ที่หลวม ๆซึ่งขึ้นอยู่กับการสุ่มใหม่หรือการสับตัวอย่าง อาจมีความแตกต่างในความคิดเห็นเกี่ยวกับคำศัพท์ที่เหมาะสม แต่การสนทนาต่อไปนี้พยายามที่จะพูดคุยและทำให้สิ่งที่มีอยู่ในวรรณกรรมที่เหมาะสมง่ายขึ้น:
วิธีการ resampling ที่ใช้ในการ (1) การประเมินความแม่นยำ / ความถูกต้องของสถิติตัวอย่างผ่านการใช้ชุดย่อยของข้อมูล (เช่น Jackknifing) หรือการวาดภาพแบบสุ่มด้วยการเปลี่ยนจากชุดของจุดข้อมูล (เช่นความร่วมมือบริการ) (2) การแลกเปลี่ยนฉลากบนจุดข้อมูลเมื่อการดำเนินการอย่างมีนัยสำคัญ การทดสอบ (ทดสอบการเปลี่ยนแปลงที่เรียกว่าการทดสอบที่แน่นอนการทดสอบสุ่มหรือการทดสอบอีกครั้งสุ่ม) (3) การตรวจสอบโดยใช้แบบจำลองย่อยสุ่ม (ความร่วมมือการตรวจสอบข้าม) (ดูวิกิพีเดีย: วิธีการ resampling )
BOOTSTRAPING
" Bootstrappingเป็นวิธีการทางสถิติสำหรับการประเมินการกระจายตัวตัวอย่างของตัวประมาณโดยการสุ่มตัวอย่างด้วยการแทนที่จากตัวอย่างดั้งเดิม" วิธีการกำหนดมาตรการความถูกต้อง (กำหนดในแง่ของความลำเอียง , ความแปรปรวน , ช่วงความเชื่อมั่น , ข้อผิดพลาดการทำนายหรือการวัดอื่น ๆ ) เพื่อประเมินตัวอย่าง
แนวคิดพื้นฐานของการเริ่มระบบคือการอนุมานเกี่ยวกับประชากรจากข้อมูลตัวอย่าง ( ตัวอย่าง→ประชากร ) สามารถสร้างแบบจำลองได้โดยการสุ่มข้อมูลตัวอย่างใหม่อีกครั้งและดำเนินการอนุมานบน (สุ่มตัวอย่าง→ตัวอย่าง) เนื่องจากประชากรไม่เป็นที่รู้จักข้อผิดพลาดที่แท้จริงในสถิติตัวอย่างกับค่าของประชากรจะไม่สามารถรู้ได้ ใน bootstrap-resamples 'ประชากร' ในความเป็นจริงตัวอย่างและสิ่งนี้เป็นที่รู้จักกัน; ดังนั้นคุณภาพของการอนุมานจากข้อมูลตัวอย่างอีกครั้ง→ตัวอย่าง 'จริง' จึงสามารถวัดได้ "ดูวิกิพีเดีย
Yvar <- c(8,9,10,13,12, 14,18,12,8,9, 1,3,2,3,4)
#To generate a single bootstrap sample
sample(Yvar, replace = TRUE)
#generate 1000 bootstrap samples
boot <-list()
for (i in 1:1000)
boot[[i]] <- sample(Yvar,replace=TRUE)
ในปัญหาที่ไม่ได้แก้ไขก็มักจะยอมรับการสุ่มตัวอย่างการสังเกตแต่ละครั้งใหม่ด้วยการแทนที่ ("การ resampling กรณี") ที่นี่เราทำการสุ่มตัวอย่างข้อมูลใหม่พร้อมการเปลี่ยนและขนาดของ resample จะต้องเท่ากับขนาดของชุดข้อมูลต้นฉบับ
ในปัญหาการถดถอย กรณี resamplingหมายถึงโครงร่างง่าย ๆ ของ resampling แต่ละกรณี - บ่อยครั้งที่แถวของชุดข้อมูลในปัญหาการถดถอยตัวแปรอธิบายมักจะได้รับการแก้ไขหรืออย่างน้อยก็สังเกตได้ด้วยการควบคุมมากกว่าตัวแปรตอบสนอง นอกจากนี้ช่วงของตัวแปรอธิบายอธิบายข้อมูลที่มีอยู่จากพวกเขา ดังนั้นในการ resample เคสหมายความว่าแต่ละตัวอย่าง bootstrap จะสูญเสียข้อมูลบางส่วน (ดูWikipedia ) Yvar
ดังนั้นมันจะเป็นตรรกะที่จะลิ้มลองแถวของข้อมูลค่อนข้างเพียง
Yvar <- c(8,9,10,13,12, 14,18,12,8,9, 1,3,2,3,4)
Xvar <- c(rep("A", 5), rep("B", 5), rep("C", 5))
mydf <- data.frame (Yvar, Xvar)
boot.samples <- list()
for(i in 1:10) {
b.samples.cases <- sample(length(Xvar), length(Xvar), replace=TRUE)
b.mydf <- mydf[b.samples.cases,]
boot.samples[[i]] <- b.mydf
}
str(boot.samples)
boot.samples[1]
คุณสามารถดูบางกรณีซ้ำได้เนื่องจากเราสุ่มตัวอย่างด้วยการเปลี่ยน
" Parametric bootstrap - โมเดลพาราเมตริกถูกติดตั้งกับข้อมูลบ่อยที่สุดโดยความเป็นไปได้สูงสุดและตัวอย่างของตัวเลขสุ่มจะถูกดึงออกมาจากโมเดลที่ติดตั้งนี้โดยปกติตัวอย่างที่ดึงมามีขนาดตัวอย่างเท่ากับข้อมูลต้นฉบับจากนั้นปริมาณหรือการประมาณ ที่น่าสนใจคำนวณจากข้อมูลเหล่านี้กระบวนการสุ่มตัวอย่างนี้ซ้ำหลายครั้งสำหรับวิธี bootstrap อื่น ๆ การใช้แบบจำลองพารามิเตอร์ที่ขั้นตอนการสุ่มตัวอย่างของวิธีการ bootstrap นำไปสู่กระบวนการที่แตกต่างจากที่ได้รับโดยใช้ทฤษฎีสถิติพื้นฐาน เพื่ออนุมานสำหรับโมเดลเดียวกัน "(ดูWikipedia ) ต่อไปนี้คือ bootstrap แบบพารามิเตอร์ที่มีการแจกแจงแบบปกติพร้อมพารามิเตอร์ค่าเฉลี่ยและค่าเบี่ยงเบนมาตรฐาน
Yvar <- c(8,9,10,13,12, 14,18,12,8,9, 1,3,2,3,4)
# parameters for Yvar
mean.y <- mean(Yvar)
sd.y <- sd(Yvar)
#To generate a single bootstrap sample with assumed normal distribution (mean, sd)
rnorm(length(Yvar), mean.y, sd.y)
#generate 1000 bootstrap samples
boot <-list()
for (i in 1:1000)
boot[[i]] <- rnorm(length(Yvar), mean.y, sd.y)
มีข้อแตกต่างอื่น ๆ ของ bootstrap โปรดปรึกษาหน้าวิกิพีเดียหรือหนังสือสถิติที่ดีเกี่ยวกับการสุ่มใหม่
Jacknife
"ประมาณการพับของพารามิเตอร์ที่มีการค้นพบโดยระบบออกจากการสังเกตแต่ละจากชุดข้อมูลและการคำนวณประมาณการแล้วหาค่าเฉลี่ยของการคำนวณเหล่านี้. ให้ตัวอย่างของขนาด N, ประมาณการพับที่พบโดยรวมประมาณการของแต่ละN − 1
ประมาณการ ในตัวอย่าง " โปรดดูที่: วิกิพีเดียต่อไปนี้แสดงวิธีการพับYvar
jackdf <- list()
jack <- numeric(length(Yvar)-1)
for (i in 1:length (Yvar)){
for (j in 1:length(Yvar)){
if(j < i){
jack[j] <- Yvar[j]
} else if(j > i) {
jack[j-1] <- Yvar[j]
}
}
jackdf[[i]] <- jack
}
jackdf
"bootstrap ปกติและ jackknife ประเมินความแปรปรวนของสถิติจากความแปรปรวนของสถิติระหว่าง subsamples มากกว่าจากสมมติฐาน parametricสำหรับ jackknife ทั่วไปทั่วไปการสังเกต m-jackknife bootstrap สามารถมองเห็นแบบสุ่ม การประมาณค่าของมันทั้งคู่ให้ผลลัพธ์ที่เป็นตัวเลขที่คล้ายกัน ดูคำถามนี้เกี่ยวกับ Bootstrap vs Jacknife
การทดสอบการหมุนเวียน
"ในการทดสอบพาราเมตริกเราสุ่มตัวอย่างจากประชากรหนึ่งคนหรือมากกว่านั้นเราสร้างสมมติฐานบางประการเกี่ยวกับประชากรเหล่านั้นโดยทั่วไปแล้วพวกมันจะกระจายด้วยความแปรปรวนที่เท่ากันโดยทั่วไปเราสร้างสมมติฐานว่างที่มีกรอบในแง่ของพารามิเตอร์ -m2 = 0 เราใช้สถิติตัวอย่างของเราเป็นค่าประมาณของพารามิเตอร์ประชากรที่สอดคล้องกันและคำนวณสถิติการทดสอบ (เช่นที่การทดสอบ) ตัวอย่างเช่น: ในการทดสอบ t - นักเรียนสำหรับความแตกต่างในค่าเฉลี่ยเมื่อไม่ทราบความแปรปรวน ให้เท่ากันสมมติฐานที่น่าสนใจก็คือ H0: m1 = m2
หนึ่งในสมมติฐานทางเลือกจะระบุว่า:HA: m1 < m2
. ได้รับสองตัวอย่างมาจากประชากรที่ 1 และ 2 H0
สมมติว่าเหล่านี้เป็นประชากรกระจายตามปกติที่มีความแปรปรวนเท่ากันและว่ากลุ่มตัวอย่างถูกดึงเป็นอิสระและการสุ่มจากประชากรแต่ละแล้วสถิติที่มีการกระจายเป็นที่รู้จักกันสามารถเนื้อหาที่จะทดสอบ
วิธีหนึ่งที่จะหลีกเลี่ยงสมมติฐานการกระจายได้เป็นวิธีการที่เรียกว่าไม่ใช่แบบพารามิเตอร์, อันดับ - อันดับ, อันดับเหมือนและสถิติการกระจายฟรี สถิติการแจกแจงแบบฟรีเหล่านี้มักถูกวิพากษ์วิจารณ์ว่า "มีประสิทธิภาพ" น้อยกว่าการทดสอบแบบอะนาล็อกที่มีพื้นฐานจากการสมมติว่าประชากรกระจายตัวตามปกติ
อีกทางเลือกหนึ่งคือวิธีการสุ่ม - "กระบวนการสุ่มมอบหมายให้กลุ่มสังเกตการณ์โดยอิสระจากความรู้ที่ตัวอย่างการสังเกตเป็นสมาชิกการทดสอบการสุ่มใช้ประโยชน์จากกระบวนการดังกล่าว แต่เป็นการดำเนินการโดยการสังเกตมากกว่าข้อต่อ การจัดอันดับของการสังเกตด้วยเหตุนี้การกระจายตัวของสถิติแบบอะนาล็อก (ผลรวมของการสังเกตในตัวอย่างหนึ่ง) จึงไม่สามารถทำเป็นตารางได้ง่าย ๆ แม้ว่ามันจะเป็นไปได้ในทางทฤษฎีที่จะแจกแจงการกระจายแบบนี้ "( ดู )
การทดสอบแบบสุ่มแตกต่างจากการทดสอบแบบพารามิเตอร์เกือบทุกประการ (1) ไม่มีข้อกำหนดว่าเราจะต้องสุ่มตัวอย่างจากประชากรหนึ่งคนหรือมากกว่านั้นอันที่จริงแล้วเรามักจะไม่ได้สุ่มตัวอย่างแบบสุ่ม (2) เราไม่ค่อยคิดว่าในแง่ของประชากรที่มาจากข้อมูลและไม่จำเป็นต้องคิดอะไรเกี่ยวกับความปกติหรือ homoscedasticity (3) สมมติฐานว่างของเราไม่มีอะไรเกี่ยวข้องกับพารามิเตอร์ แต่เป็นวลีที่ค่อนข้างคลุมเครือเช่น ตัวอย่างเช่นสมมติฐานที่ว่าการรักษาไม่มีผลต่อวิธีการที่ผู้เข้าร่วมปฏิบัติ (4) เนื่องจากเราไม่เกี่ยวข้องกับประชากรเราจึงไม่เกี่ยวข้องกับการประเมิน (หรือแม้แต่การทดสอบ) ลักษณะของประชากรเหล่านั้น (5) เราคำนวณบางอย่าง การเรียงลำดับของสถิติการทดสอบอย่างไรก็ตามเราไม่ได้เปรียบเทียบสถิตินั้นกับการแจกแจงแบบตาราง แทน, เราเปรียบเทียบกับผลลัพธ์ที่เราได้รับเมื่อเราสุ่มข้อมูลซ้ำ ๆ ในกลุ่มและคำนวณสถิติที่เกี่ยวข้องสำหรับการสุ่มแต่ละครั้ง (6) ยิ่งกว่าการทดสอบแบบพารามิเตอร์การทดสอบแบบสุ่มเน้นความสำคัญของการมอบหมายแบบสุ่มของผู้เข้าร่วมการรักษา "เห็นไหม
ประเภทของการทดสอบการสุ่มที่เป็นที่นิยมมากคือการทดสอบการเปลี่ยนรูป ถ้าขนาดตัวอย่างของเราคือ 12 และ 5, C(12,5) = 792
การเปลี่ยนแปลงทั้งหมดที่เป็นไปได้ หากขนาดตัวอย่างของเราเท่ากับ 10 และ 15 การจัดการกว่า 3.2 ล้านจะเป็นไปได้ นี่คือความท้าทายในการคำนวณ: ถ้าเช่นนั้นจะเป็นอย่างไร ตัวอย่าง เมื่อจักรวาลของการจัดเรียงที่เป็นไปได้มีขนาดใหญ่เกินกว่าที่จะระบุได้ทำไมไม่ลองการจัดเรียงจากเอกภพนี้โดยอิสระและสุ่ม การกระจายตัวของสถิติการทดสอบในกลุ่มตัวอย่างชุดนี้สามารถถูกทำเป็นตารางได้การคำนวณ 'ค่าเฉลี่ยและความแปรปรวนของมันและอัตราความผิดพลาดที่เกี่ยวข้องกับการทดสอบสมมติฐานโดยประมาณ
การทดสอบ PERMUTATION
ตามที่วิกิพีเดีย "การทดสอบการเปลี่ยนแปลง (ที่เรียกว่าการทดสอบการสุ่ม , การทดสอบอีกครั้งสุ่มหรือการทดสอบที่แน่นอน ) เป็นประเภทของการทดสอบนัยสำคัญทางสถิติที่กระจายของสถิติทดสอบภายใต้สมมติฐานที่จะได้รับโดยการคำนวณค่าที่เป็นไปได้ทั้งหมด ของสถิติการทดสอบภายใต้การจัดเรียงใหม่ของฉลากบนจุดข้อมูลที่สังเกตเห็นการทดสอบการเปลี่ยนรูปมีอยู่สำหรับสถิติการทดสอบใด ๆ โดยไม่คำนึงว่าการกระจายนั้นเป็นที่รู้จักหรือไม่ดังนั้นจึงมีอิสระในการเลือกสถิติที่ดีที่สุด ซึ่งลดการสูญเสียให้น้อยที่สุด "
ความแตกต่างระหว่างการเปลี่ยนแปลงและบูตคือวัฏจักรตัวอย่างด้วยการเปลี่ยนและพีชคณิตตัวอย่างโดยไม่ต้องเปลี่ยน ไม่ว่าในกรณีใดลำดับเวลาของการสังเกตจะหายไปและทำให้การจัดกลุ่มความผันผวนหายไปดังนั้นจึงมั่นใจได้ว่ากลุ่มตัวอย่างอยู่ภายใต้สมมติฐานว่างของการจัดกลุ่มความผันผวน
การเรียงสับเปลี่ยนมีข้อสังเกตเหมือนกันเสมอดังนั้นจึงเป็นเหมือนข้อมูลต้นฉบับมากกว่าตัวอย่างบูตสแตรป ความคาดหวังคือการทดสอบการเปลี่ยนรูปควรมีความไวมากกว่าการทดสอบบูตสแตรป พีชคณิตทำลายการจัดกลุ่มความผันผวน แต่ไม่ได้เพิ่มความแปรปรวนอื่น
ดูคำถามที่เกี่ยวกับการเปลี่ยนแปลงเทียบกับความร่วมมือ - "การทดสอบการเปลี่ยนแปลงที่ดีที่สุดสำหรับการทดสอบสมมติฐานและความร่วมมือที่ดีที่สุดคือการประมาณช่วงความเชื่อมั่น "
ดังนั้นเพื่อดำเนินการเปลี่ยนแปลงในกรณีนี้เราสามารถเปลี่ยนได้replace = FALSE
ในตัวอย่าง bootstrap ด้านบน
Yvar <- c(8,9,10,13,12, 14,18,12,8,9, 1,3,2,3,4)
#generate 1000 bootstrap samples
permutes <-list()
for (i in 1:1000)
permutes[[i]] <- sample(Yvar,replace=FALSE)
ในกรณีที่มีตัวแปรมากกว่าหนึ่งตัวเพียงแค่เลือกแถวและปรับคำสั่งซื้อใหม่จะไม่สร้างความแตกต่างเนื่องจากข้อมูลจะยังคงเหมือนเดิม ดังนั้นเราจึงสับเปลี่ยนตัวแปร y บางสิ่งที่คุณทำ แต่ฉันไม่คิดว่าเราไม่จำเป็นต้องทำการสับซ้ำทั้งสองครั้งx
และy variables
(ตามที่คุณทำ)
Yvar <- c(8,9,10,13,12, 14,18,12,8,9, 1,3,2,3,4)
Xvar <- c(rep("A", 5), rep("B", 5), rep("C", 5))
mydf <- data.frame (Yvar, Xvar)
permt.samples <- list()
for(i in 1:10) {
t.yvar <- Yvar[ sample(length(Yvar), length(Yvar), replace=FALSE) ]
b.df <- data.frame (Xvar, t.yvar)
permt.samples[[i]] <- b.df
}
str(permt.samples)
permt.samples[1]
วิธีมอนติคาร์โล
"วิธีการมอนติคาร์โล (หรือการทดลองของมอนติคาร์โล) เป็นกลุ่มอัลกอริธึมการคำนวณที่กว้างขวางซึ่งอาศัยการสุ่มตัวอย่างแบบสุ่มซ้ำ ๆเพื่อให้ได้ผลลัพธ์เป็นตัวเลขโดยทั่วไปแล้วผู้หนึ่งจะทำการจำลอง จากความคล้ายคลึงของเทคนิคไปจนถึงการเล่นและบันทึกผลในคาสิโนการพนันจริง "ดูวิกิพีเดีย
"ในสถิติที่ใช้วิธีการมอนติคาร์โลมักใช้เพื่อวัตถุประสงค์สองประการ:
(1) เพื่อเปรียบเทียบสถิติการแข่งขันสำหรับตัวอย่างขนาดเล็กภายใต้เงื่อนไขข้อมูลจริง แม้ว่าข้อผิดพลาด Type I และคุณสมบัติทางพลังงานของสถิติสามารถคำนวณได้จากข้อมูลการแจกแจงแบบคลาสสิก (เช่นเส้นโค้งปกติ, การแจกแจงแบบ Cauchy) สำหรับเงื่อนไขแบบอะซิมโทติค (i. e, ขนาดตัวอย่างที่ไม่มีที่สิ้นสุด ไม่มีการแจกแจงดังกล่าว
(2) เพื่อให้การใช้งานของการทดสอบสมมติฐานที่มีประสิทธิภาพมากขึ้นกว่าการทดสอบที่แน่นอนเช่นการทดสอบการเปลี่ยนแปลง (ซึ่งมักจะเป็นไปไม่ได้ที่จะคำนวณ) ในขณะที่มีความแม่นยำมากกว่าค่าที่สำคัญสำหรับการแจกแจง asymptotic
วิธี Monte Carlo นอกจากนี้ยังมีการประนีประนอมระหว่างการสุ่มโดยประมาณและการทดสอบการเปลี่ยนแปลง การทดสอบแบบสุ่มโดยประมาณนั้นขึ้นอยู่กับเซตย่อยที่ระบุของการเปลี่ยนลำดับทั้งหมด วิธีการมอนติคาร์โลนั้นขึ้นอยู่กับจำนวนการสุ่มเปลี่ยนวิธีสุ่ม (การแลกเปลี่ยนการสูญเสียเล็กน้อยในความแม่นยำหากมีการดึงการเปลี่ยนแปลงสองครั้ง - หรือบ่อยครั้งขึ้น - เพื่อประสิทธิภาพในการไม่ต้องติดตามการเปลี่ยนลำดับที่ได้เลือกมาแล้ว ) "
ทั้งพิธีกรและการทดสอบการสับเปลี่ยนกำลังบางครั้งเรียกว่าการทดสอบการสุ่ม ความแตกต่างคือใน MC เราลิ้มลองตัวอย่างการเปลี่ยนแปลงที่ค่อนข้างใช้ผสมเป็นไปได้ทั้งหมดเห็น
การสอบผ่าน CROSS
แนวคิดที่อยู่นอกเหนือการตรวจสอบไขว้คือโมเดลควรถูกทดสอบด้วยข้อมูลที่ไม่ได้ใช้ให้พอดีกับโมเดล การตรวจสอบข้ามอาจจะใช้บ่อยที่สุดในบริบทของการทำนาย
"การตรวจสอบความถูกต้องไขว้เป็นวิธีการทางสถิติสำหรับการตรวจสอบรูปแบบการทำนายชุดย่อยของข้อมูลจะถูกจัดขึ้นเพื่อใช้เป็นชุดการตรวจสอบความถูกต้องของแบบจำลองจะพอดีกับข้อมูลที่เหลือ (ชุดฝึกอบรม) และใช้ในการทำนายชุดการตรวจสอบความถูกต้อง คุณภาพของการทำนายในชุดการตรวจสอบจะให้ผลการวัดโดยรวมของความแม่นยำในการทำนาย
รูปแบบหนึ่งของการตรวจสอบความถูกต้องข้ามใบทำให้การสังเกตการณ์ครั้งเดียวในแต่ละครั้ง; นี้คล้ายกับ jackknife อีกวิธีหนึ่งคือการตรวจสอบความถูกต้องข้าม K-foldแยกข้อมูลออกเป็นชุดย่อย K แต่ละอันถูกจัดให้ออกมาเป็นชุดการตรวจสอบ "ดูวิกิพีเดียการตรวจสอบข้ามโดยทั่วไปจะทำกับข้อมูลเชิงปริมาณคุณสามารถแปลงเชิงคุณภาพ (ข้อมูลปัจจัย) ของคุณเป็นสมการเชิงปริมาณเพื่อให้พอดีกับโมเดลเชิงเส้นและทดสอบโมเดลนี้ กลยุทธ์การถือเอาไว้ที่ 50% ของข้อมูลใช้สำหรับการทำนายแบบจำลองในขณะที่ส่วนที่เหลือถูกใช้สำหรับการทดสอบให้สมมติว่าXvar
เป็นตัวแปรเชิงปริมาณ
Yvar <- c(8,9,10,13,12, 14,18,12,8,9, 1,3,2,3,4)
Xvar <- c(rep(1, 5), rep(2, 5), rep(3, 5))
mydf <- data.frame (Yvar, Xvar)
training.id <- sample(1:nrow(mydf), round(nrow(mydf)/2,0), replace = FALSE)
test.id <- setdiff(1:nrow(mydf), training.id)
# training dataset
mydf.train <- mydf[training.id]
#testing dataset
mydf.test <- mydf[test.id]
ซึ่งแตกต่างจาก bootstrap และการทดสอบการเปลี่ยนแปลงชุดข้อมูลการตรวจสอบข้ามสำหรับการฝึกอบรมและการทดสอบจะแตกต่างกัน รูปต่อไปนี้แสดงข้อมูลสรุปของการสุ่มตัวอย่างซ้ำในวิธีการต่างๆ
หวังว่านี่จะช่วยได้เล็กน้อย