تجزیه و تحلیل حساسیت برای تعیین تأثیر مجموعه ای از عوامل مستقل بر یک متغیر وابسته تحت شرایط خاص استفاده می شود.
این یک رویکرد قوی برای تعیین اینکه چگونه خروجی مدل توسط ورودی های مدل به طور کلی تحت تاثیر قرار می گیرد. در این پست، یک نمای کلی سریع از تجزیه و تحلیل حساسیت با استفاده از SALib، یک بسته رایگان تجزیه و تحلیل حساسیت پایتون ارائه خواهم کرد.
یک مقدار عددی که به عنوان شاخص حساسیت شناخته می شود، اغلب حساسیت هر ورودی را نشان می دهد. انواع مختلفی از شاخص های حساسیت وجود دارد:
- شاخص های مرتبه اول: سهم یک ورودی مدل را در واریانس خروجی محاسبه می کند.
- شاخص های مرتبه دوم: سهم دو ورودی مدل را در واریانس خروجی محاسبه می کند.
- شاخص مرتبه کل: سهم ورودی مدل را در واریانس خروجی تعیین می کند، که هم اثرات مرتبه اول (نوسان ورودی به تنهایی) و هم هر تعامل مرتبه بالاتر را در بر می گیرد.
SALib چیست؟
صلیب مبتنی بر پایتون است منبع باز جعبه ابزار برای انجام ارزیابی های حساسیت این یک گردش کار جدا دارد، به این معنی که به طور مستقیم با مدل ریاضی یا محاسباتی تعامل ندارد. در عوض، SALib مسئول تولید ورودیهای مدل (از طریق یکی از توابع نمونه) و محاسبه شاخصهای حساسیت (از طریق یکی از توابع تحلیل) از خروجیهای مدل است.
تجزیه و تحلیل حساسیت SALib معمولی شامل چهار مرحله است:
- ورودی های مدل (پارامترها) و محدوده نمونه برای هر کدام را تعیین کنید.
- برای ایجاد ورودی های مدل، تابع نمونه را اجرا کنید.
- مدل را با استفاده از ورودی های تولید شده ارزیابی کنید و نتایج مدل را ذخیره کنید.
- برای محاسبه شاخص های حساسیت، از تابع تجزیه و تحلیل در خروجی ها استفاده کنید.
Sobol، Morris و FAST تنها تعدادی از روش های تجزیه و تحلیل حساسیت ارائه شده توسط SALib هستند. همانطور که بعداً خواهیم دید، عوامل بسیاری بر این تأثیر میگذارند که کدام رویکرد برای یک برنامه خاص بهترین است. در حال حاضر، به خاطر داشته باشید که صرف نظر از هر تکنیکی که استفاده می کنید، فقط باید از دو تابع، نمونه برداری و تجزیه و تحلیل استفاده کنید. ما شما را از طریق یک مثال اساسی راهنمایی می کنیم تا نحوه استفاده از SALib را نشان دهیم.
مثال SALib – تجزیه و تحلیل حساسیت Sobol
در این مثال، مانند شکل زیر، حساسیت Sobol تابع Ishigami را بررسی می کنیم. به دلیل غیر خطی بودن و غیر یکنواختی بالای آن، تابع ایشیگامی به طور گسترده ای برای ارزیابی روش های تحلیل عدم قطعیت و حساسیت استفاده می شود.
مراحل به شرح زیر است:
1. واردات SALib
اولین قدم اضافه کردن کتابخانه های مورد نیاز است. توابع نمونه و تجزیه و تحلیل SALib در ماژول های پایتون مجزا نگه داشته می شوند. برای مثال وارد کردن نمونه ماهواره و توابع تحلیل سوبول در زیر نشان داده شده است.
ما همچنین از تابع Ishigami استفاده می کنیم که به عنوان یک تابع آزمایشی در SALib موجود است. در نهایت، NumPy را وارد می کنیم زیرا SALib از آن برای ذخیره ورودی ها و خروجی های مدل در یک ماتریس استفاده می کند.
2. ورودی مدل
سپس ورودی های مدل باید تعریف شوند. تابع Ishigami سه ورودی x1، x2 و x3 را می پذیرد. در SALib، ما یک دستور می سازیم که تعداد ورودی ها، نام آنها و محدودیت های هر ورودی را مشخص می کند، همانطور که در زیر مشاهده می شود.
3. نمونه ها و مدل را تولید کنید
سپس نمونه ها تولید می شوند. از آنجایی که ما در حال انجام تجزیه و تحلیل حساسیت Sobol هستیم، باید نمونههایی را با استفاده از نمونهگر Saltelli ایجاد کنیم. در این مورد، مقادیر پارامتر یک ماتریس NumPy هستند. با اجرای param values.shape می توانیم مشاهده کنیم که ماتریس 8000 در 3 است. 8000 نمونه با سمپلر Saltelli ایجاد شد. نمونهگر Saltelli نمونههایی را ایجاد میکند که N برابر 1024 (پارامتری که ارائه کردیم) و D برابر با 3 است (تعداد ورودیهای مدل).
همانطور که قبلاً گفته شد، SALib درگیر ارزیابی مدل ریاضی یا محاسباتی نیست. اگر مدل در پایتون نوشته شده باشد، معمولاً از طریق هر ورودی نمونه حلقه زده و مدل را ارزیابی میکنید:
اگر مدل در پایتون توسعه نیافته باشد، می توان نمونه ها را در یک فایل متنی ذخیره کرد:
هر خط در param values.txt نشان دهنده یک ورودی مدل است. خروجی مدل باید در فایل دیگری به سبک مشابه ذخیره شود و در هر خط یک خروجی وجود داشته باشد. پس از آن، خروجی ها ممکن است با موارد زیر بارگذاری شوند:
در این مثال، ما از تابع Ishigami از SALib استفاده می کنیم. این توابع آزمون را می توان به صورت زیر ارزیابی کرد:
4. انجام تجزیه و تحلیل
در نهایت میتوانیم پس از بارگذاری نتایج مدل در پایتون، شاخصهای حساسیت را محاسبه کنیم. در این مثال، از sobol.analyze برای محاسبه شاخص های اول، دوم و مرتبه کل استفاده می کنیم.
Si یک فرهنگ لغت پایتون است که کلیدهای «S1»، «S2»، «ST»، «S1 conf»، «S2 conf» و «ST conf» دارد. کلیدهای _conf فواصل اطمینان مرتبط را نگه می دارند که معمولاً روی 95 درصد تنظیم می شوند. برای خروجی، همه شاخص ها، از کلمه کلیدی پارامتر print برای console=True استفاده کنید. از طرف دیگر، همانطور که در زیر نشان داده شده است، ممکن است مقادیر فردی را از Si چاپ کنیم.
میتوانیم ببینیم که x1 و x2 دارای حساسیت درجه اول هستند، اما x3 به نظر نمیرسد که هیچ تاثیر مرتبه اولی داشته باشد.
اگر شاخص های مرتبه کل به طور قابل توجهی بزرگتر از شاخص های مرتبه اول باشند، مطمئناً تعاملات مرتبه بالاتری اتفاق می افتد. ما می توانیم این تعاملات مرتبه بالاتر را با نگاه کردن به شاخص های مرتبه دوم مشاهده کنیم:
می توان مشاهده کرد که x1 و x3 برهمکنش های قابل توجهی دارند. پس از آن، نتیجه ممکن است برای مطالعه بیشتر به یک Pandas DataFrame تبدیل شود.
5. نقشه کشیدن
برای راحتی شما، امکانات اولیه نمودار ارائه شده است. تابع plot() اشیاء محور matplotlib را برای دستکاری بعدی تولید می کند.
نتیجه
SALib یک ابزار تحلیل حساسیت پیچیده است. تکنیک های دیگر در SALib شامل تست حساسیت دامنه فوریه (FAST)، روش موریس و اندازه گیری مستقل از لحظه دلتا می باشد. در حالی که این یک کتابخانه پایتون است، در نظر گرفته شده است که با هر نوع مدلی کار کند.
SALib یک رابط خط فرمان با کاربری آسان برای ایجاد ورودی های مدل و ارزیابی خروجی های مدل ارائه می دهد. وارسی اسناد SALib برای کسب اطلاعات بیشتر.
پاسخ دهید