ການວິເຄາະຄວາມອ່ອນໄຫວຖືກນໍາໃຊ້ເພື່ອກໍານົດຜົນກະທົບຂອງການລວບລວມປັດໃຈເອກະລາດກ່ຽວກັບຕົວແປທີ່ຂຶ້ນກັບພາຍໃຕ້ເງື່ອນໄຂສະເພາະໃດຫນຶ່ງ.
ມັນເປັນວິທີການທີ່ເຂັ້ມແຂງສໍາລັບການກໍານົດວິທີການຜົນຜະລິດຂອງຕົວແບບໄດ້ຮັບຜົນກະທົບຈາກວັດສະດຸປ້ອນຂອງຕົວແບບໃນເງື່ອນໄຂທົ່ວໄປ. ໃນບົດຂຽນນີ້, ຂ້ອຍຈະໃຫ້ພາບລວມໄວຂອງການວິເຄາະຄວາມອ່ອນໄຫວໂດຍໃຊ້ SALib, ຊຸດການວິເຄາະຄວາມອ່ອນໄຫວຂອງ Python ຟຣີ.
ຄ່າຕົວເລກທີ່ເອີ້ນວ່າດັດຊະນີຄວາມອ່ອນໄຫວ, ເລື້ອຍໆສະແດງເຖິງຄວາມອ່ອນໄຫວຂອງແຕ່ລະວັດສະດຸປ້ອນ. ມີຫຼາຍປະເພດຂອງຕົວຊີ້ວັດຄວາມອ່ອນໄຫວ:
- ດັດຊະນີລໍາດັບທໍາອິດ: ຄິດໄລ່ການປະກອບສ່ວນຂອງວັດສະດຸປ້ອນແບບຈໍາລອງດຽວຕໍ່ກັບຄວາມແຕກຕ່າງຂອງຜົນຜະລິດ.
- ດັດຊະນີລຳດັບທີສອງ: ຄິດໄລ່ການປະກອບສ່ວນຂອງສອງຕົວແບບເຂົ້າກັບຄວາມແຕກຕ່າງຂອງຜົນຜະລິດ.
- ດັດຊະນີການສັ່ງທັງໝົດ: ປະເມີນການປະກອບສ່ວນຂອງຕົວແບບທີ່ປ້ອນເຂົ້າກັບຄວາມຜັນຜວນຂອງຜົນຜະລິດ, ກວມເອົາທັງຜົນກະທົບຂອງລຳດັບທຳອິດ (ການປ້ອນຂໍ້ມູນມີການຜັນຜວນຢ່າງດຽວ) ແລະການໂຕ້ຕອບທີ່ມີຄຳສັ່ງສູງກວ່າ.
SALib ແມ່ນຫຍັງ?
ຊາລີບ ແມ່ນ Python ທີ່ອີງໃສ່ ເປີດເຜີຍແຫຼ່ງ ຊຸດເຄື່ອງມືສຳລັບການປະເມີນຄວາມອ່ອນໄຫວ. ມັນມີຂະບວນການເຮັດວຽກທີ່ແຍກອອກ, ຊຶ່ງຫມາຍຄວາມວ່າມັນບໍ່ໄດ້ໂຕ້ຕອບກັບຕົວແບບທາງຄະນິດສາດຫຼືຄອມພິວເຕີ້ໂດຍກົງ. ແທນທີ່ຈະ, SALib ຮັບຜິດຊອບໃນການຜະລິດວັດສະດຸປ້ອນຂອງຕົວແບບ (ຜ່ານຫນຶ່ງໃນຫນ້າທີ່ຕົວຢ່າງ) ແລະຄິດໄລ່ຕົວຊີ້ວັດຄວາມອ່ອນໄຫວ (ຜ່ານຫນຶ່ງໃນຫນ້າທີ່ວິເຄາະ) ຈາກຜົນໄດ້ຮັບຂອງຕົວແບບ.
ການວິເຄາະຄວາມອ່ອນໄຫວຂອງ SALib ປົກກະຕິປະກອບດ້ວຍສີ່ຂັ້ນຕອນ:
- ກໍານົດການປ້ອນຂໍ້ມູນແບບຈໍາລອງ (ພາລາມິເຕີ) ແລະຊ່ວງຕົວຢ່າງສໍາລັບແຕ່ລະຄົນ.
- ເພື່ອສ້າງຕົວປ້ອນຂໍ້ມູນແບບຈໍາລອງ, ດໍາເນີນການຟັງຊັນຕົວຢ່າງ.
- ປະເມີນຕົວແບບໂດຍໃຊ້ວັດສະດຸປ້ອນທີ່ສ້າງຂຶ້ນ ແລະບັນທຶກຜົນຂອງຕົວແບບ.
- ເພື່ອຄິດໄລ່ຕົວຊີ້ວັດຄວາມອ່ອນໄຫວ, ໃຊ້ຟັງຊັນການວິເຄາະໃນຜົນໄດ້ຮັບ.
Sobol, Morris, ແລະ FAST ເປັນພຽງບາງວິທີການວິເຄາະຄວາມອ່ອນໄຫວທີ່ສະໜອງໃຫ້ໂດຍ SALib. ປັດໃຈຫຼາຍຢ່າງມີອິດທິພົນວ່າວິທີການໃດດີທີ່ສຸດສຳລັບແອັບພລິເຄຊັນທີ່ໃຫ້ມາ, ດັ່ງທີ່ພວກເຮົາຈະເຫັນໃນພາຍຫຼັງ. ໃນເວລານີ້, ຈົ່ງຈື່ໄວ້ວ່າທ່ານພຽງແຕ່ຕ້ອງການໃຊ້ສອງຫນ້າທີ່, ຕົວຢ່າງແລະການວິເຄາະ, ໂດຍບໍ່ຄໍານຶງເຖິງເຕັກນິກໃດກໍ່ຕາມທີ່ທ່ານຈ້າງ. ພວກເຮົາຈະແນະນໍາທ່ານຜ່ານຕົວຢ່າງພື້ນຖານເພື່ອສະແດງໃຫ້ເຫັນວິທີການນໍາໃຊ້ SALib.
ຕົວຢ່າງ SALib – ການວິເຄາະຄວາມອ່ອນໄຫວ Sobol
ໃນຕົວຢ່າງນີ້, ພວກເຮົາຈະກວດເບິ່ງຄວາມອ່ອນໄຫວຂອງ Sobol ຂອງຟັງຊັນ Ishigami, ດັ່ງທີ່ສະແດງຂ້າງລຸ່ມນີ້. ເນື່ອງຈາກວ່າມັນບໍ່ມີເສັ້ນຊື່ສູງແລະ nonmonotonicity, ຟັງຊັນ Ishigami ຖືກນໍາໃຊ້ຢ່າງກວ້າງຂວາງເພື່ອປະເມີນຄວາມບໍ່ແນ່ນອນແລະຄວາມອ່ອນໄຫວວິທີການວິເຄາະ.
ຂັ້ນຕອນດັ່ງຕໍ່ໄປນີ້:
1. ການນໍາເຂົ້າ SALib
ຂັ້ນຕອນທໍາອິດແມ່ນການເພີ່ມຫ້ອງສະຫມຸດທີ່ຕ້ອງການ. ຫນ້າທີ່ຕົວຢ່າງແລະການວິເຄາະຂອງ SALib ແມ່ນຖືກຮັກສາໄວ້ທີ່ແຕກຕ່າງກັນຢູ່ໃນໂມດູນ Python. ການນໍາເຂົ້າຕົວຢ່າງດາວທຽມແລະຫນ້າທີ່ການວິເຄາະ Sobol, ສໍາລັບການຍົກຕົວຢ່າງ, ແມ່ນສະແດງໃຫ້ເຫັນຂ້າງລຸ່ມນີ້.
ພວກເຮົາຍັງໃຊ້ຟັງຊັນ Ishigami, ເຊິ່ງສາມາດໃຊ້ໄດ້ເປັນຟັງຊັນທົດສອບໃນ SALib. ສຸດທ້າຍ, ພວກເຮົານໍາເຂົ້າ NumPy ຍ້ອນວ່າ SALib ໃຊ້ມັນເພື່ອເກັບຮັກສາຕົວແບບເຂົ້າແລະຜົນຜະລິດໃນຕາຕະລາງ.
2. ການປ້ອນຂໍ້ມູນແບບຈໍາລອງ
ຫຼັງຈາກນັ້ນ, ວັດສະດຸປ້ອນແບບຈໍາລອງຕ້ອງໄດ້ຮັບການກໍານົດ. ຟັງຊັນ Ishigami ຍອມຮັບສາມ inputs: x1, x2, ແລະ x3. ໃນ SALib, ພວກເຮົາສ້າງ dict ທີ່ກໍານົດຈໍານວນຂອງ inputs, ຊື່ຂອງເຂົາເຈົ້າ, ແລະຂອບເຂດຈໍາກັດໃນແຕ່ລະ input, ດັ່ງທີ່ເຫັນຂ້າງລຸ່ມນີ້.
3. ສ້າງຕົວຢ່າງ ແລະ ຕົວແບບ
ຫຼັງຈາກນັ້ນ, ຕົວຢ່າງແມ່ນຖືກສ້າງຂຶ້ນ. ພວກເຮົາຈໍາເປັນຕ້ອງສ້າງຕົວຢ່າງການນໍາໃຊ້ຕົວຢ່າງ Saltelli ນັບຕັ້ງແຕ່ພວກເຮົາກໍາລັງເຮັດການວິເຄາະຄວາມອ່ອນໄຫວ Sobol. ໃນກໍລະນີນີ້, ຄ່າພາລາມິກແມ່ນ NumPy matrix. ພວກເຮົາສາມາດສັງເກດເຫັນວ່າ matrix ແມ່ນ 8000 ໂດຍ 3 ໂດຍການແລ່ນ param values.shape. ຕົວຢ່າງ 8000 ຖືກສ້າງຂື້ນດ້ວຍຕົວເກັບຕົວຢ່າງ Saltelli. ຕົວເກັບຕົວຢ່າງ Saltelli ສ້າງຕົວຢ່າງ, ບ່ອນທີ່ N ແມ່ນ 1024 (ພາລາມິເຕີທີ່ພວກເຮົາສະຫນອງໃຫ້) ແລະ D ແມ່ນ 3. (ຈໍານວນຕົວເຂົ້າຂອງຕົວແບບ).
ດັ່ງທີ່ໄດ້ກ່າວກ່ອນຫນ້ານີ້, SALib ບໍ່ໄດ້ມີສ່ວນຮ່ວມໃນການປະເມີນແບບຈໍາລອງທາງຄະນິດສາດຫຼືຄອມພິວເຕີ້. ຖ້າຕົວແບບຖືກຂຽນໄວ້ໃນ Python, ໂດຍທົ່ວໄປແລ້ວເຈົ້າຈະ loop ແຕ່ລະຕົວຢ່າງແລະປະເມີນຕົວແບບ:
ຕົວຢ່າງສາມາດຖືກບັນທຶກໄວ້ໃນໄຟລ໌ຂໍ້ຄວາມຖ້າຕົວແບບບໍ່ໄດ້ພັດທະນາໃນ Python:
ແຕ່ລະແຖວໃນ param values.txt ສະແດງເຖິງການປ້ອນຂໍ້ມູນແບບຈໍາລອງອັນດຽວ. ຜົນຜະລິດຂອງຕົວແບບຄວນຈະຖືກບັນທຶກໄວ້ໃນໄຟລ໌ອື່ນໃນຮູບແບບທີ່ຄ້າຍຄືກັນ, ໂດຍມີຜົນຜະລິດຫນຶ່ງໃນແຕ່ລະເສັ້ນ. ຫຼັງຈາກນັ້ນ, ຜົນຜະລິດອາດຈະຖືກໂຫລດດ້ວຍ:
ໃນຕົວຢ່າງນີ້, ພວກເຮົາກໍາລັງຈະໃຊ້ຟັງຊັນ Ishigami ຈາກ SALib. ຫນ້າທີ່ທົດສອບເຫຼົ່ານີ້ສາມາດຖືກປະເມີນໄດ້ດັ່ງນີ້:
4. ປະຕິບັດການວິເຄາະ
ໃນທີ່ສຸດພວກເຮົາສາມາດຄິດໄລ່ຕົວຊີ້ວັດຄວາມອ່ອນໄຫວຫຼັງຈາກການໂຫຼດຜົນໄດ້ຮັບຂອງຕົວແບບເຂົ້າໄປໃນ Python. ໃນຕົວຢ່າງນີ້, ພວກເຮົາຈະໃຊ້ sobol.analyze ເພື່ອຄິດໄລ່ຕົວຊີ້ວັດທໍາອິດ, ທີສອງ, ແລະຄໍາສັ່ງທັງຫມົດ.
Si ແມ່ນວັດຈະນານຸກົມ Python ທີ່ມີກະແຈ “S1,” “S2,” “ST,” “S1 conf,” “S2 conf,” ແລະ “ST conf.” ປຸ່ມ _conf ຖືຊ່ວງຄວາມໝັ້ນໃຈທີ່ກ່ຽວຂ້ອງກັນ, ເຊິ່ງໂດຍທົ່ວໄປແລ້ວຈະຖືກຕັ້ງເປັນ 95 ເປີເຊັນ. ເພື່ອຜົນຜະລິດ, ຕົວຊີ້ວັດທັງຫມົດ, ໃຊ້ຕົວກໍານົດການພິມຄໍາສໍາຄັນເພື່ອ console=True. ອີກທາງເລືອກ, ດັ່ງທີ່ສະແດງຢູ່ຂ້າງລຸ່ມນີ້, ພວກເຮົາອາດຈະພິມຄ່າສ່ວນບຸກຄົນຈາກ Si.
ພວກເຮົາສາມາດເຫັນໄດ້ວ່າ x1 ແລະ x2 ມີຄວາມອ່ອນໄຫວຕໍ່ຄໍາສັ່ງທໍາອິດ, ແຕ່ x3 ເບິ່ງຄືວ່າບໍ່ມີຜົນກະທົບໃດໆຕໍ່ຄໍາສັ່ງທໍາອິດ.
ຖ້າດັດຊະນີຄໍາສັ່ງທັງຫມົດແມ່ນໃຫຍ່ກວ່າດັດຊະນີຄໍາສັ່ງທໍາອິດຢ່າງຫຼວງຫຼາຍ, ການໂຕ້ຕອບຄໍາສັ່ງທີ່ສູງຂຶ້ນແມ່ນແນ່ນອນທີ່ສຸດ. ພວກເຮົາສາມາດເຫັນການໂຕ້ຕອບຄໍາສັ່ງທີ່ສູງຂຶ້ນເຫຼົ່ານີ້ໂດຍການເບິ່ງຢູ່ໃນດັດຊະນີຄໍາສັ່ງທີສອງ:
ພວກເຮົາສາມາດສັງເກດເຫັນວ່າ x1 ແລະ x3 ມີການໂຕ້ຕອບທີ່ສໍາຄັນ. ຫຼັງຈາກນັ້ນ, ຜົນໄດ້ຮັບອາດຈະຖືກປ່ຽນເປັນ Pandas DataFrame ສໍາລັບການສຶກສາຕື່ມອີກ.
5. ການວາງແຜນ
ເພື່ອຄວາມສະດວກຂອງທ່ານ, ສະຖານທີ່ສ້າງຕາຕະລາງພື້ນຖານແມ່ນສະຫນອງໃຫ້. ຟັງຊັນ plot() ຜະລິດວັດຖຸແກນ matplotlib ສໍາລັບການຫມູນໃຊ້ຕໍ່ມາ.
ສະຫຼຸບ
SALib ເປັນຊຸດເຄື່ອງມືການວິເຄາະຄວາມອ່ອນໄຫວທີ່ຊັບຊ້ອນ. ເຕັກນິກອື່ນໆໃນ SALib ລວມມີ Fourier Amplitude Sensitivity Test (FAST), Morris Method, ແລະ Delta-Moment Independent Measure. ໃນຂະນະທີ່ມັນເປັນຫ້ອງສະຫມຸດ Python, ມັນມີຈຸດປະສົງເພື່ອດໍາເນີນການກັບຕົວແບບຕ່າງໆ.
SALib ສະຫນອງການໂຕ້ຕອບເສັ້ນຄໍາສັ່ງທີ່ໃຊ້ງ່າຍສໍາລັບການສ້າງຮູບແບບການປ້ອນຂໍ້ມູນແລະການປະເມີນຜົນໄດ້ຮັບຂອງຕົວແບບ. ກວດເບິ່ງ ເອກະສານ SALib ເພື່ອຮຽນຮູ້ເພີ່ມເຕີມ.
ອອກຈາກ Reply ເປັນ