Analisis sensitivitas perusahaan
Sekarang Anda akan menelaah apa yang akan terjadi pada laba perusahaan dari latihan sebelumnya pada berbagai nilai mean_inflation dan mean_volume. Ini akan membantu perusahaan merencanakan beberapa skenario tingkat inflasi dan volume penjualan karena tidak ada perusahaan yang dapat yakin terhadap inflasi atau volume penjualan yang akan mereka hadapi di masa depan.
Persentase inflasi rata-rata yang ingin Anda eksplorasi adalah 0, 1, 2, 5, 10, 15, 20, 50, sementara nilai penjualan yang digunakan sebagai nilai volume rata-rata adalah 100, 200, 500, 800, 1000. Sebagai pengingat, berikut adalah definisi fungsi profit_next_year_mc() yang telah dimuat untuk Anda.
def profit_next_year_mc(mean_inflation, mean_volume, n):
profits = []
for i in range(n):
# Generate inputs by sampling from the multivariate normal distribution
rate_sales_volume = st.multivariate_normal.rvs(mean=[mean_inflation,mean_volume], cov=cov_matrix,size=1000)
# Deterministic calculation of company profit
price = 100 * (100 + rate_sales_volume[:,0])/100
volume = rate_sales_volume[:,1]
loan_and_cost = 50 * volume + 45 * (100 + 3 * rate_sales_volume[:,0]) * (volume/100)
profit = (np.mean(price * volume - loan_and_cost))
profits.append(profit)
return profits
Pustaka berikut telah diimpor: pandas sebagai pd, numpy sebagai np, scipy.stats sebagai st, matplotlib.pyplot sebagai plt, dan seaborn sebagai sns.
Latihan ini adalah bagian dari kursus
Simulasi Monte Carlo di Python
Petunjuk latihan
- Selesaikan simulasi Monte Carlo dengan menjalankan
profit_next_year_mc()untuk menghitung laba sebanyak 100 kali, setiap kali melakukan perulangan melalui daftar nilaiinfldan daftar nilaivol. - Gunakan
displotuntuk memvisualisasikan hasil simulasi yang disimpan di kolomProfitpada DataFrame hasilnya.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
x1 = []
x2 = []
y = []
for infl in [0, 1, 2, 5, 10, 15, 20, 50]:
for vol in [100, 200, 500, 800, 1000]:
# Run profit_next_year_mc so that it samples 100 times for each infl and vol combination
avg_prof = np.mean(____)
x1.append(infl)
x2.append(vol)
y.append(avg_prof)
df_sa = pd.concat([pd.Series(x1), pd.Series(x2), pd.Series(y)], axis=1)
df_sa.columns = ["Inflation", "Volume", "Profit"]
# Create a displot of the simulation results for "Profit"
____
plt.show()