การใช้ประโยชน์จากการจำลอง Monte Carlo

Monte Carlo Simulations ใน Python

Izzy Weber

Curriculum Manager, DataCamp

ความหลากหลายของการประยุกต์ใช้

การจำลอง Monte Carlo ถูกนำไปใช้ในหลายสาขา เช่น...

  • การเงินและธุรกิจ
  • วิศวกรรม
  • วิทยาศาสตร์กายภาพ
Monte Carlo Simulations ใน Python

การพยากรณ์ราคาหุ้น

กราฟแสดงราคาหุ้นที่จำลองขึ้นตามเวลา

1 https://marketxls.com/monte-carlo-simulation-excel
Monte Carlo Simulations ใน Python

การบริหารความเสี่ยง

กราฟแสดงช่วงความเชื่อมั่น VaR

1 https://www.investopedia.com/articles/04/092904.asp https://corporatefinanceinstitute.com/course/modeling-risk-monte-carlo-simulation/
Monte Carlo Simulations ใน Python

การระบุตำแหน่งจับยึด

 

กราฟิกแสดงตำแหน่งจับยึดของโปรตีน

1 https://pubs.rsc.org/en/content/articlelanding/2020/ra/d0ra01127d
Monte Carlo Simulations ใน Python

การวิเคราะห์ความน่าเชื่อถือในงานวิศวกรรม

กราฟแสดงโดเมนที่ปลอดภัยและโดเมนที่เกิดความล้มเหลว

1 www.researchgate.net/publication/228814883_Probabilistic_Transformation_Method_in_Reliability_Analysis
Monte Carlo Simulations ใน Python

ข้อดีของการจำลอง Monte Carlo

 

  • คำนึงถึงช่วงค่าที่เป็นไปได้ของตัวแปรนำเข้าต่าง ๆ
  • แสดงไม่เพียงแค่สิ่งที่อาจเกิดขึ้น แต่ยังบอกความน่าจะเป็นของแต่ละผลลัพธ์
  • ช่วยให้มองเห็นช่วงของผลลัพธ์ที่เป็นไปได้ได้ง่าย
  • สามารถวิเคราะห์ว่าจะเกิดอะไรขึ้นภายใต้เงื่อนไขที่แตกต่างกัน

 

การเพิ่มประสิทธิภาพด้วยการจำลอง Monte Carlo

Monte Carlo Simulations ใน Python

ถุงลูกเต๋าลำเอียง

ทอยลูกเต๋าจากถุงสองใบ แต่ละใบบรรจุลูกเต๋าลำเอียงสามลูก:

bag1 = [[1, 2, 3, 6, 6, 6], [1, 2, 3, 4, 4, 6], [1, 2, 3, 3, 3, 5]]
bag2 = [[2, 2, 3, 4, 5, 6], [3, 3, 3, 4, 4, 5], [1, 1, 2, 4, 5, 5]]

 

การจำลอง:

  • สุ่มหยิบลูกเต๋าจากแต่ละถุงหนึ่งลูก แล้วทอยพร้อมกัน
  • สำเร็จหากผลรวมของลูกเต๋าทั้งสองเท่ากับแปด ไม่เช่นนั้นถือว่าล้มเหลว
  • คำนวณความน่าจะเป็นของความสำเร็จสำหรับลูกเต๋าแต่ละคู่ที่ไม่ซ้ำกัน
Monte Carlo Simulations ใน Python

การจำลองลูกเต๋าลำเอียง

def roll_biased_dice(n):
    results = {}

for i in range(n): bag_index1 = random.randint(0, 2) die_index1 = random.randint(0, 5) bag_index2 = random.randint(0, 2) die_index2 = random.randint(0, 5)
point1 = bag1[bag_index1][die_index1] point2 = bag2[bag_index2][die_index2]
key = "%s_%s" % (point1, point2)
if point1 + point2 == 8: if key not in results: results[key] = 1 else: results[key] += 1
Monte Carlo Simulations ใน Python

ผลลัพธ์ของลูกเต๋าลำเอียง

dice1_dice2 probability_of_success
6_2 5.54
3_5 2.67
2_6 1.45
4_4 4
Monte Carlo Simulations ใน Python

ผลลัพธ์ของลูกเต๋าลำเอียง

bag1 = [[1, 2, 3, 6, 6, 6], [1, 2, 3, 4, 4, 6], [1, 2, 3, 3, 3, 5]]
bag2 = [[2, 2, 3, 4, 5, 6], [3, 3, 3, 4, 4, 5], [1, 1, 2, 4, 5, 5]]

ผลการจำลอง 10,000 รอบ: แผนภูมิแท่งแสดงความน่าจะเป็นของความสำเร็จในแต่ละคู่ลูกเต๋า

Monte Carlo Simulations ใน Python

ผลลัพธ์ของลูกเต๋าลำเอียง

bag1 = [[2, 2, 3, 4, 6, 6], [1, 2, 2, 4, 6, 6], [1, 2, 3, 3, 3, 3]]
bag2 = [[1, 2, 3, 4, 5, 6], [1, 3, 3, 4, 4, 6], [2, 2, 2, 3, 5, 5]]

ผลการจำลอง 10,000 รอบ: แผนภูมิแท่งแสดงความน่าจะเป็นของความสำเร็จในแต่ละคู่ลูกเต๋า

Monte Carlo Simulations ใน Python

ข้อจำกัดของการจำลอง Monte Carlo

  • ผลลัพธ์ของโมเดลขึ้นอยู่กับคุณภาพของข้อมูลนำเข้า
  • ความน่าจะเป็นของเหตุการณ์สุดขีดมักถูกประเมินต่ำเกินไป
Monte Carlo Simulations ใน Python

มาฝึกกันเถอะ!

Monte Carlo Simulations ใน Python

Preparing Video For Download...