Kom igångKom igång gratis

Varför behöver vi simuleringar?

I den senaste lektionen genomförde du en multivariat normalfördelning med hjälp av medelvärdet och kovariansmatrisen för dia. Nu ska du besvara intressanta frågor med hjälp av simuleringsresultaten!

Du kanske undrar: varför kör vi simuleringar när vi redan har historiska data? Kan vi inte bara använda datan direkt för att besvara frågorna?

Det är en berättigad fråga. Monte Carlo-simuleringar bygger på modellering med sannolikhetsfördelningar, vilket ger hela sannolikhetsfördelningen att undersöka – ett stort antal urval – i stället för det begränsade antal datapunkter som finns i de historiska data.

Du kan till exempel ställa frågor som: vad är den 0,1:a kvantilen för variabeln age hos diabetespatienterna i vår simulering? Den frågan går inte att besvara med de historiska data i dia direkt: eftersom datamängden bara innehåller 442 poster kan vi inte beräkna vilket värde som hamnar på tusende plats. I stället kan du utnyttja resultaten från en Monte Carlo-simulering – vilket du gör nu!

Diabetesdatamängden har laddats in som en DataFrame, dia, och följande bibliotek har importerats åt dig: pandas som pd, numpy som np och scipy.stats som st.

Den här övningen är en del av kursen

Monte Carlo-simuleringar i Python

Visa kurs

Övningsinstruktioner

  • Beräkna den 0,1:a kvantilen (den nedre tusendelen) för variabeln tc i simuleringsresultaten.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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()

simulation_results = st.multivariate_normal.rvs(mean=mean_dia, size=10000, cov=cov_dia)

df_results = pd.DataFrame(simulation_results, columns=["age", "bmi", "bp", "tc", "ldl", "hdl", "tch", "ltg", "glu"])

# Calculate the 0.1st quantile of the tc variable
print(____)
Redigera och kör kod