การโน้มน้าวใจที่มีประสิทธิภาพ (ใน R)


9

ฉันต้องการคำนวณ / ประเมินผลการบิด

g(x)=Df(xt)ϕ(t)dt,

ที่คือความหนาแน่นและเป็นฟังก์ชั่นได้อย่างราบรื่นด้วยการสนับสนุนที่มีขนาดกะทัดรัดDการบิดไม่มีอยู่ในรูปแบบปิดและฉันจำเป็นต้องรวมเข้าด้วยกันเป็นตัวเลข คำถามของฉันคือ: มีวิธีที่มีประสิทธิภาพในการทำเช่นนี้? ฉันต้องการใช้มันใน R ดังนั้นฉันต้องการดูว่ามีวิธีที่ดีกว่าการใช้คำสั่งหรือไม่fϕD integrate()


2
ทั้งนี้ขึ้นอยู่กับสถานการณ์ที่ฉันมักจะทั้ง discretize กับไฟฟ้าขนาดใหญ่ 2 ถังและใช้อย่างรวดเร็วฟูเรียร์ ( ?fft) convolveหรือการใช้งาน วิธีการ fft ใช้เวลาทำงานอีกเล็กน้อยในการตั้งค่า แต่จะดีกว่าถ้าคุณจำเป็นต้องมีส่วนร่วมกับบางสิ่งหลาย ๆ ครั้ง บางครั้งอาจต้องใช้เวลาสักครู่ในการหาการตั้งค่าอาร์กิวเมนต์ที่เหมาะสมด้วยความมั่นใจ
Glen_b -Reinstate Monica

@Glen_b ขอบคุณ สำหรับฟังก์ชั่น univariateฉันคิดว่าการรวมโดยตรงอาจเร็วขึ้นแล้ว f
อาหาร

2
คุณถามหาวิธีที่มีประสิทธิภาพ - FFT เป็นจริงอย่างรวดเร็ว ; มันเพียงแค่ต้องตั้งค่าเล็กน้อย (binning, padding ด้วยศูนย์)
Glen_b -Reinstate Monica

@Glen_b ใช่ฉันเห็นด้วย fft เร็วมาก แต่ขั้นตอนก่อนหน้าอาจทำให้กระบวนการช้าลง ฉันจะเปรียบเทียบทั้งสองวิธี ขอบคุณ.
อาหาร

ฉันจำได้ว่าใช้convolveเพื่อจุดประสงค์นี้หลายครั้ง ตัวอย่างการทำงานที่เรียบง่ายปรากฏที่stats.stackexchange.com/a/41263 , stats.stackexchange.com/a/41255และstats.stackexchange.com/a/49444
whuber

คำตอบ:


9

คุณได้ดูแพ็คเกจ R เฉพาะสำหรับมันแล้วหรือยัง? ชอบconvolve, https://stat.ethz.ch/R-manual/R-devel/library/stats/html/convolve.html


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

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