Aan de slagGa gratis aan de slag

Waarom hebben we simulaties nodig?

In de vorige les heb je een multivariate normale verdeling gesimuleerd met het gemiddelde en de covariantiematrix van dia. Nu ga je vragen van interesse beantwoorden met de gesimuleerde resultaten!

Je vraagt je misschien af: waarom voeren we simulaties uit als we historische data hebben? Kunnen we niet gewoon de data zelf gebruiken om onze vragen te beantwoorden?

Goede vraag. Monte Carlo-simulaties zijn gebaseerd op modelleren met kansverdelingen, die de volledige kansverdeling opleveren om te onderzoeken (een groot aantal steekproeven), in plaats van het beperkte aantal datapunten uit de historische data.

Je kunt bijvoorbeeld vragen stellen als: wat is het 0,1e kwantiel van de variabele age voor de diabetespatiënten in onze simulatie? Die vraag kunnen we niet beantwoorden met de historische data dia zelf: omdat die maar 442 records bevat, kunnen we niet bepalen wat de duizendste waarde is. In plaats daarvan kun je de resultaten van een Monte Carlo-simulatie gebruiken — en dat ga je nu doen!

De diabetesgegevensset is ingeladen als een DataFrame, dia, en de volgende libraries zijn voor je geïmporteerd: pandas als pd, numpy als np en scipy.stats als st.

Deze oefening maakt deel uit van de cursus

Monte Carlo-simulaties in Python

Cursus bekijken

Oefeninstructies

  • Bereken het 0,1e kwantiel (de onderste duizendste) van de variabele tc in de gesimuleerde resultaten.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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(____)
Code bewerken en uitvoeren