এক্সপেক্টেড ভ্যালু ও প্রোবাবিলিস্টিক অ্যানালাইসিস
এই পাঠে যা শিখবেন
- এক্সপেক্টেড ভ্যালুর ফরমাল সংজ্ঞা এবং "সম্ভাব্যতার সমষ্টি ১.০" শর্তের গুরুত্ব
- Python দিয়ে
expected_value(outcomes, probabilities)ফাংশন — assert-সহ সম্ভাব্যতা যাচাই - একটি তিন-দৃশ্যকল্প প্রজেক্টের EV ও স্ট্যান্ডার্ড ডেভিয়েশন একসাথে গণনা করে রিস্ক-রিটার্ন প্রোফাইল তৈরি
- কেন শুধু EV দেখে সিদ্ধান্ত নেওয়া অসম্পূর্ণ — একই EV-এর দুটি প্রজেক্টের ঝুঁকি ভিন্ন হতে পারে
১ · এক্সপেক্টেড ভ্যালু কী
এক্সপেক্টেড ভ্যালুExpected Value (EV)সম্ভাব্য সব ফলাফলের সম্ভাব্যতা-ভারিত গড়, mutually exclusive ও exhaustive দৃশ্যকল্পের উপর। হলো একাধিক অনিশ্চিত ফলাফলকে একটি একক প্রতিনিধিত্বমূলক সংখ্যায় সংক্ষিপ্ত করার পদ্ধতি —
$EV = \sum_{i} p_i \times \text{outcome}_i, \quad \text{যেখানে} \sum_i p_i = 1$
শর্তটি গুরুত্বপূর্ণ — দৃশ্যকল্পগুলো অবশ্যই mutually exclusive (একই সাথে দুটো ঘটতে পারবে না) এবং exhaustive (সব সম্ভাবনা কভার করে, তাই সমষ্টি ঠিক ১.০) হতে হবে। L48-এ দেখা ডিসিশন ট্রির চান্স নোডে ঠিক এই একই সূত্র ব্যবহার হয়েছিল — এই পাঠ তাকে ফরমালি প্রতিষ্ঠিত করছে এবং রিস্ক পরিমাপ (স্ট্যান্ডার্ড ডেভিয়েশন) যোগ করছে।
$EV = \sum p_i \cdot \text{outcome}_i$ — কেন্দ্রীয় প্রবণতা, "গড়ে কী আশা করা যায়"।
$\sqrt{\sum p_i (\text{outcome}_i-EV)^2}$ — বিচ্ছুরণ, "ফলাফল কতটা অনিশ্চিত"।
$\sum p_i = 1$ না হলে গণনা ভুল দৃশ্যকল্প-সেট থেকে হচ্ছে — কোডে অবশ্যই assert করা উচিত।
২ · কোড সেল — তিন-দৃশ্যকল্প ডিমান্ড উদাহরণ
ধরা যাক একটি প্রজেক্টের তিনটি চাহিদা-দৃশ্যকল্প আছে — পেসিমিস্টিক ($PW=-\$8{,}000$, সম্ভাব্যতা ০.২৫), মোস্ট-লাইকলি ($PW=\$22{,}000$, সম্ভাব্যতা ০.৫০), এবং অপ্টিমিস্টিক ($PW=\$60{,}000$, সম্ভাব্যতা ০.২৫)। নিচের কোড সেলে সম্ভাব্যতার সমষ্টি যাচাই করে EV ও স্ট্যান্ডার্ড ডেভিয়েশন গণনা করা হচ্ছে।
def expected_value(outcomes, probabilities):
assert abs(sum(probabilities) - 1.0) < 1e-9, "সম্ভাব্যতার সমষ্টি অবশ্যই ১.০ হতে হবে"
return sum(p * o for p, o in zip(probabilities, outcomes))
def std_dev(outcomes, probabilities, ev):
var = sum(p * (o - ev) ** 2 for p, o in zip(probabilities, outcomes))
return var ** 0.5
outcomes = [-8000, 22000, 60000] # পেসিমিস্টিক, মোস্ট-লাইকলি, অপ্টিমিস্টিক PW
probabilities = [0.25, 0.50, 0.25]
print(f"সম্ভাব্যতার সমষ্টি = {sum(probabilities):.2f}")
ev = expected_value(outcomes, probabilities)
sd = std_dev(outcomes, probabilities, ev)
print(f"এক্সপেক্টেড ভ্যালু EV = ${ev:,.2f}")
print(f"স্ট্যান্ডার্ড ডেভিয়েশন = ${sd:,.2f}")
print()
labels = ["পেসিমিস্টিক", "মোস্ট-লাইকলি", "অপ্টিমিস্টিক"]
print(f"{'দৃশ্যকল্প':<14} | {'সম্ভাব্যতা':>10} | {'PW':>14}")
print("-" * 44)
for label, p, o in zip(labels, probabilities, outcomes):
print(f"{label:<14} | {p:>9.0%} | ${o:>12,.2f}")
এক্সপেক্টেড ভ্যালু একাধিক অনিশ্চিত ফলাফলকে একটি একক সিদ্ধান্ত-সহায়ক সংখ্যায় সংক্ষিপ্ত করে, কিন্তু সবসময় সম্ভাব্যতার সমষ্টি ১.০ কিনা তা যাচাই করা আবশ্যক — নইলে ভুল দৃশ্যকল্প-সেট থেকে ভুল সিদ্ধান্ত আসতে পারে। স্ট্যান্ডার্ড ডেভিয়েশন EV-এর সঙ্গী হিসেবে সবসময় রিপোর্ট করা উচিত, কারণ এটিই বলে দেয় ফলাফল কতটা অনিশ্চিত। যখন একই সময়ে একাধিক ভেরিয়েবল অনিশ্চিত থাকে (শুধু একটি নয়), তখন এই তিন/পাঁচ- দৃশ্যকল্প পদ্ধতির বদলে মন্টে কার্লো সিমুলেশন (L50) ব্যবহার করা হয়।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১
কোড সেলের assert লাইনটি কেন গুরুত্বপূর্ণ — এটি না থাকলে কী সমস্যা হতে পারে?
যদি সম্ভাব্যতাগুলোর সমষ্টি ১.০ না হয় (যেমন ভুলবশত একটি দৃশ্যকল্প বাদ পড়ে গেলে বা টাইপো হলে), EV গণনা
নীরবে ভুল ফলাফল দেবে — কোনো এরর ছাড়াই। assert লাইনটি এই ভুলকে গণনা শুরুর আগেই ধরে ফেলে,
যাতে ভুল সম্ভাব্যতা-সেট দিয়ে সিদ্ধান্ত না নেওয়া হয়।
প্র ০২ দুটো প্রজেক্টের EV একই হলেও একটির std dev বেশি হতে পারে কীভাবে — একটি উদাহরণ ভাবুন।
ধরা যাক প্রজেক্ট X-এর ফলাফল ৫০% সম্ভাবনায় $\$20{,}000$ ও ৫০% সম্ভাবনায় $\$20{,}000$ (একদম নিশ্চিত) — EV$=\$20{,}000$, std dev$=0$। প্রজেক্ট Y-এর ফলাফল ৫০% সম্ভাবনায় $\$50{,}000$ ও ৫০% সম্ভাবনায় $-\$10{,}000$ — EV একই $\$20{,}000$, কিন্তু std dev অনেক বেশি। দুটোর EV সমান হলেও Y অনেক বেশি ঝুঁকিপূর্ণ — শুধু EV দেখলে এই পার্থক্য ধরা পড়ে না।
প্র ০৩ যদি "মোস্ট-লাইকলি" দৃশ্যকল্পের সম্ভাব্যতা ০.৫০ থেকে বাড়িয়ে ০.৭০ করা হয় (এবং বাকি দুটো কমিয়ে ০.১৫ করে সমান রাখা হয়), EV কি বাড়বে না কমবে?
মোস্ট-লাইকলি দৃশ্যকল্পের PW ($\$22{,}000$) EV-এর কাছাকাছিই আছে, তাই তার সম্ভাব্যতা বাড়ালে EV খুব বেশি বদলাবে না — তবে স্ট্যান্ডার্ড ডেভিয়েশন উল্লেখযোগ্যভাবে কমবে, কারণ চরম দৃশ্যকল্পগুলোর (পেসিমিস্টিক, অপ্টিমিস্টিক) ওজন কমে গেছে। এটি দেখায় সম্ভাব্যতার বণ্টন EV-এর চেয়ে ঝুঁকির উপর বেশি প্রভাব ফেলতে পারে।
অনুশীলন
-
চিন্তা করুন: একজন প্রকল্প ব্যবস্থাপক শুধু "মোস্ট-লাইকলি" দৃশ্যকল্পের ($\$22{,}000$) উপর
ভিত্তি করে সিদ্ধান্ত নিতে চান, EV ($\$24{,}000$) না দেখে। এই পদ্ধতির সমস্যা কী?
শুধু "মোস্ট-লাইকলি" দৃশ্যকল্প দেখলে অপ্টিমিস্টিক ও পেসিমিস্টিক দৃশ্যকল্পের সম্ভাব্যতা ও প্রভাব সম্পূর্ণ উপেক্ষিত হয়ে যায়। EV এই তিনটি দৃশ্যকল্পের সম্ভাব্যতা-ভারিত প্রভাব একসাথে ধরে, যা দীর্ঘমেয়াদে বহুবার একই ধরনের সিদ্ধান্ত নিলে গড়ে সবচেয়ে সঠিক প্রত্যাশিত ফলাফল দেয় — একটিমাত্র দৃশ্যকল্প নয়।
-
পরীক্ষা করুন: উপরের কোড সেলে
outcomes-এর অপ্টিমিস্টিক মান60000-কে100000-এ বদলে Run চেপে দেখুন — নতুন EV ও std dev কত হয়?নতুন $EV = 0.25 \times (-8000) + 0.50 \times 22000 + 0.25 \times 100000 = -2000+11000+25000= \$34{,}000$ — আগের $\$24{,}000$ থেকে বেড়ে যায়। std dev-ও উল্লেখযোগ্যভাবে বাড়বে, কারণ অপ্টিমিস্টিক ফলাফল এখন EV থেকে আরও দূরে — অর্থাৎ বেশি সম্ভাব্য রিটার্নের সাথে বেশি অনিশ্চয়তাও এসেছে।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ টাইম ভ্যালু অফ মানি, ক্যাশ ফ্লো সিরিজ, ওয়ার্থ-ভিত্তিক তুলনা, রেট অফ রিটার্ন, ডেপ্রিসিয়েশন, ট্যাক্স, ইনফ্লেশন, রিস্ক অ্যানালাইসিস ও ক্যাপিটাল বাজেটিং — সম্পূর্ণ কোর্স।
- পরের পাঠ: রিস্ক অ্যানালাইসিসের জন্য মন্টে কার্লো সিমুলেশন L50 একাধিক ভেরিয়েবল একসাথে অনিশ্চিত হলে হাজার হাজার র্যান্ডম ট্রায়াল দিয়ে ফলাফলের বণ্টন তৈরি।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity, Cloud Computing & DevOps, Computer Networks, Operating Systems, Computer Architecture, Programming Languages & Compiler Design, Software Engineering & Git, Theory of Computation ও Engineering Economics — সব এক জায়গায়।