วิธีการสุ่มตัวอย่าง / การจำลองใหม่: monte carlo, bootstrapping, jackknifing, cross-validation, การทดสอบแบบสุ่มและการทดสอบการเปลี่ยนรูป


73

ฉันพยายามเข้าใจความแตกต่างระหว่างวิธีการสุ่มใหม่ (การจำลองมอนติคาร์โล, การบูตแบบพาราเมตริก, การบู๊ตแบบไม่มีพารามิเตอร์, การทดสอบแบบสุ่ม, การตรวจสอบข้าม, การทดสอบแบบสุ่มและการเปลี่ยนรูป) และการนำไปใช้ในบริบทของฉันเอง

ว่าฉันมีสถานการณ์ดังต่อไปนี้ - ฉันต้องการดำเนินการ ANOVA ด้วยตัวแปรY ( Yvar) และX variable ( Xvar) Xvarเป็นหมวดหมู่ ฉันสนใจในสิ่งต่อไปนี้:

(1) ความสำคัญของ p-values ​​- อัตราการค้นพบที่ผิด

(2) ขนาดผลของXvarระดับ

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)

คุณช่วยให้ฉันอธิบายความแตกต่างของการสุ่มตัวอย่างด้วยตัวอย่างงานที่ชัดเจนว่าวิธีการสุ่มตัวอย่างใหม่นี้ทำงานอย่างไร

การแก้ไข: นี่คือความพยายามของฉัน:

Bootstrap 10 ตัวอย่าง bootstrap, ตัวอย่างจำนวนตัวอย่างพร้อมการเปลี่ยนหมายความว่าตัวอย่างสามารถทำซ้ำได้

boot.samples <- list()
for(i in 1:10) {
   t.xvar <- Xvar[ sample(length(Xvar), length(Xvar), replace=TRUE) ]
   t.yvar <- Yvar[ sample(length(Yvar), length(Yvar), replace=TRUE) ]
   b.df <- data.frame (t.xvar, t.yvar) 
   boot.samples[[i]] <- b.df 
}
str(boot.samples)
 boot.samples[1]

การเปลี่ยนแปลง: 10 ตัวอย่างการเรียงสับเปลี่ยนจำนวนตัวอย่างของตัวอย่างโดยไม่ต้องเปลี่ยน

 permt.samples <- list()
    for(i in 1:10) {
       t.xvar <- Xvar[ sample(length(Xvar), length(Xvar), replace=FALSE) ]
       t.yvar <- Yvar[ sample(length(Yvar), length(Yvar), replace=FALSE) ]
       b.df <- data.frame (t.xvar, t.yvar) 
       permt.samples[[i]] <- b.df 
    }
    str(permt.samples)
    permt.samples[1]

การจำลอง Monte Caro

แม้ว่าคำว่า "resampling" มักใช้เพื่ออ้างถึงการสุ่มตัวอย่างแบบสุ่มหรือการสุ่มหลอกเทียมซ้ำ ๆ เมื่อ "การ resampling" ซ้ำ ๆ ทำจากการแจกแจงตามทฤษฎีที่รู้จักกัน

ฉันไม่แน่ใจเกี่ยวกับข้อกำหนดข้างต้นทั้งหมดและการแก้ไขข้างต้นของฉันถูกต้องหรือไม่ ฉันหาข้อมูลบางอย่างเกี่ยวกับjacknifeแต่ฉันไม่สามารถเชื่องได้กับสถานการณ์ของฉัน


3
Jackknife เป็นรุ่นก่อนหน้าของ bootstrap ที่ง่ายกว่า en.wikipedia.org/wiki/Jackknife_(statistics)
EngrStudent

4
แม่นยำมากขึ้น: พับเป็น resampling ปล่อยให้ใครออก [ แต่ไม่ได้ใช้สำหรับการตรวจสอบข้าม]
cbeleites

คำตอบ:


121

เราสามารถหาวิธีการ 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 และการทดสอบการเปลี่ยนแปลงชุดข้อมูลการตรวจสอบข้ามสำหรับการฝึกอบรมและการทดสอบจะแตกต่างกัน รูปต่อไปนี้แสดงข้อมูลสรุปของการสุ่มตัวอย่างซ้ำในวิธีการต่างๆ

ป้อนคำอธิบายรูปภาพที่นี่

หวังว่านี่จะช่วยได้เล็กน้อย


23
นี่เป็นสิ่งที่น่าประทับใจ - และโดยเฉพาะอย่างยิ่งเนื่องจากเป็นคำตอบแรกของคุณ! ฉันหวังว่าคุณจะเข้าร่วมที่นี่ต่อไปและฉันหวังว่าจะมีส่วนร่วมในอนาคตของคุณในเว็บไซต์ของเรา
whuber

คำตอบนี้เป็นคำตอบที่ดีมาก อย่างไรก็ตามบางลิงค์ดูเหมือนจะถูกยกเลิก ไม่มีใครมีเงื่อนงำว่าลิงก์อยู่ที่ไหน?
tintinthong

6

นี่คือผลงานของฉัน

ข้อมูล

Yvar <- c(8,9,10,13,12,
          14,18,12,8,9,
          1,3,2,3,4)
Xvar <- rep(LETTERS[1:3], each=5)
mydf <- data.frame(Yvar, Xvar)

Monte Carlo

ฉันเห็นว่า Monte Carlo เป็นวิธีการที่จะได้รับการแจกแจงของตัวแปรสุ่ม (ผลลัพธ์) ซึ่งเป็นผลมาจากฟังก์ชั่นที่ไม่น่าสนใจของตัวแปรสุ่มอื่น ๆ (อินพุต) ฉันไม่เห็นการเหลื่อมซ้อนกับการวิเคราะห์ ANOVA ทันทีอาจเป็นไปได้ว่าสมาชิกฟอรัมคนอื่น ๆ อาจให้ข้อมูลที่นี่

ร่วมมือ

จุดประสงค์คือการมีความคิดเกี่ยวกับความไม่แน่นอนของสถิติที่คำนวณจากตัวอย่างที่สังเกตได้ ตัวอย่างเช่น: เราสามารถคำนวณได้ว่าค่าเฉลี่ยตัวอย่างของ Yvar เท่ากับ 8.4 แต่เรามีค่าเฉลี่ยของประชากรใน Yvar อย่างไร เคล็ดลับคือการทำราวกับว่ากลุ่มตัวอย่างเป็นประชากรและสุ่มตัวอย่างจากประชากรปลอมนั้นหลายครั้ง

n <- 1000
bootstrap_means <- numeric(length=n)
for(i in 1:n){
   bootstrap_sample <- sample(x=Yvar, size=length(Yvar), replace=TRUE)
   bootstrap_means[i] <- mean(bootstrap_sample)
}
hist(bootstrap_means)

เราเพิ่งเอาตัวอย่างมาและไม่ได้ใช้การกระจายตัวแบบพารามิเตอร์ นี่คือบูตไม่อิงพารามิเตอร์ หากคุณจะรู้สึกสะดวกสบายกับสมมติเช่นที่ Xvar มีการกระจายตามปกตินอกจากนี้คุณยังจะได้ลิ้มลองจากการแจกแจงแบบปกติ ( rnorm(...)) โดยใช้ค่าเฉลี่ยโดยประมาณและส่วนเบี่ยงเบนมาตรฐานนี้จะเป็นบูตพารา

ผู้ใช้รายอื่นอาจให้แอปพลิเคชันของ bootstrap เทียบกับขนาดเอฟเฟกต์ของXvarระดับ

Jackknifing

Jackknife ดูเหมือนจะล้าสมัยไปเล็กน้อย เพื่อความสมบูรณ์คุณสามารถเปรียบเทียบมันกับรองเท้าบู๊ตได้มากกว่าหรือน้อยกว่า แต่กลยุทธ์อยู่ที่นี่เพื่อดูว่าจะเกิดอะไรขึ้นถ้าเราออกจากการสังเกตหนึ่งครั้ง (และทำซ้ำสิ่งนี้สำหรับการสังเกตแต่ละครั้ง)

การตรวจสอบครอส

ในการตรวจสอบข้ามคุณแยกชุดข้อมูล (มักจะใหญ่) ในชุดการฝึกอบรมและชุดการตรวจสอบเพื่อดูว่าแบบจำลองของคุณโดยประมาณสามารถทำนายค่าในชุดการตรวจสอบได้ดีเพียงใด โดยส่วนตัวฉันยังไม่เคยเห็นแอปพลิเคชันของการตรวจสอบความถูกต้องไขว้กับ ANOVA ดังนั้นฉันชอบที่จะปล่อยให้ส่วนนี้แก่ผู้อื่น

การทดสอบการสุ่ม / การเปลี่ยนแปลง

ได้รับคำเตือนคำศัพท์ไม่ได้ตกลงกัน ดูความแตกต่างระหว่างการทดสอบการสุ่มตัวอย่างและการทดสอบการเรียงสับเปลี่ยน

สมมติฐานว่างจะไม่มีความแตกต่างระหว่างประชากรของกลุ่ม A, B และ C ดังนั้นมันจึงไม่สำคัญว่าถ้าเราสุ่มแลกเปลี่ยนฉลากของค่า Xvar 15 ค่า หากค่า F ที่สังเกตไว้ แต่เดิม (หรือสถิติอื่น) ไม่เห็นด้วยกับสิ่งที่ได้รับหลังจากการแลกเปลี่ยนฉลากแบบสุ่มมันอาจเป็นเรื่องสำคัญและสมมติฐานว่างสามารถถูกปฏิเสธได้

observed_F_value <- anova(lm(Yvar ~ Xvar))$"F value"[1]

n <- 10000
permutation_F_values <- numeric(length=n)

for(i in 1:n){
   # note: the sample function without extra parameters defaults to a permutation
   temp_fit <- anova(lm(Yvar ~ sample(Xvar)))
   permutation_F_values[i] <- temp_fit$"F value"[1]
}

hist(permutation_F_values, xlim=range(c(observed_F_value, permutation_F_values)))
abline(v=observed_F_value, lwd=3, col="red")
cat("P value: ", sum(permutation_F_values >= observed_F_value), "/", n, "\n", sep="")

histogram

ระวังด้วยวิธีการที่คุณมอบหมายฉลากในกรณีของการออกแบบที่ซับซ้อน นอกจากนี้โปรดทราบว่าในกรณีของความแปรปรวนที่ไม่เท่ากันสมมติฐานว่างของการแลกเปลี่ยนไม่เป็นความจริงในตอนแรกดังนั้นการทดสอบการเปลี่ยนแปลงนี้จะไม่ถูกต้อง

ที่นี่เราไม่ได้ผ่านการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมดของฉลากนี่คือการประเมินค่าMonte Carloของค่า P ด้วยชุดข้อมูลขนาดเล็กคุณสามารถผ่านการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมด แต่รหัส R- ข้างต้นนั้นค่อนข้างเข้าใจง่าย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.