Phân tích độ nhạy

Mô phỏng Monte Carlo với Python

Izzy Weber

Curriculum Manager, DataCamp

Phân tích độ nhạy

  • Giúp hiểu tác động của dải đầu vào

  • Minh họa mẫu hoặc xu hướng khi tóm tắt bằng bảng hay biểu đồ

 

 

Nếu tăng hoặc giảm giá trị bmihdl bằng mô phỏng Monte Carlo, giá trị y dự đoán (diễn tiến bệnh) sẽ thay đổi thế nào?

Mô phỏng Monte Carlo với Python

Xác định tham số

cov_dia = dia[["age", "bmi", "bp", "tc", "ldl", "hdl", "tch", "ltg", "glu"]].cov()
mean_dia = dia[["age", "bmi", "bp", "tc", "ldl", "hdl", "tch", "ltg", "glu"]].mean()
Mô phỏng Monte Carlo với Python

Định nghĩa hàm mô phỏng

def simulate_bmi_hdl(cov_dia, mean_list):

list_ys = [] for i in range(50): simulation_results = st.multivariate_normal.rvs(mean=mean_list, size=500, cov=cov_dia) df_results = pd.DataFrame(simulation_results, columns=["age","bmi","bp","tc","ldl","hdl","tch","ltg","glu"]) predicted_y = regr_model.predict(df_results) df_y = pd.DataFrame(predicted_y, columns=["predicted_y"]) df_summary = pd.concat([df_results, df_y], axis=1) y = np.mean(df_summary["predicted_y"]) list_ys.append(y)
return(np.mean(list_ys))
Mô phỏng Monte Carlo với Python

Mô phỏng với dải tham số đầu vào

hdl = []
bmi = []
simu_y = []
for mean_hdl_inc in np.arange(-20, 50, 30): 
    for mean_bmi_inc in np.arange(-7, 11, 3):

mean_list = mean_dia + np.array([0, mean_bmi_inc, 0, 0, 0, mean_hdl_inc, 0, 0, 0]) hdl.append(mean_hdl_inc) bmi.append(mean_bmi_inc)
mean_y = simulate_bmi_hdl(cov_dia, mean_list)
simu_y.append(mean_y)
df_sa = pd.concat([pd.Series(hdl), pd.Series(bmi), pd.Series(simu_y)], axis=1)
df_sa.columns = ["hdl_inc", "bmi_inc", "y"]
Mô phỏng Monte Carlo với Python

DataFrame đã tạo kiểu cho kết quả phân tích độ nhạy

df_sa.sort_values(by=['hdl_inc', 'bmi_inc']).pivot(index='hdl_inc',
                                             columns='bmi_inc',
                                             values='y').style.background_gradient(
                                             cmap=sns.light_palette("red", as_cmap=True))

df_sa sau khi sắp xếp, pivot và làm nổi kiểu

Mô phỏng Monte Carlo với Python

Biểu đồ hexbin cho kết quả phân tích độ nhạy

df_sa.plot.hexbin(x='hdl_inc',y='bmi_inc', C='y',
                    reduce_C_function=np.mean,
                    gridsize=10, cmap="viridis",
                    sharex=False) 

Biểu đồ hexbin của df_sa

Mô phỏng Monte Carlo với Python

Biểu đồ hexbin cho không gian tham số dày đặc

Mô phỏng Monte Carlo với Python

Luyện tập nào!

Mô phỏng Monte Carlo với Python

Preparing Video For Download...