SciPy – Distribuzione normale multivariata
In statistica la Distribuzione normale multivariata o distribuzione gaussiana multivariata o vettore gaussiano è una teoria relativa alla distribuzione normale a più dimensioni
Qui sotto alcuni link per approfondire l’argomento:
- Wikipedia: https://it.wikipedia.org/wiki/Distribuzione_normale_multivariata
- Materiale didattico: https://studylibit.com/doc/6577821/la-distribuzione-normale-multivariata.
Installazione
Per la guida all’installazione vi rimando all’indice della guida con tutti i dettagli sia per sistemi Linux che Windows:
https://computer4dummy.altervista.org/programmazione-guide-alla-programmazione/python-data-analisi/scipy-per-python/
Esempi pratici
Per capire meglio come utilizzare Scipy per Python per calcolare la distribuzione normale multivariata facciamo subito qualche esempio pratico.
Matrice di covarianza
Per prima cosa definiamo la matrice di covarianza definendo 1 come varianza nella prima dimensione e la varianza di 3 nella seconda con 0.8 di covarianza tra le due dimensioni.
import numpy as np import matplotlib.pyplot as plt cov = np.array([[1, 0.8], [0.8, 3]]) from scipy.stats import multivariate_normal as mvn mu = np.array([0,2]) r = mvn.rvs(mean=mu, cov=cov, size=1000) plt.scatter(r[:,0], r[:,1]) plt.axis('equal') plt.show()
Il risultato è questo:
Stesso risultato lo possiamo ottenere utilizzando la funzione random.multivariate_normal come nell’esempio sotto, alla fine il risultato è lo stesso.
import numpy as np import matplotlib.pyplot as plt cov = np.array([[1, 0.8], [0.8, 3]]) mu = np.array([0,2]) r= np.random.multivariate_normal(mean=mu, cov=cov, size=1000) plt.scatter(r[:,0], r[:,1]) plt.axis('equal') plt.show()