FpT1−F(T)F(x)=∫x−∞p(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 นี่จะเป็นวิธีการเชิงตัวเลขสำหรับการรวมเข้าด้วยกัน