ความพอดีของฮีสโตแกรม 2D


19

ฉันมีข้อมูลสองชุดที่แสดงถึงพารามิเตอร์ของดาว: อันที่สังเกตและแบบจำลอง ด้วยชุดเหล่านี้ฉันสร้างสิ่งที่เรียกว่าสองสีแผนภาพ (TCD) ตัวอย่างสามารถดูได้ที่นี่:

histogramas

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

ดังนั้นสิ่งที่ฉันต้องการคือวิธีที่เชื่อถือได้ในการตรวจสอบความดีของไดอะแกรมแบบB (โมเดล) กับไดอะแกรมA (สังเกต)

ตอนนี้สิ่งที่ฉันทำคือฉันสร้างฮิสโตแกรม 2D หรือตาราง (นั่นคือสิ่งที่ฉันเรียกมันอาจจะมีชื่อที่เหมาะสมกว่า) สำหรับแต่ละแผนภาพโดยการผูกทั้งสองแกน (แต่ละ 100 ถังสำหรับแต่ละ) จากนั้นฉันก็ผ่านแต่ละเซลล์ของตาราง และฉันพบความแตกต่างที่แน่นอนในการนับระหว่างAและBสำหรับเซลล์นั้น หลังจากผ่านไปแล้วเซลล์ทั้งหมดที่ผมสรุปค่าสำหรับแต่ละเซลล์และดังนั้นผมจึงจบลงด้วยพารามิเตอร์บวกเดียวที่เป็นตัวแทนของความดีของพอดี (คน ) ระหว่างและB ยิ่งใกล้ศูนย์มากเท่าไหร่ก็ยิ่งพอดี โดยทั่วไปนี่คือพารามิเตอร์ที่มีลักษณะดังนี้:gf

gf=ij|aijbij|; ที่คือจำนวนของดาวในแผนภาพสำหรับเซลล์เฉพาะที่ (กำหนดโดย ) และคือหมายเลขสำหรับBaijijbij

นี่คือสิ่งที่ความแตกต่างในแต่ละเซลล์ดูเหมือนในตารางที่ฉันสร้าง (โปรดสังเกตว่าฉันไม่ได้ใช้ค่าสัมบูรณ์ของในภาพนี้ แต่ฉันจะใช้พวกเขาเมื่อคำนวณพารามิเตอร์ ):(aijbij)(aijbij)gf

Hess

ปัญหาคือฉันได้รับการแนะนำว่านี่อาจไม่ใช่ตัวประมาณที่ดีเพราะส่วนใหญ่นอกจากการบอกว่าแบบนี้ดีกว่าตัวอื่นเพราะพารามิเตอร์ต่ำกว่าฉันไม่สามารถพูดอะไรได้มากกว่านี้


สำคัญ :

(ขอบคุณ @PeterEllis ที่นำเรื่องนี้ขึ้นมา)

1- คะแนนในBไม่เกี่ยวข้องอย่างใดอย่างหนึ่งต่อหนึ่งกับคะแนนใน นั่นเป็นสิ่งสำคัญที่ต้องเก็บไว้ในใจเมื่อค้นหาแบบที่ดีที่สุด: จำนวนของจุดในและBคือไม่จำเป็นต้องเหมือนกันและความดีของพอดีทดสอบควรบัญชีสำหรับความแตกต่างนี้และพยายามที่จะลดความมัน

2- จำนวนคะแนนในชุดข้อมูลBทุกตัว (เอาต์พุตโมเดล) ที่ฉันพยายามให้พอดีกับAนั้นไม่ได้รับการแก้ไข


ฉันเคยเห็นการทดสอบChi-Squared ที่ใช้ในบางกรณี:

i(OiEi)2/Ei ; โดยที่เป็นความถี่ที่สังเกตได้ (model) และนั้นเป็นความถี่ที่คาดหวัง (การสังเกต)OiEi

แต่ปัญหาคือ: ฉันจะทำอย่างไรถ้าเป็นศูนย์? อย่างที่คุณเห็นในภาพด้านบนถ้าฉันสร้างตารางของไดอะแกรมเหล่านั้นในช่วงนั้นจะมีเซลล์จำนวนมากที่เป็นศูนย์EiEi

นอกจากนี้ฉันได้อ่านบางคนแนะนำให้ทดสอบความน่าจะเป็นของปัวซองในกรณีเช่นนี้ซึ่งมีส่วนเกี่ยวข้องกับฮิสโทแกรม หากถูกต้องฉันขอขอบคุณจริง ๆถ้ามีคนสามารถสอนฉันเกี่ยวกับวิธีการใช้การทดสอบนั้นกับกรณีนี้ (จำไว้ว่าความรู้สถิติของฉันค่อนข้างแย่ดังนั้นโปรดรักษามันให้ง่ายที่สุดเท่าที่จะทำได้ :)


คะแนนใน B มีความสัมพันธ์แบบหนึ่งต่อหนึ่งกับคะแนนใน A (เช่นแต่ละคนเป็นดาวดวงใดดวงหนึ่ง) หรือเป็นนามธรรมมากกว่านั้นหรือไม่?
Peter Ellis

สวัสดี @PeterEllis ไม่มีจุดBที่ไม่เกี่ยวข้องอย่างใดอย่างหนึ่งต่อหนึ่งกับคะแนนใน ในความเป็นจริงว่าเป็นอีกสิ่งสำคัญที่ต้องเก็บไว้ในใจเมื่อค้นหาแบบที่ดีที่สุด: จำนวนของจุดในและBมีไม่จำเป็นต้องเท่ากัน
กาเบรียล

สวัสดี - คำถามที่น่าสนใจฉันจะพยายามเขียนคำตอบที่เหมาะสม แต่ละเวอร์ชันของ B มีคะแนนเท่ากันหรือแตกต่างกันไปเช่นกัน?
ปีเตอร์เอลลิส

พวกเขาแตกต่างกันเช่นกันเพียงจำนวนคะแนนในAยังคงที่ คุณไม่รู้หรอกว่าคุณจะช่วยฉันมากแค่ไหนถ้าคุณช่วยฉันหา @PeterEllis
Gabriel

คำถามนี้มีความคล้ายคลึงกับหัวข้อนี้อย่างมาก: stats.stackexchange.com/questions/71036/ …ฉันให้คำตอบที่ไหน
L Fischman

คำตอบ:


14

ตกลงฉันได้แก้ไขคำตอบนี้อย่างกว้างขวางแล้ว ฉันคิดว่าแทนที่จะใช้ข้อมูลของคุณและเปรียบเทียบจำนวนในแต่ละถังขยะคำแนะนำที่ฉันได้ฝังไว้ในคำตอบดั้งเดิมของฉันคือการปรับความหนาแน่นของเคอร์เนล 2d ให้เหมาะสมและการเปรียบเทียบมันเป็นแนวคิดที่ดีกว่ามาก ยิ่งไปกว่านั้นมีฟังก์ชั่น kde.test () ในแพ็คเกจ ksของ Tarn Duong สำหรับ R ที่ทำได้ง่ายเหมือนพาย

ตรวจสอบเอกสารประกอบสำหรับ kde.test สำหรับรายละเอียดเพิ่มเติมและข้อโต้แย้งที่คุณสามารถปรับแต่งได้ แต่โดยพื้นฐานแล้วมันทำในสิ่งที่คุณต้องการอย่างแท้จริง ค่า p ที่ส่งคืนคือความน่าจะเป็นในการสร้างข้อมูลสองชุดที่คุณกำลังเปรียบเทียบภายใต้สมมติฐานว่างที่พวกมันถูกสร้างขึ้นจากการแจกแจงแบบเดียวกัน ดังนั้นค่า p สูงกว่าความพอดีระหว่าง A และ B ดูตัวอย่างของฉันด้านล่างซึ่งนี่จะง่ายต่อการเลือกว่า B1 และ A แตกต่างกัน แต่ B2 และ A นั้นเหมือนกัน (ซึ่งเป็นวิธีที่พวกเขาสร้างขึ้น) .

# generate some data that at least looks a bit similar
generate <- function(n, displ=1, perturb=1){
    BV <- rnorm(n, 1*displ, 0.4*perturb)
    UB <- -2*displ + BV + exp(rnorm(n,0,.3*perturb))
    data.frame(BV, UB)
}
set.seed(100)
A <- generate(300)
B1 <- generate(500, 0.9, 1.2)
B2 <- generate(100, 1, 1)
AandB <- rbind(A,B1, B2)
AandB$type <- rep(c("A", "B1", "B2"), c(300,500,100))

# plot
p <- ggplot(AandB, aes(x=BV, y=UB)) + facet_grid(~type) + 
    geom_smooth() +     scale_y_reverse() + theme_grey(9)
win.graph(7,3)
p +geom_point(size=.7)

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

> library(ks)
> kde.test(x1=as.matrix(A), x2=as.matrix(B1))$pvalue
[1] 2.213532e-05
> kde.test(x1=as.matrix(A), x2=as.matrix(B2))$pvalue
[1] 0.5769637

คำตอบดั้งเดิมของฉันมีเพียงเพราะตอนนี้เชื่อมโยงกับมันจากที่อื่นซึ่งไม่ได้รับความรู้สึก

ครั้งแรกอาจมีวิธีอื่นในการทำเช่นนี้

Justel et alได้นำเสนอส่วนขยายแบบหลายตัวแปรของการทดสอบ Kolmogorov-Smirnov ของความดีที่พอดีซึ่งฉันคิดว่าสามารถนำมาใช้ในกรณีของคุณเพื่อทดสอบว่าชุดข้อมูลจำลองแต่ละชุดมีความเหมาะสมกับต้นฉบับมากเพียงใด ฉันหาการติดตั้งแบบนี้ไม่ได้ (เช่นใน R) แต่บางทีฉันอาจไม่ได้ดูหนักพอ

หรืออีกวิธีหนึ่งอาจมีวิธีการทำเช่นนี้โดยการปรับcopulaให้พอดีกับข้อมูลต้นฉบับและข้อมูลชุดแต่ละชุดแล้วเปรียบเทียบแบบจำลองเหล่านั้น มีการนำไปใช้ของวิธีการนี้ใน R และที่อื่น ๆ แต่ฉันไม่คุ้นเคยเป็นพิเศษกับพวกเขาดังนั้นจึงไม่ได้ลอง

แต่เพื่อตอบคำถามของคุณโดยตรงแนวทางที่คุณดำเนินการนั้นเป็นแนวทางที่สมเหตุสมผล หลายจุดแนะนำตัวเอง:

  • ยกเว้นว่าชุดข้อมูลของคุณใหญ่กว่าที่คิดฉันคิดว่าตาราง 100 x 100 เป็นช่องเก็บของมากเกินไป โดยสังเขปฉันสามารถจินตนาการได้ว่าการสรุปชุดข้อมูลต่าง ๆ นั้นมีความแตกต่างกันมากกว่าที่พวกเขาเป็นเพียงเพราะความแม่นยำของถังขยะของคุณหมายความว่าคุณมีถังขยะจำนวนมากที่มีจำนวนคะแนนต่ำแม้ว่าความหนาแน่นของข้อมูลจะสูง อย่างไรก็ตามเรื่องนี้ในที่สุดก็เป็นเรื่องของการตัดสิน แน่นอนฉันจะตรวจสอบผลลัพธ์ของคุณด้วยวิธีการต่าง ๆ ในการ binning

  • เมื่อคุณทำ binning เสร็จแล้วและคุณได้แปลงข้อมูลของคุณเป็น (ในผล) ตารางการนับที่มีสองคอลัมน์และจำนวนแถวเท่ากับจำนวนของช่อง (10,000 ในกรณีของคุณ) คุณมีปัญหามาตรฐานในการเปรียบเทียบสองคอลัมน์ ของการนับ ไม่ว่าจะเป็นการทดสอบแบบไคสแควร์หรือการปรับตัวแบบปัวซองบางชนิดจะทำงานได้ แต่เมื่อคุณพูดว่ามีความอึดอัดเพราะจำนวนศูนย์นับเป็นจำนวนมาก แบบจำลองเหล่านี้มักจะพอดีโดยการลดผลรวมของกำลังสองของความแตกต่างโดยถ่วงน้ำหนักด้วยค่าผกผันของจำนวนนับที่คาดไว้ เมื่อสิ่งนี้เข้าใกล้ศูนย์อาจทำให้เกิดปัญหาได้

แก้ไข - ส่วนที่เหลือของคำตอบนี้ฉันไม่เชื่อว่าจะเป็นแนวทางที่เหมาะสมอีกต่อไป

ng×2

ng×2ng

ฉันจำลองข้อมูลบางอย่างเพื่อให้ดูเหมือนคุณและพบว่าวิธีการนี้ค่อนข้างมีประสิทธิภาพในการระบุว่าชุดข้อมูล "B" ชุดใดของฉันที่สร้างขึ้นจากกระบวนการเดียวกับ "A" และแตกต่างกันเล็กน้อย มีประสิทธิภาพมากกว่าแน่นอนด้วยตาเปล่า

  • ng×2ปัญหาถ้าคุณใช้เพียงผลรวมของความแตกต่างแบบสัมบูรณ์หรือความแตกต่างกำลังสองตามที่คุณเสนอในตอนแรก) อย่างไรก็ตามมันเป็นเรื่องสำคัญที่ B เวอร์ชันแต่ละเวอร์ชันของคุณมีคะแนนที่แตกต่างกัน โดยทั่วไปชุดข้อมูล B ที่ใหญ่กว่าจะมีแนวโน้มที่จะส่งคืนค่า p ที่ต่ำกว่า ฉันสามารถคิดถึงวิธีแก้ปัญหาที่เป็นไปได้หลายอย่างสำหรับปัญหานี้ 1. คุณสามารถลดชุดข้อมูล B ทั้งหมดของคุณให้มีขนาดเท่ากัน (ขนาดของชุด B ที่เล็กที่สุดของคุณ) โดยการสุ่มตัวอย่างขนาดนั้นจากชุด B ทั้งหมดที่ใหญ่กว่าขนาดนั้น 2. คุณสามารถใส่ความหนาแน่นของเคอร์เนลสองมิติในชุด B แต่ละชุดของคุณก่อนแล้วจึงจำลองข้อมูลจากการประมาณนั้นที่มีขนาดเท่ากัน 3. คุณสามารถใช้การจำลองบางอย่างเพื่อหาความสัมพันธ์ของค่า p กับขนาดและใช้เพื่อ "แก้ไข" ค่า p ที่คุณได้รับจากขั้นตอนข้างต้นเพื่อให้สามารถเทียบเคียงได้ อาจมีทางเลือกอื่น ๆ ด้วย สิ่งที่คุณทำจะขึ้นอยู่กับการสร้างข้อมูล B ขนาดแตกต่างกันอย่างไร ฯลฯ

หวังว่าจะช่วย


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

ไม่มีปัญหา. ฉันต่อสู้ด้วยวิธีที่ดีในการจัดรูปแบบของสัญลักษณ์แสดงหัวข้อย่อยครั้งสุดท้ายของฉัน - สิ่งที่ฉันต้องการคือลำดับชั้นของรายการลำดับเลขภายใต้หัวข้อย่อย แต่ฉันหาวิธีทำไม่ได้
Peter Ellis

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

1
ฉันแนะนำหนังสือของวิลคอกซ์เป็นข้อความสถิติทั่วไปที่ใช้ R (ดูคำตอบของฉันstats.stackexchange.com/questions/25632/… ) แม้ว่าเขาจะไม่ครอบคลุมเนื้อหาที่แน่นอนของฟิชเชอร์ แต่ก็มีรายละเอียดเพียงพอเกี่ยวกับข้อความเฉพาะบนเว็บซึ่งจะสมเหตุสมผลมากกว่าหากคุณมีพื้นหลังในหนังสือเล่มนั้นจากการทดสอบที่คล้ายกัน อาจมีข้อความที่ดีกว่าในปัญหาความพอดีแบบนี้ แต่ฉันคิดว่าหนังสือของวิลค็อกซ์นั้นยอดเยี่ยมเหมือนอินโทรทั่วไปที่นำคุณไปสู่ระดับสูงอย่างรวดเร็ว
ปีเตอร์เอลลิส

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