পাঠ ৪৭ · ৫৭-এর মধ্যে · মডিউল ১১
Home / Courses / Engineering Economics / সেন্সিটিভিটি অ্যানালাইসিস

সেন্সিটিভিটি অ্যানালাইসিস

Sensitivity analysis
১০ মিনিট পড়া মধ্যম · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • সেন্সিটিভিটি অ্যানালাইসিসের "এক-সময়ে-এক-ভেরিয়েবল" (one-at-a-time) পদ্ধতি ও এর উদ্দেশ্য
  • একটি বেস-কেস প্রজেক্টের PW গণনা $P/A$ ফ্যাক্টর দিয়ে
  • Python দিয়ে রেভিনিউ, এক্সপেন্স ও ইনিশিয়াল কস্ট — প্রতিটি ভেরিয়েবল আলাদাভাবে ±১০%/২০%/৩০% বদলে PW-এর পরিসর (swing) পরিমাপ করে সবচেয়ে সংবেদনশীল ভেরিয়েবল খুঁজে বের করা
  • ফলাফলকে "টর্নেডো ডায়াগ্রাম" চিন্তার সাথে সংযুক্ত করা — কীভাবে ম্যানেজাররা এই তথ্য দিয়ে ঝুঁকি অগ্রাধিকার ঠিক করেন

১ · সেন্সিটিভিটি অ্যানালাইসিস কী ও কেন প্রয়োজন

প্রতিটি ইঞ্জিনিয়ারিং ইকোনমিক অ্যানালাইসিসের ইনপুট — রেভিনিউ, খরচ, লাইফ, সালভেজ ভ্যালু — আসলে ভবিষ্যতের অনুমান (estimate), নিশ্চিত সংখ্যা নয়। সেন্সিটিভিটি অ্যানালাইসিসSensitivity Analysisএকটি সময়ে একটি ইনপুট ভেরিয়েবল পদ্ধতিগতভাবে বদলে সিদ্ধান্ত-পরিমাপের উপর তার প্রভাব যাচাই করার কৌশল। এই প্রশ্নের উত্তর দেয় — "যদি আমার এস্টিমেট ভুল হয়, কোন ভুলটা সবচেয়ে বেশি ক্ষতিকর?" পদ্ধতিটি সহজ — বাকি সব ভেরিয়েবল বেস-কেস মানে স্থির রেখে, একটি ভেরিয়েবল একটি পরিসর জুড়ে (যেমন −৩০% থেকে +৩০%) বদলানো হয় এবং প্রতিবার সিদ্ধান্ত-পরিমাপ (এখানে PW) পুনরায় গণনা করা হয়।

এক-সময়ে-এক ভেরিয়েবল
বাকি সব ভেরিয়েবল বেস-কেসে স্থির রেখে শুধু একটি বদলানো হয় — যাতে প্রভাব আলাদাভাবে দেখা যায়।
পরিসর
সাধারণত ±১০%, ±২০%, ±৩০% — অনুমানের অনিশ্চয়তার একটি বাস্তবসম্মত ব্যাপ্তি।
PW সুইং
সমান % পরিবর্তনে PW-এর সর্বোচ্চ ও সর্বনিম্ন মানের পার্থক্য — যত বড়, ভেরিয়েবল তত সংবেদনশীল।

২ · বেস-কেস প্রজেক্ট ও PW

ধরা যাক একটি প্রজেক্টের ইনিশিয়াল কস্ট $\$100{,}000$, বার্ষিক রেভিনিউ $\$30{,}000$, বার্ষিক এক্সপেন্স $\$12{,}000$, লাইফ ৮ বছর, এবং MARR ১০%। আগে (M4)-এ শেখা $P/A$ ফ্যাক্টর দিয়ে —

$PW = -Cost + (Revenue - Expense) \times \dfrac{(1+i)^n - 1}{i(1+i)^n}$

৩ · কোড সেল — এক-এক করে ভেরিয়েবল বদলে সেন্সিটিভিটি সুইপ

নিচের কোড সেলে বেস-কেস PW গণনার পর, রেভিনিউ, এক্সপেন্স ও ইনিশিয়াল কস্ট — প্রতিটিকে আলাদাভাবে −৩০% থেকে +৩০% পর্যন্ত বদলে PW পুনরায় গণনা করা হচ্ছে, এবং প্রতিটি ভেরিয়েবলের PW-সুইং তুলনা করে সবচেয়ে সংবেদনশীল ভেরিয়েবল বের করা হচ্ছে।

Python
def pw_of_annuity_factor(i, n):
    return ((1 + i) ** n - 1) / (i * (1 + i) ** n)

def project_pw(cost, revenue, expense, n, i):
    a = revenue - expense
    pa = pw_of_annuity_factor(i, n)
    return -cost + a * pa

# বেস কেস
COST = 100000
REVENUE = 30000
EXPENSE = 12000
N = 8
I = 0.10

base_pw = project_pw(COST, REVENUE, EXPENSE, N, I)
print(f"বেস কেস PW = ${base_pw:,.2f}")
print()

def sensitivity_sweep(var_name, cost, revenue, expense, n, i):
    print(f"ভেরিয়েবল: {var_name}")
    print(f"{'পরিবর্তন':>10} | {'নতুন মান':>14} | {'PW':>14}")
    print("-" * 46)
    pw_values = []
    for pct in [-0.30, -0.20, -0.10, 0.0, 0.10, 0.20, 0.30]:
        c, r, e = cost, revenue, expense
        if var_name == "cost":
            c = cost * (1 + pct)
            new_val = c
        elif var_name == "revenue":
            r = revenue * (1 + pct)
            new_val = r
        else:
            e = expense * (1 + pct)
            new_val = e
        pw = project_pw(c, r, e, n, i)
        pw_values.append(pw)
        print(f"{pct*100:>+9.0f}% | ${new_val:>12,.2f} | ${pw:>12,.2f}")
    swing = max(pw_values) - min(pw_values)
    print(f"PW সুইং (সর্বোচ্চ - সর্বনিম্ন) = ${swing:,.2f}")
    print()
    return swing

swing_revenue = sensitivity_sweep("revenue", COST, REVENUE, EXPENSE, N, I)
swing_expense = sensitivity_sweep("expense", COST, REVENUE, EXPENSE, N, I)
swing_cost = sensitivity_sweep("cost", COST, REVENUE, EXPENSE, N, I)

swings = {"রেভিনিউ": swing_revenue, "এক্সপেন্স": swing_expense, "ইনিশিয়াল কস্ট": swing_cost}
for name, s in sorted(swings.items(), key=lambda x: -x[1]):
    print(f"{name:>16}: PW সুইং = ${s:,.2f}")

most_sensitive = max(swings, key=swings.get)
print()
print(f"সবচেয়ে সংবেদনশীল ভেরিয়েবল: {most_sensitive} (সবচেয়ে বড় PW সুইং)")

    
লক্ষ্য করুন তিনটি ভেরিয়েবলের PW-সুইং ভিন্ন — রেভিনিউ ±৩০%-এ প্রায় $\$96{,}000$ সুইং তৈরি করে (কারণ $P/A \approx 5.33$ দিয়ে গুণ হয়ে বড় রেঞ্জ তৈরি হয়), ইনিশিয়াল কস্ট ঠিক $\$60{,}000$ সুইং তৈরি করে (কারণ কস্ট সরাসরি, কোনো গুণক ছাড়াই, PW-তে যোগ হয়), আর এক্সপেন্সের সুইং সবচেয়ে কম, কারণ এর ডলার-পরিসর রেভিনিউর তুলনায় ছোট। তাই প্রজেক্টের সিদ্ধান্ত রেভিনিউ-এস্টিমেটের প্রতি সবচেয়ে সংবেদনশীল — এই এস্টিমেটটিই সবচেয়ে সতর্কভাবে যাচাই করা উচিত।
মূল কথা · Key takeaway

সেন্সিটিভিটি অ্যানালাইসিস কোনো একক "সঠিক উত্তর" দেয় না — বরং দেখায় কোন ইনপুট এস্টিমেটের ভুল সিদ্ধান্তকে সবচেয়ে বেশি ঝুঁকিতে ফেলে। বাস্তবে এই ফলাফল প্রায়ই একটি "টর্নেডো ডায়াগ্রাম"-এ দেখানো হয় — সবচেয়ে বড় সুইং উপরে, সবচেয়ে ছোট নিচে — যাতে ব্যবস্থাপক এক নজরে অগ্রাধিকার বুঝতে পারেন। এটি এক-ভেরিয়েবলের সীমাবদ্ধতা থেকে বের হয়ে একাধিক ভেরিয়েবল একসাথে অনিশ্চিত হলে কী হয় তা জানার প্রয়োজন তৈরি করে — যা মন্টে কার্লো সিমুলেশন (L50)-এর মূল প্রেরণা।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ সেন্সিটিভিটি অ্যানালাইসিস কেন একবারে একটি ভেরিয়েবল বদলায়, সবগুলো একসাথে নয়?

একবারে একটি ভেরিয়েবল বদলালে সেই নির্দিষ্ট ভেরিয়েবলের প্রভাব বিচ্ছিন্নভাবে (isolate করে) দেখা যায় — ফলাফলের পরিবর্তন সম্পূর্ণভাবে ওই একটি ভেরিয়েবলের কারণেই হয়েছে তা নিশ্চিত করা যায়। সবগুলো একসাথে বদলালে কোন ভেরিয়েবল কতটা দায়ী তা আলাদা করা যায় না — এই সীমাবদ্ধতা কাটাতেই মন্টে কার্লো সিমুলেশন (L50) ব্যবহার করা হয়, যেখানে একাধিক ভেরিয়েবল একসাথে র‍্যান্ডম স্যাম্পল করা হয়।

প্র ০২ ইনিশিয়াল কস্টের PW-সুইং ঠিক $\$60{,}000$ কেন — এত পরিষ্কার একটি সংখ্যা কেন এলো?

কারণ $PW = -Cost + \text{ধ্রুবক}$ — কস্ট সরাসরি, কোনো গুণক ছাড়াই বিয়োগ হয়। কস্ট ±৩০%-এ $\$70{,}000$ থেকে $\$130{,}000$ পর্যন্ত বদলায়, অর্থাৎ কস্টের নিজের রেঞ্জ $\$60{,}000$, আর যেহেতু PW-তে কস্টের গুণক ১, তাই PW-সুইংও ঠিক $\$60{,}000$ — কোনো $P/A$ ফ্যাক্টর দিয়ে বিবর্ধিত হয় না।

প্র ০৩ যদি বেস-কেস PW ঋণাত্মক হয়, কিন্তু রেভিনিউ +৩০%-এ PW ধনাত্মক হয়ে যায়, এর ব্যবহারিক অর্থ কী?

এর অর্থ প্রজেক্টের গ্রহণযোগ্যতা রেভিনিউ-এস্টিমেটের সঠিকতার উপর সরাসরি নির্ভরশীল — যদি প্রকৃত রেভিনিউ এস্টিমেটের চেয়ে বেশি হয় তবে প্রজেক্ট লাভজনক হতে পারে, কিন্তু বেস-কেস এস্টিমেট অনুযায়ী তা লাভজনক নয়। এমন পরিস্থিতিতে ব্যবস্থাপক আরও নির্ভরযোগ্য রেভিনিউ পূর্বাভাস (বাজার গবেষণা, প্রি-সেল চুক্তি ইত্যাদি) না পাওয়া পর্যন্ত সিদ্ধান্ত স্থগিত রাখতে পারেন।

অনুশীলন

  1. চিন্তা করুন: একটি প্রজেক্টের এক্সপেন্স এস্টিমেট ঐতিহাসিক তথ্য থেকে খুব নির্ভরযোগ্য, কিন্তু রেভিনিউ এস্টিমেট একটি নতুন, অপরীক্ষিত বাজারের অনুমানের উপর ভিত্তি করে। সেন্সিটিভিটি অ্যানালাইসিসের ফলাফল (রেভিনিউ সবচেয়ে সংবেদনশীল) এই পরিস্থিতিতে কেন দ্বিগুণ গুরুত্বপূর্ণ হয়ে ওঠে?

    কারণ সংবেদনশীলতা (সিদ্ধান্তের উপর প্রভাব) এবং অনিশ্চয়তা (এস্টিমেটের নির্ভরযোগ্যতা) — দুটোই যখন একই ভেরিয়েবলে (রেভিনিউ) একসাথে বেশি হয়, সেটিই আসল ঝুঁকির উৎস। নির্ভরযোগ্য এক্সপেন্স-এস্টিমেট বেশি সংবেদনশীল হলেও তেমন ঝুঁকিপূর্ণ নয়, কারণ ভুল হওয়ার সম্ভাবনা কম — কিন্তু অনিশ্চিত রেভিনিউ-এস্টিমেট সংবেদনশীলও, ভুলও হতে পারে — এই সংমিশ্রণই ব্যবস্থাপকের সবচেয়ে বেশি মনোযোগ দাবি করে।

  2. পরীক্ষা করুন: উপরের কোড সেলে N = 8-কে N = 15-এ বদলে Run চেপে দেখুন — রেভিনিউর PW-সুইং কি বাড়ে না কমে, এবং কেন?

    $N=15$ হলে $P/A$ ফ্যাক্টর বড় হয় (৮ বছরের তুলনায় বেশি বছর ধরে ক্যাশ ফ্লো পাওয়া যায়), তাই রেভিনিউর প্রতি এক ডলার পরিবর্তন এখন PW-তে বড় প্রভাব ফেলে — ফলে রেভিনিউর PW-সুইং বেড়ে যায়। এটি দেখায় প্রজেক্ট লাইফ যত বড়, তার আয়ের এস্টিমেটের প্রতি সিদ্ধান্ত তত বেশি সংবেদনশীল হয়ে ওঠে।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

  • কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ টাইম ভ্যালু অফ মানি, ক্যাশ ফ্লো সিরিজ, ওয়ার্থ-ভিত্তিক তুলনা, রেট অফ রিটার্ন, ডেপ্রিসিয়েশন, ট্যাক্স, ইনফ্লেশন, রিস্ক অ্যানালাইসিস ও ক্যাপিটাল বাজেটিং — সম্পূর্ণ কোর্স।
  • পরের পাঠ: রিস্কের অধীনে ডিসিশন ট্রি L48 সম্ভাব্যতাসহ একাধিক ফলাফল থাকলে কীভাবে "রোলব্যাক" করে সেরা সিদ্ধান্ত বাছাই করা যায়।
  • সব 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 — সব এক জায়গায়।
আগের পাঠ
ব্রেকইভেন অ্যানালাইসিস