การคำนวณค่า p จากการแจกแจงโดยพลการ


14

ฉันหวังว่านี่ไม่ใช่คำถามงี่เง่า สมมติว่าฉันมีการกระจายอย่างต่อเนื่องโดยพลการ ฉันมีสถิติด้วยและฉันต้องการใช้การแจกแจงแบบสุ่มนี้เพื่อรับค่า p สำหรับสถิตินี้

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

คำตอบ:


12

FpT1F(T)F(x)=xp(t)dt

dF <- function(x)dnorm(x)
pF <- function(q)integrate(dF,-Inf,q)$value 

> pF(1)
[1] 0.8413448
> pnorm(1)
[1] 0.8413447

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

คุณสามารถส่งผ่านพารามิเตอร์ของหลักสูตรไปpFได้หากคุณมีค่าพารามิเตอร์หลายรายการเพื่อทดลองใช้และไม่ต้องการกำหนดใหม่dFในแต่ละครั้ง

dF <- function(x,mean=0,sd=1)dnorm(x,mean=mean,sd=sd)
pF <- function(q,mean=0,sd=1)integrate(dF,-Inf,q,mean=mean,sd=sd)$value 

> pF(1,1,1)
[1] 0.5
> pnorm(1,1,1)
[1] 0.5

แน่นอนว่าคุณสามารถใช้วิธี Monte-Carlo ตามรายละเอียดโดย @suncoolsu นี่จะเป็นวิธีการเชิงตัวเลขสำหรับการรวมเข้าด้วยกัน


ฉันคิดว่าวิธีการของคุณนั้นง่ายกว่าที่ฉันแนะนำโดยเฉพาะอย่างยิ่งหากไม่มีข้อ จำกัด ในฟังก์ชั่นที่คุณรวมเข้าด้วยกัน ฉันไม่ได้ตระหนักถึงเทคโนโลยีเชิงตัวเลข ใน R.
suncoolsu

ใช่ฉันคิดว่านี่สอดคล้องกับความสามารถในปัจจุบันของฉันมากขึ้น ขอบคุณ!
Alan H.

ที่จริงฉันไม่แน่ใจว่าฉันค่อนข้างทำตามวิธีการทำงานของฟังก์ชั่นเหล่านี้ ตัวอย่างให้ผลลัพธ์สำหรับการแจกแจงแบบปกติ แต่ฉันจะเสียบฟังก์ชันความหนาแน่นของความน่าจะเป็นได้ที่ไหน
Alan H.

(ฉันทำการทดสอบเสร็จแล้วและข้อมูลของฉันดูเหมือนจะไม่ใช่เรื่องปกติจากระยะไกล)
Alan H.

@Alan dFเอชเสียบฟังก์ชั่นความหนาแน่นของคุณใน นั่นคือdFควรส่งคืนค่าฟังก์ชันความหนาแน่นตามอาร์กิวเมนต์ที่กำหนด
mpiktas

9

ใช่มันเป็นไปได้ที่จะใช้การจัดจำหน่ายโดยพลการใด ๆ ที่จะได้รับ p-value สำหรับสถิติใดในทางทฤษฎีและในทางปฏิบัติคุณสามารถคำนวณค่า p (ด้านเดียว) ด้วยสูตรนี้

pvalue=P[T>Tobserved|H0holds]

TTobserved

ถ้าคุณรู้ว่าการกระจายตัวทางทฤษฎีของ TH0T

ข้อสมมติฐานเดียวที่คุณทำที่นี่คือ - คุณรู้ว่าการแจกแจงโมฆะของ T (ซึ่งอาจไม่อยู่ในรูปแบบตัวสร้างตัวเลขสุ่ม R มาตรฐาน) นั่นคือมัน - ตราบใดที่คุณรู้ว่าการแจกแจงโมฆะสามารถคำนวณค่า p ได้


1
ฉันต้องพูด - นี่คือเหตุผลหนึ่งว่าทำไมค่า p จึงเป็นที่นิยมและง่ายต่อการเข้าใจผิด (IMHO)
suncoolsu

ตกลงนี่เหมาะสมแล้ว ฉันมีสิ่งที่ฉันเชื่อว่าเป็นการประมาณค่าที่ดีของการแจกแจงโมฆะ มีคำแนะนำเกี่ยวกับวิธีการใช้สิ่งนี้ใน R หรือไม่? ขอบคุณ!
Alan H.

1
@Alan - คุณรู้วิธีสร้างค่าสุ่มจากการกระจาย Null ของคุณหรือไม่ ถ้าใช่สมมติว่า - T = c (T1, ... , TN) ดึงมาจากการแจกแจงโมฆะ - p-value = sum (T> T_obs) / N หากคุณไม่ทราบวิธีการสร้างคุณอาจต้องใช้ Metropolis Sampling หรือ Gibbs Sampling เพื่อรับ T1 ... TN แต่มันทำได้ดีมาก
suncoolsu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.