2017-07-12 4 views
1

Ich möchte die multivariate Gaußsche Dichtefunktion für einen Datensatz, den ich auf Python habe, berechnen . Mein Datensatz hat 21 Variablen und 75 Datenpunkte.Bei der Verwendung von scipy.stats.multivariate_normal.pdf mit dem Fehler: Operanden konnten nicht zusammen mit shapes ausgestrahlt werden (1,8) (21,)

Ich habe die Kovarianzmatrix (cov) für diese berechnet, die ein 21 * 21 Array ist, und das mittlere Array, m, das die Form (21,) hat. Die andere Eingabe, die ich verwenden muss, ist die "Quantiles (array-like), wobei die letzte Achse von x die Komponenten bezeichnet".

Ich verstehe nicht wirklich, worauf sich die Quantile bezieht.

Ich schrieb meine Quantile-Eingabe für die Funktion als Quantiles = np.array ([0.0, 0.01, 0.05, 0.1, 1-0.10, 1-0.05, 1-0.01, 1.0]), aber ich bekomme immer einen Fehler wenn ich habe dann berechnen scipy.stats.multivariate_normal.pdf (Quantile, m, cov)

Der Fehler ist: Valueerror: Operanden konnten nicht mit Formen ausgestrahlt zusammen (1,8) (21,)

könnte jemand Hilfe??

Antwort

1

Ich denke, das Dokument fragt nach einer x, die in ihrer letzten Achse die tatsächlichen Zufallsvektoren enthält, auf eine ziemlich unverständliche Art und Weise. Der folgende Code funktioniert:

import numpy as np 
from scipy.stats import multivariate_normal 


mean = np.array([0.5, 0.1, 0.3]) 
cov = np.array([[0.1, 0.0, 0.0], [0.0, 1.5, 0.0], [0.0, 0.0, 0.9]]) 
x = np.random.uniform(size=(100, 3)) 
y = multivariate_normal.pdf(x, mean=mean, cov=cov) 
print(y) 

So Ihre Datenmatrix x solchen Aufbau, dass in der ersten Dimension (jede Zeile) es Ihre Datenvektoren enthält. Die zweite Dimension (Spalten) wird Ihre 21 separaten Variablen bilden. Im Grunde genommen müssen Sie Ihre Daten in eine (75,21) große Matrix einfügen. Beachten Sie, dass die Einträge der mittleren Vektor- und Kovarianzmatrix den korrekten Variablen entsprechen.

Verwandte Themen